diff options
| author | Aurélien Bompard | 2015-12-02 10:00:53 +0100 |
|---|---|---|
| committer | Barry Warsaw | 2015-12-16 11:04:25 -0500 |
| commit | ed9efb350c7629be2b8f1fe509c74e5dca6935f0 (patch) | |
| tree | 58c091d1485c219ee5bfbfa0ac6d2bd8134e5829 /src/mailman/model/pending.py | |
| parent | 6e99812bc83fb96177fa14d8ee9ecd09d34c339e (diff) | |
| download | mailman-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.py | 22 |
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) |
