diff options
Diffstat (limited to 'quarg/database/filters.py')
-rw-r--r-- | quarg/database/filters.py | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/quarg/database/filters.py b/quarg/database/filters.py new file mode 100644 index 0000000..ee2b3fb --- /dev/null +++ b/quarg/database/filters.py @@ -0,0 +1,48 @@ +from sqlalchemy.sql.expression import or_, between +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_from(start): + return Backlog.time >= start + +def time_to(end): + return Backlog.time <= end + +def joined(boolean): + return Buffer.joined == boolean + +def any_filter(fun, items): + return or_(*[fun(item) for item in items]) |