diff options
| author | Barry Warsaw | 2007-11-06 18:16:22 -0500 |
|---|---|---|
| committer | Barry Warsaw | 2007-11-06 18:16:22 -0500 |
| commit | d6377c92857c513faf484ef9a91a6b00da789d4b (patch) | |
| tree | c00600e52ec7ad327c947bc9a756e2694478a4d6 /Mailman/database/model/address.py | |
| parent | 46f480dfaa6286ff8950af817de1c35910b37e16 (diff) | |
| download | mailman-d6377c92857c513faf484ef9a91a6b00da789d4b.tar.gz mailman-d6377c92857c513faf484ef9a91a6b00da789d4b.tar.zst mailman-d6377c92857c513faf484ef9a91a6b00da789d4b.zip | |
Fix two doctests: ack-headers and acknowledgment.
This hacks around an apparent bug in the email package where if you parse a
unicode message string, you still end up getting 8-bit strings out of the
headers, and probably payloads.
The hack is to override Mailman.Message.Message.__getitem__() to force the
header value returned to a Unicode. It must be ASCII but this is required
anyway by RFC 2822. It's not perfect, but it lets us get farther without
forcing a detour into fixing the email package.
Other changes:
- Fix the Address table's references, and also update the subscribe() query.
- Fix the Member table's references and add a __init__().
- Fix Roster's get_member() query.
- Fix the Enum class's variable_class attribute.
- UserManager.create_user() has to use Unicodes for real_name.
Diffstat (limited to 'Mailman/database/model/address.py')
| -rw-r--r-- | Mailman/database/model/address.py | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/Mailman/database/model/address.py b/Mailman/database/model/address.py index 022bbce36..b8e2f0f31 100644 --- a/Mailman/database/model/address.py +++ b/Mailman/database/model/address.py @@ -20,6 +20,7 @@ from storm.locals import * from zope.interface import implements from Mailman import Errors +from Mailman.configuration import config from Mailman.database import Model from Mailman.interfaces import IAddress @@ -36,9 +37,9 @@ class Address(Model): registered_on = DateTime() user_id = Int() - user = Reference(user_id, 'User') + user = Reference(user_id, 'User.id') preferences_id = Int() - preferences = Reference(preferences_id, 'Preferences') + preferences = Reference(preferences_id, 'Preferences.id') def __init__(self, address, real_name): super(Address, self).__init__() @@ -65,9 +66,11 @@ class Address(Model): from Mailman.database.model import Member from Mailman.database.model import Preferences # This member has no preferences by default. - member = Member.get_by(role=role, - mailing_list=mailing_list.fqdn_listname, - address=self) + member = config.db.store.find( + Member, + Member.role == role, + Member.mailing_list == mailing_list.fqdn_listname, + Member.address == self).one() if member: raise Errors.AlreadySubscribedError( mailing_list.fqdn_listname, self.address, role) @@ -75,6 +78,7 @@ class Address(Model): mailing_list=mailing_list.fqdn_listname, address=self) member.preferences = Preferences() + config.db.store.add(member) return member @property |
