Edgewall Software

Ticket #5641: custom_enum.diff

File custom_enum.diff, 2.2 KB (added by Colin Guthrie, 19 months ago)
  • ticket/api.py

    old new  
    168168            } 
    169169            if field['type'] == 'select' or field['type'] == 'radio': 
    170170                field['options'] = config.getlist(name + '.options', sep='|') 
     171                if len(field['options']) == 1 and field['options'][0].startswith('enum:'): 
     172                    enum_name = field['options'][0].split(':')[1] 
     173                    db = self.env.get_db_cnx() 
     174                    cursor = db.cursor() 
     175                    cursor.execute("SELECT name,value FROM enum WHERE type=%s " 
     176                                   "ORDER BY " + db.cast('value', 'int'), 
     177                                   (enum_name,)) 
     178                    field['options'].pop() 
     179                    for name,value in cursor: 
     180                        field['options'].append(name) 
    171181                if '' in field['options']: 
    172182                    field['optional'] = True 
    173183                    field['options'].remove('') 
  • ticket/model.py

    old new  
    318318class AbstractEnum(object): 
    319319    type = None 
    320320    ticket_col = None 
     321    custom = False 
    321322 
    322323    def __init__(self, env, name=None, db=None): 
    323324        if not self.ticket_col: 
     
    400401                       (self.name, self.value, self.type, self._old_name)) 
    401402        if self.name != self._old_name: 
    402403            # Update tickets 
    403             cursor.execute("UPDATE ticket SET %s=%%s WHERE %s=%%s" % 
    404                            (self.ticket_col, self.ticket_col), 
    405                            (self.name, self._old_name)) 
     404            if self.custom: 
     405                cursor.execute("UPDATE ticket_custom SET value=%s " 
     406                               "WHERE name=%s AND value=%s", 
     407                               (self.name, self.ticket_col, self._old_name)) 
     408            else: 
     409                cursor.execute("UPDATE ticket SET %s=%%s WHERE %s=%%s" % 
     410                               (self.ticket_col, self.ticket_col), 
     411                               (self.name, self._old_name)) 
    406412 
    407413        if handle_ta: 
    408414            db.commit()