def get_tickets_for_structured_milestone(env, db, milestone, field='component', types=None): field = ['milestone'] + (field and (isinstance(field, basestring) and [ field, ] or field) or []) mils = [] sub_mils = [ milestone, ] while sub_mils: mils.extend(sub_mils) cursor = db.cursor() cursor.execute( "SELECT m.name" " FROM milestone m," " ticket t" " WHERE m.name=t.summary" " AND t.type=%%s" " AND t.milestone IN (%s)" % ("%s," * len(sub_mils))[:-1], tuple([milestone_ticket_type] + sub_mils)) sub_mils = [ sub_milestone for sub_milestone, in cursor if sub_milestone not in mils ] return get_tickets_for_milestones(db, mils, get_fields_by_names(env, field), types)
def _ids_to_tickets(self, ids): if ids: all_types = [type.name for type in Type.select(self.env)] fields = get_fields_by_names(self.env, ['summary', 'complexity', 'owner']) tickets = [] for tkt_info in get_tickets_by_ids(self.env.get_db_cnx(), fields, ids): tkt_info['idx'] ='%02d' % all_types.index(tkt_info['type']) tickets.append(tkt_info) tickets.sort(key= lambda x: '%s %s' % (x['idx'], x['id'])) return tickets return []
def _ids_to_tickets(self, ids): if ids: all_types = [type.name for type in Type.select(self.env)] fields = get_fields_by_names(self.env, ['summary', 'complexity', 'owner']) tickets = [] for tkt_info in get_tickets_by_ids(self.env.get_db_cnx(), fields, ids): tkt_info['idx'] = '%02d' % all_types.index(tkt_info['type']) tickets.append(tkt_info) tickets.sort(key=lambda x: '%s %s' % (x['idx'], x['id'])) return tickets return []
def get_tickets_for_structured_milestone(env, db, milestone, field='component', types=None): field = ['milestone'] + ( field and (isinstance(field, basestring) and [field,] or field) or []) mils = [] sub_mils = [milestone,] while sub_mils: mils.extend(sub_mils) cursor = db.cursor() cursor.execute("SELECT m.name" " FROM milestone m," " ticket t" " WHERE m.name=t.summary" " AND t.type=%%s" " AND t.milestone IN (%s)" % ("%s,"*len(sub_mils))[:-1], tuple([milestone_ticket_type]+sub_mils)) sub_mils = [sub_milestone for sub_milestone, in cursor if sub_milestone not in mils] return get_tickets_for_milestones(db, mils, get_fields_by_names(env, field), types)