def find_by_schedules(sids): cur = models.db().execute(""" SELECT User.name AS user_name, Entry.user_id, Entry.schedule_id, Entry.comment, Entry.is_entry FROM Entry, User WHERE User.id = Entry.user_id AND Entry.schedule_id IN %s ORDER BY Entry.schedule_id, Entry.when_ DESC""" % clauses(sids), sids) es = cur.fetchall() es_by_sch = groupby(es, lambda e: e['schedule_id']) cur.execute(""" SELECT GuestEntry.id AS guest_id, GuestEntry.name, GuestEntry.schedule_id, GuestEntry.inviter_id, User.name AS inviter_name, GuestEntry.comment FROM GuestEntry, User WHERE User.id = GuestEntry.inviter_id AND GuestEntry.schedule_id IN %s ORDER BY GuestEntry.schedule_id, GuestEntry.when_ DESC""" % clauses(sids), sids) gs = cur.fetchall() gs_by_sch = groupby(gs, lambda g: g['schedule_id']) return es_by_sch, gs_by_sch
def test_clauses(): assert models.clauses([1,2,3]) == '(?,?,?)' assert models.clauses([]) == '()' assert models.clauses([1]) == '(?)'