def get_waitinglist(dbo, priorityfloor = 5, species = -1, size = -1, addresscontains = "", includeremoved = 0, namecontains = "", descriptioncontains = "", siteid = 0): """ Retrieves the waiting list priorityfloor: The lowest urgency to show (1 = urgent, 5 = lowest) species: A species filter or -1 for all size: A size filter or -1 for all addresscontains: A partial address includeremoved: Whether or not to include removed entries namecontains: A partial name descriptioncontains: A partial description """ l = dbo.locale ands = [] values = [] def add(a, v = None): ands.append(a) if v: values.append(v) add("a.Urgency <= ?", priorityfloor) if includeremoved == 0: add("a.DateRemovedFromList Is Null") if species != -1: add("a.SpeciesID = ?", species) if size != -1: add("a.Size = ?", size) if addresscontains != "": ands.append("(%s OR %s)" % (dbo.sql_ilike("OwnerAddress"), dbo.sql_ilike("OwnerTown"))) v = "%%%s%%" % addresscontains.lower() values.append(v) values.append(v) if namecontains != "": add(dbo.sql_ilike("OwnerName"), "%%%s%%" % namecontains.lower()) if descriptioncontains != "": add(dbo.sql_ilike("AnimalDescription"), "%%%s%%" % descriptioncontains.lower()) if siteid != 0: add("(o.SiteID = 0 OR o.SiteID = ?)", siteid) sql = "%s WHERE %s ORDER BY a.Urgency, a.DatePutOnList" % (get_waitinglist_query(dbo), " AND ".join(ands)) rows = dbo.query(sql, values) wlh = asm3.configuration.waiting_list_highlights(dbo).split(" ") ranks = get_waitinglist_ranks(dbo) for r in rows: r.HIGHLIGHT = "" for hi in wlh: if hi != "": if hi.find("|") == -1: wid = hi h = "1" else: wid, h = hi.split("|") if wid == str(r.WLID).strip(): r.HIGHLIGHT = h break if r.WLID in ranks: r.RANK = ranks[r.WLID] else: r.RANK = "" r.TIMEONLIST = date_diff(l, r.DATEPUTONLIST, now(dbo.timezone), asm3.configuration.date_diff_cutoffs(dbo) ) return rows
def get_waitinglist_by_id(dbo, wid): """ Returns a single waitinglist record for the ID given """ l = dbo.locale r = dbo.first_row( dbo.query( get_waitinglist_query(dbo) + " WHERE a.ID = ?", [wid]) ) if not r: return None ranks = get_waitinglist_ranks(dbo) if r.WLID in ranks: r.RANK = ranks[r.WLID] else: r.RANK = "" r.TIMEONLIST = date_diff(l, r.DATEPUTONLIST, now(dbo.timezone)) return r