diff options
author | Wolfgang Müller | 2021-04-22 18:54:05 +0200 |
---|---|---|
committer | Wolfgang Müller | 2021-04-28 20:15:33 +0200 |
commit | 83b091486668aac9fdf80eff1bd15ce0ac4273c4 (patch) | |
tree | 2e27b1dbe693c2e88f1686b61406c4e1e5dd5bd7 /quarg/database/filters.py | |
download | quarg-83b091486668aac9fdf80eff1bd15ce0ac4273c4.tar.gz |
Initial prototype
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]) |