summaryrefslogtreecommitdiff
path: root/src/mailman/model/listmanager.py
diff options
context:
space:
mode:
authorAurélien Bompard2016-08-24 09:51:38 +0200
committerBarry Warsaw2016-10-26 08:39:07 -0400
commite75d653f700dcf9a0a31550384d6511c47d024c1 (patch)
tree24399f2887435e2d6d905757b78da0921c6dc584 /src/mailman/model/listmanager.py
parent72197b0ca012c55b290230d846c6a65314c6fe05 (diff)
downloadmailman-e75d653f700dcf9a0a31550384d6511c47d024c1.tar.gz
mailman-e75d653f700dcf9a0a31550384d6511c47d024c1.tar.zst
mailman-e75d653f700dcf9a0a31550384d6511c47d024c1.zip
Add a method to find list using properties filters
This allows the filtering to be done at the database level. It also makes list pagination much more efficient, since the slicing is done at the database level too.
Diffstat (limited to 'src/mailman/model/listmanager.py')
-rw-r--r--src/mailman/model/listmanager.py7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/mailman/model/listmanager.py b/src/mailman/model/listmanager.py
index 681903ffc..c02736aab 100644
--- a/src/mailman/model/listmanager.py
+++ b/src/mailman/model/listmanager.py
@@ -29,6 +29,7 @@ from mailman.model.mailinglist import (
IAcceptableAliasSet, ListArchiver, MailingList)
from mailman.model.mime import ContentFilter
from mailman.utilities.datetime import now
+from mailman.utilities.queries import QuerySequence
from zope.event import notify
from zope.interface import implementer
@@ -121,3 +122,9 @@ class ListManager:
for mail_host, list_name in result_set.values(MailingList.mail_host,
MailingList.list_name):
yield list_name, mail_host
+
+ @dbconnection
+ def find(self, store, **kw):
+ query = store.query(MailingList).filter_by(**kw).order_by(
+ MailingList._list_id)
+ return QuerySequence(query)