summaryrefslogtreecommitdiff
path: root/Mailman/database
diff options
context:
space:
mode:
authorBarry Warsaw2007-11-08 18:42:56 -0500
committerBarry Warsaw2007-11-08 18:42:56 -0500
commit3d7b9702e4ff97f86025f8d7ae9b29220f5bf264 (patch)
tree5636c6fb0841d901e8b52066fc8cc988c949cb4e /Mailman/database
parentb28433d0eb1d8cf024f7926cabb37a740571800e (diff)
downloadmailman-3d7b9702e4ff97f86025f8d7ae9b29220f5bf264.tar.gz
mailman-3d7b9702e4ff97f86025f8d7ae9b29220f5bf264.tar.zst
mailman-3d7b9702e4ff97f86025f8d7ae9b29220f5bf264.zip
More Unicodification; fixed several more doctests.
Diffstat (limited to 'Mailman/database')
-rw-r--r--Mailman/database/listmanager.py2
-rw-r--r--Mailman/database/model/member.py5
-rw-r--r--Mailman/database/model/pending.py22
-rw-r--r--Mailman/database/model/roster.py16
4 files changed, 31 insertions, 14 deletions
diff --git a/Mailman/database/listmanager.py b/Mailman/database/listmanager.py
index cd1f03fe2..eb1ce6ba2 100644
--- a/Mailman/database/listmanager.py
+++ b/Mailman/database/listmanager.py
@@ -46,7 +46,7 @@ class ListManager(object):
return mlist
def delete(self, mlist):
- mlist.delete()
+ config.db.store.remove(mlist)
def get(self, fqdn_listname):
# Avoid circular imports.
diff --git a/Mailman/database/model/member.py b/Mailman/database/model/member.py
index 0a852f991..3f9775d3c 100644
--- a/Mailman/database/model/member.py
+++ b/Mailman/database/model/member.py
@@ -19,6 +19,7 @@ from storm.locals import *
from zope.interface import implements
from Mailman.Utils import split_listname
+from Mailman.configuration import config
from Mailman.constants import SystemDefaultPreferences
from Mailman.database import Model
from Mailman.database.types import Enum
@@ -90,5 +91,5 @@ class Member(Model):
return 'http://example.com/' + self.address.address
def unsubscribe(self):
- self.preferences.delete()
- self.delete()
+ config.db.store.remove(self.preferences)
+ config.db.store.remove(self)
diff --git a/Mailman/database/model/pending.py b/Mailman/database/model/pending.py
index 058b5de09..970e3c16e 100644
--- a/Mailman/database/model/pending.py
+++ b/Mailman/database/model/pending.py
@@ -38,6 +38,10 @@ class PendedKeyValue(Model):
implements(IPendedKeyValue)
+ def __init__(self, key, value):
+ self.key = key
+ self.value = value
+
id = Int(primary=True)
key = Unicode()
value = Unicode()
@@ -48,10 +52,14 @@ class Pended(Model):
implements(IPended)
+ def __init__(self, token, expiration_date):
+ self.token = token
+ self.expiration_date = expiration_date
+
id = Int(primary=True)
- token = Unicode()
+ token = RawStr()
expiration_date = DateTime()
- key_values = Reference(id, PendedKeyValue.id)
+ key_values = ReferenceSet(id, PendedKeyValue.id)
@@ -83,7 +91,7 @@ class Pendings(object):
token = hashlib.sha1(repr(x)).hexdigest()
# In practice, we'll never get a duplicate, but we'll be anal
# about checking anyway.
- if Pended.query.filter_by(token=token).count() == 0:
+ if config.db.store.find(Pended, token=token).count() == 0:
break
else:
raise AssertionError('Could not find a valid pendings token')
@@ -92,7 +100,13 @@ class Pendings(object):
token=token,
expiration_date=datetime.datetime.now() + lifetime)
for key, value in pendable.items():
- PendedKeyValue(key=key, value=value, pended=pending)
+ if isinstance(key, str):
+ key = unicode(key, 'utf-8')
+ if isinstance(value, str):
+ value = unicode(value, 'utf-8')
+ keyval = PendedKeyValue(key=key, value=value)
+ pending.key_values.add(keyval)
+ config.db.store.add(pending)
return token
def confirm(self, token, expunge=True):
diff --git a/Mailman/database/model/roster.py b/Mailman/database/model/roster.py
index 0c8c3bd87..55723893d 100644
--- a/Mailman/database/model/roster.py
+++ b/Mailman/database/model/roster.py
@@ -133,12 +133,13 @@ class AdministratorRoster(AbstractRoster):
yield member
def get_member(self, address):
- results = Member.query.filter(
- and_(Member.c.mailing_list == self._mlist.fqdn_listname,
- or_(Member.c.role == MemberRole.moderator,
- Member.c.role == MemberRole.owner),
- Address.c.address == address,
- Member.c.address_id == Address.c.id))
+ results = config.db.store.find(
+ Member,
+ Member.mailing_list == self._mlist.fqdn_listname,
+ Or(Member.role == MemberRole.moderator,
+ Member.role == MemberRole.owner),
+ Address.address == address,
+ Member.address_id == Address.id)
if results.count() == 0:
return None
elif results.count() == 1:
@@ -202,6 +203,7 @@ class Subscribers(AbstractRoster):
@property
def members(self):
- for member in Member.query.filter_by(
+ for member in config.db.store.find(
+ Member,
mailing_list=self._mlist.fqdn_listname):
yield member