from sqlalchemy.sql.expression import between, or_ from quarg.database.tables import Backlog, Buffer, Network, QuasselUser, Sender def msg_like(query): return Backlog.message.like(query, escape='\\') def msg_contains(query): return Backlog.message.contains(query, autoescape=True) def buffer(name): return Buffer.buffername == name def nick(nickname): return or_(Sender.sender.like(nickname + "!%"), Sender.sender == nickname) def prefix(pref): return Backlog.senderprefixes.contains(pref) def buftype(btype): return Buffer.buffertype == btype.value def msgflag(flag): return Backlog.flags == flag.value def msgtype(mtype): return Backlog.type == mtype.value def user(name): return QuasselUser.username == name def network(name): return Network.networkname == name def time_around(datetuple): start, end = datetuple return between(Backlog.time, start, end) def time_after(date): return Backlog.time >= date def time_before(date): return Backlog.time <= date def joined(boolean): return Buffer.joined == boolean def any_filter(fun, items): return or_(*[fun(item) for item in items])