summaryrefslogtreecommitdiff
path: root/src/mailman/model/pending.py
diff options
context:
space:
mode:
authorAurélien Bompard2015-12-02 10:00:53 +0100
committerBarry Warsaw2015-12-16 11:04:25 -0500
commited9efb350c7629be2b8f1fe509c74e5dca6935f0 (patch)
tree58c091d1485c219ee5bfbfa0ac6d2bd8134e5829 /src/mailman/model/pending.py
parent6e99812bc83fb96177fa14d8ee9ecd09d34c339e (diff)
downloadmailman-ed9efb350c7629be2b8f1fe509c74e5dca6935f0.tar.gz
mailman-ed9efb350c7629be2b8f1fe509c74e5dca6935f0.tar.zst
mailman-ed9efb350c7629be2b8f1fe509c74e5dca6935f0.zip
Diffstat (limited to 'src/mailman/model/pending.py')
-rw-r--r--src/mailman/model/pending.py22
1 files changed, 20 insertions, 2 deletions
diff --git a/src/mailman/model/pending.py b/src/mailman/model/pending.py
index 0c7ed7590..a98c9dfb8 100644
--- a/src/mailman/model/pending.py
+++ b/src/mailman/model/pending.py
@@ -35,8 +35,8 @@ from mailman.database.transaction import dbconnection
from mailman.interfaces.pending import (
IPendable, IPended, IPendedKeyValue, IPendings)
from mailman.utilities.datetime import now
-from sqlalchemy import Column, DateTime, ForeignKey, Integer, Unicode
-from sqlalchemy.orm import relationship
+from sqlalchemy import and_, Column, DateTime, ForeignKey, Integer, Unicode
+from sqlalchemy.orm import aliased, relationship
from zope.interface import implementer
from zope.interface.verify import verifyObject
@@ -157,6 +157,24 @@ class Pendings:
store.delete(pending)
@dbconnection
+ def find(self, store, mlist=None, type=None):
+ query = store.query(Pended)
+ if mlist is not None:
+ pkv_alias_mlist = aliased(PendedKeyValue)
+ query = query.join(pkv_alias_mlist).filter(and_(
+ pkv_alias_mlist.key == 'list_id',
+ pkv_alias_mlist.value == json.dumps(mlist.list_id)
+ ))
+ if type is not None:
+ pkv_alias_type = aliased(PendedKeyValue)
+ query = query.join(pkv_alias_type).filter(and_(
+ pkv_alias_type.key == 'type',
+ pkv_alias_type.value == json.dumps(type)
+ ))
+ for pending in query:
+ yield pending.token, self.confirm(pending.token, expunge=False)
+
+ @dbconnection
def __iter__(self, store):
for pending in store.query(Pended).all():
yield pending.token, self.confirm(pending.token, expunge=False)