Ejemplo n.º 1
0
    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