Ticket #4549: trac-ulr1-061208.diff
| File trac-ulr1-061208.diff, 8.9 kB (added by trebor74hr@…, 20 months ago) |
|---|
-
trac/ticket/api.py
83 83 return [action for action in actions.get(ticket['status'], ['leave']) 84 84 if action not in perms or perm_.has_permission(perms[action])] 85 85 86 def _eval_field_value(self, value): 87 value=value.strip() 88 if value.startswith('$(') and value.endswith(')'): 89 temp=value[2:-1] 90 if temp=='today': 91 import datetime 92 value = str(datetime.date.today()) 93 return value 94 95 # ulr1 061127 TODO: nastaviti ... 96 def _get_field_dflt_props(self, fields, name, type, label=None): 97 field = { 'name': name, 98 'type': type, 99 'label': self.config.get('ticket', 'label_' + name, label or name.title()), 100 'order': self.config.getint('ticket', 'order_' + name, 2000+len(fields)*10), 101 } 102 #print field 103 value = self.config.get('ticket', 'default_' + name) 104 if value: 105 field['value']=self._eval_field_value(value) 106 return field 107 86 108 def get_ticket_fields(self): 87 109 """Returns the list of fields available for tickets.""" 88 110 from trac.ticket import model 89 111 90 112 db = self.env.get_db_cnx() 91 113 fields = [] 92 114 # TODO: ulr1 061127 default values for new field - make function 93 115 # Basic text fields 94 116 for name in ('summary', 'reporter'): 95 field = {'name': name, 'type': 'text', 'label': name.title()} 117 # ulr1 061128 118 #field = {'name': name, 'type': 'text', 'label': name.title()} 119 field = self._get_field_dflt_props(fields, name, 'text') 96 120 fields.append(field) 97 121 98 122 # Owner field, can be text or drop-down depending on configuration 99 field = {'name': 'owner', 'label': 'Owner'} 123 # ulr1 061128 124 field = self._get_field_dflt_props(fields, 'owner', 'text', 'Assign to') 125 #field = {'name': 'owner', 'label': 'Owner'} 100 126 if self.restrict_owner: 101 127 field['type'] = 'select' 102 128 users = [] … … 106 132 users.append(username) 107 133 field['options'] = users 108 134 field['optional'] = True 109 else: 110 field['type'] = 'text' 135 #ulr1 061128 not needed any more 136 #else: 137 # field['type'] = 'text' 111 138 fields.append(field) 112 139 113 140 # Description 114 fields.append({'name': 'description', 'type': 'textarea', 115 'label': 'Description'}) 141 # ulr1 061128 142 field = self._get_field_dflt_props(fields, 'description', 'textarea') 143 fields.append(field) 144 #fields.append({'name': 'description', 'type': 'textarea','label': 'Description'}) 116 145 117 146 # Default select and radio fields 118 147 selects = [('type', model.Type), ('status', model.Status), … … 125 154 # Fields without possible values are treated as if they didn't 126 155 # exist 127 156 continue 128 field = {'name': name, 'type': 'select', 'label': name.title(), 129 'value': self.config.get('ticket', 'default_' + name), 130 'options': options} 157 # ulr1 061128 158 #options.append('(undef)') 159 field = self._get_field_dflt_props(fields, name, 'select') 160 field['options']=options 161 #if not field.has_key('value'): 162 # field['value']='(undef)' 163 164 #field = {'name': name, 'type': 'select', 'label': name.title(), 165 # 'value': self.config.get('ticket', 'default_' + name), 'options': options} 131 166 if name in ('status', 'resolution'): 132 167 field['type'] = 'radio' 133 168 field['optional'] = True … … 137 172 138 173 # Advanced text fields 139 174 for name in ('keywords', 'cc', ): 140 field = {'name': name, 'type': 'text', 'label': name.title()} 175 # ulr1 061128 176 field = self._get_field_dflt_props(fields, name, 'text') 177 #field = {'name': name, 'type': 'text', 'label': name.title()} 141 178 fields.append(field) 142 179 143 180 for field in self.get_custom_fields(): … … 152 189 field['custom'] = True 153 190 fields.append(field) 154 191 192 # NOTE: fields sort also done to web_ui.py::process_request (ulr1 061127) 193 # ulr1 061128 194 fields.sort(lambda x, y: cmp(x['order'], y['order'])) 195 196 #test: 197 #for field in fields: 198 # print "1.name=%s, order=%d" % (field['name'], field['order']) 199 155 200 return fields 156 201 202 # ------------------------------------------- 157 203 def get_custom_fields(self): 158 204 fields = [] 159 205 config = self.config['ticket-custom'] … … 162 208 field = { 163 209 'name': name, 164 210 'type': config.get(name), 165 'order': config.getint(name + '.order', 0), 211 # ulr1 061127 default from 0 to 3000... 212 'order': config.getint(name + '.order', 3000+len(fields)*10), 166 213 'label': config.get(name + '.label') or name.capitalize(), 167 214 'value': config.get(name + '.value', '') 168 } 215 } 216 #ulr1 061128 217 field['value']=self._eval_field_value(field['value']) 218 169 219 if field['type'] == 'select' or field['type'] == 'radio': 170 field['options'] = config.getlist(name + '.options', sep='|') 220 #ulr1 061019 SQL: 221 #field['options'] = config.getlist(name + '.options', sep='|') 222 options = self.config.get('ticket-custom', name + '.options').strip() 223 if options.startswith("SQL:"): 224 cursor = self.env.get_db_cnx().cursor() 225 cursor.execute(options[len("SQL:"):]) 226 rows = cursor.fetchall() 227 if rows: 228 field['options'] = [row[0].strip() for row in rows] 229 else: 230 field['options']=[] 231 else: 232 # old: field['options'] = [value.strip() for value in options.split('|')] 233 # ulr1 060731 end 234 field['options'] = config.getlist(name + '.options', sep='|') 171 235 field['optional'] = '' in field['options'] 236 #ulr1 061128 237 # TODO: for text and other ... optional ... 238 #else: 239 # field['optional'] = config.getint(name + '.optional') > 0 240 241 # new 242 if field['type'] == 'select' or field['type'] == 'radio': 243 options = self.config.get('ticket-custom', name + '.options') 244 245 246 172 247 elif field['type'] == 'textarea': 173 248 field['width'] = config.getint(name + '.cols') 174 249 field['height'] = config.getint(name + '.rows') -
trac/ticket/web_ui.py
149 149 ticket.fields.insert(insert_idx, ticket.fields[curr_idx]) 150 150 del ticket.fields[curr_idx] 151 151 152 #ulr1 061128 153 ticket.fields.sort(lambda x, y: cmp(x['order'], y['order'])) 154 152 155 for field in ticket.fields: 156 #ulr1 061128 test 157 #print "2.name=%s, order=%d" % (field['name'], field['order']) 153 158 name = field['name'] 154 159 del field['name'] 155 160 if name in ('summary', 'reporter', 'description', 'type', 'status', 156 161 'resolution'): 157 162 field['skip'] = True 158 163 elif name == 'owner': 159 field['label'] = 'Assign to' 164 #ulr1 061128 165 # already filled in api.py 166 # field['label'] = 'Assign to' 160 167 if not req.perm.has_permission('TICKET_MODIFY'): 161 168 field['skip'] = True 162 169 elif name == 'milestone': … … 556 563 fragment = cnum and '#comment:'+cnum or '' 557 564 req.redirect(req.href.ticket(ticket.id) + fragment) 558 565 566 # TODO: ulr1 061128 some fields shouldn't be changed in 559 567 def _insert_ticket_data(self, req, db, ticket, reporter_id): 560 568 """Insert ticket data into the hdf""" 561 569 replyto = req.args.get('replyto') -
trac/web/auth.py
209 209 def load(self, filename): 210 210 fd = open(filename, 'r') 211 211 for line in fd: 212 #ulr1 060726 213 if line.startswith("#"): 214 continue 212 215 line = line.strip() 213 216 if not line: 214 217 continue
