diff options
| author | Barry Warsaw | 2014-09-22 14:47:02 -0400 |
|---|---|---|
| committer | Barry Warsaw | 2014-09-22 14:47:02 -0400 |
| commit | 6b3114c4f0d458db25aa68dc44deeaca5b642ac4 (patch) | |
| tree | 5ba5344e3186dbc3b0f31da6bf9f23bccb7ace4c /src/mailman/model/pending.py | |
| parent | f582dbfd193f15aa840228fa4b1c2544ae379a8e (diff) | |
| download | mailman-6b3114c4f0d458db25aa68dc44deeaca5b642ac4.tar.gz mailman-6b3114c4f0d458db25aa68dc44deeaca5b642ac4.tar.zst mailman-6b3114c4f0d458db25aa68dc44deeaca5b642ac4.zip | |
Diffstat (limited to 'src/mailman/model/pending.py')
| -rw-r--r-- | src/mailman/model/pending.py | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/mailman/model/pending.py b/src/mailman/model/pending.py index 97d394721..a06a660b2 100644 --- a/src/mailman/model/pending.py +++ b/src/mailman/model/pending.py @@ -32,7 +32,7 @@ import hashlib from lazr.config import as_timedelta from sqlalchemy import ( - Column, Integer, Unicode, ForeignKey, DateTime, LargeBinary) + Column, DateTime, ForeignKey, Integer, LargeBinary, Unicode) from sqlalchemy.orm import relationship from zope.interface import implementer from zope.interface.verify import verifyObject @@ -71,6 +71,7 @@ class Pended(Model): __tablename__ = 'pended' def __init__(self, token, expiration_date): + super(Pended, self).__init__() self.token = token self.expiration_date = expiration_date @@ -79,6 +80,7 @@ class Pended(Model): expiration_date = Column(DateTime) key_values = relationship('PendedKeyValue') + @implementer(IPendable) class UnpendedPendable(dict): @@ -119,9 +121,9 @@ class Pendings: expiration_date=now() + lifetime) for key, value in pendable.items(): if isinstance(key, str): - key = unicode(key, 'utf-8') + key = key.encode('utf-8') if isinstance(value, str): - value = unicode(value, 'utf-8') + value = value.encode('utf-8') elif type(value) is int: value = '__builtin__.int\1%s' % value elif type(value) is float: @@ -150,8 +152,9 @@ class Pendings: pendable = UnpendedPendable() # Find all PendedKeyValue entries that are associated with the pending # object's ID. Watch out for type conversions. - for keyvalue in store.query(PendedKeyValue).filter( - PendedKeyValue.pended_id == pending.id): + entries = store.query(PendedKeyValue).filter( + PendedKeyValue.pended_id == pending.id) + for keyvalue in entries: if keyvalue.value is not None and '\1' in keyvalue.value: type_name, value = keyvalue.value.split('\1', 1) pendable[keyvalue.key] = call_name(type_name, value) @@ -171,7 +174,7 @@ class Pendings: # Find all PendedKeyValue entries that are associated with the # pending object's ID. q = store.query(PendedKeyValue).filter( - PendedKeyValue.pended_id == pending.id) + PendedKeyValue.pended_id == pending.id) for keyvalue in q: store.delete(keyvalue) store.delete(pending) |
