def get_new_ticket_descriptor(self, types, tkt_id=None): if tkt_id and tkt_id!='new': ticket = Ticket(self.env, tkt_id) if not ticket.exists: raise TracError(_(" Ticket with id '%(ticket)s does not exit", ticket= tkt_id)) types = [ticket['type']] else: ticket = Ticket(self.env) ticket.id = 'new' common_descriptor = {'ticket' : ticket} if types: for type in types: cfg = self.ticket_type_config.get(type, {}) common_descriptor.setdefault('fields',[]). \ extend(cfg.get('fields',[])) common_descriptor['workflow'] = common_descriptor.get('workflow',False) \ or cfg.get('workflow') or False unique_fields = [] found_names = [] for field in common_descriptor['fields']: if field['name'] not in found_names: found_names.append(field['name']) unique_fields.append(field) common_descriptor['fields'] = unique_fields return common_descriptor