diff options
| author | bwarsaw | 2001-07-29 18:51:19 +0000 |
|---|---|---|
| committer | bwarsaw | 2001-07-29 18:51:19 +0000 |
| commit | c3786344cdb4c57a190bbf3395cd4fdc60eb8e4a (patch) | |
| tree | d8e844c4f15c7598c246216a3e67896137487445 | |
| parent | cf4f819c583f04d6fab9c8bc012e5c6165b95bd3 (diff) | |
| download | mailman-c3786344cdb4c57a190bbf3395cd4fdc60eb8e4a.tar.gz mailman-c3786344cdb4c57a190bbf3395cd4fdc60eb8e4a.tar.zst mailman-c3786344cdb4c57a190bbf3395cd4fdc60eb8e4a.zip | |
Another step towards conversion to MemberAdaptor API.
GetPreferredLanguage() -> getMemberLanguage()
ApprovedChangeMemberAddress(): When changing the addresses globally,
watch out for a list that has the newaddress already subscribed.
Skip it in that case (but there probably should be some way of
reporting this situation back to the caller).
ProcessConfirmation(): Optional argument userdesc_overrides,
defaulting to None, which allows the caller to override parts of
the subscription record. This is used in the confirm screen to,
e.g. override the real name supplied in the original listinfo
subscription request.
Also, use the UserDesc helper class.
When processing a CHANGE_OF_ADDRESS, return both the oldaddr and
the new addr.
SetPreferredLanguage(), GetPreferredLanguage(): Removed. Use the
MemberAdaptor API methods instead.
| -rw-r--r-- | Mailman/MailList.py | 36 |
1 files changed, 9 insertions, 27 deletions
diff --git a/Mailman/MailList.py b/Mailman/MailList.py index 71ee39e58..07c1a1a08 100644 --- a/Mailman/MailList.py +++ b/Mailman/MailList.py @@ -42,6 +42,7 @@ from Mailman import mm_cfg from Mailman import Utils from Mailman import Errors from Mailman import LockFile +from Mailman.UserDesc import UserDesc # base classes from Mailman.Archiver import Archiver @@ -807,7 +808,7 @@ class MailList(MailCommandHandler, HTMLFormatter, Deliverer, ListAdmin, 'remote' : '', 'listadmin' : self.GetAdminEmail(), 'confirmurl' : confirmurl, - }, lang=self.GetPreferredLanguage(oldaddr), mlist=self) + }, lang=self.getMemberLanguage(oldaddr), mlist=self) msg = Message.UserNotification( newaddr, self.GetRequestEmail(), _('confirm %(cookie)s'), @@ -830,7 +831,7 @@ class MailList(MailCommandHandler, HTMLFormatter, Deliverer, ListAdmin, mlist = MailList(listname, lock=0) if mlist.host_name <> self.host_name: continue - if not mlist.isMember(oldaddr): + if not mlist.isMember(oldaddr) or mlist.isMember(newaddr): continue mlist.Lock() try: @@ -843,7 +844,7 @@ class MailList(MailCommandHandler, HTMLFormatter, Deliverer, ListAdmin, # # Confirmation processing # - def ProcessConfirmation(self, cookie): + def ProcessConfirmation(self, cookie, userdesc_overrides=None): data = Pending.confirm(cookie) if data is None: raise Errors.MMBadConfirmation, 'data is None' @@ -862,13 +863,9 @@ class MailList(MailCommandHandler, HTMLFormatter, Deliverer, ListAdmin, name = self.real_name raise Errors.MMNeedApproval, _( 'subscriptions to %(name)s require administrator approval') - class UserDesc: pass - userdesc = UserDesc() - userdesc.address = addr - userdesc.fullname = fullname - userdesc.password = password - userdesc.digest = digest - userdesc.lang = lang + userdesc = UserDesc(addr, fullname, password, digest, lang) + if userdesc_overrides is not None: + userdesc += userdesc_overrides self.ApprovedAddMember(userdesc) return op, addr, password, digest, lang elif op == Pending.UNSUBSCRIPTION: @@ -879,11 +876,11 @@ class MailList(MailCommandHandler, HTMLFormatter, Deliverer, ListAdmin, elif op == Pending.CHANGE_OF_ADDRESS: oldaddr, newaddr, globally = data self.ApprovedChangeMemberAddress(oldaddr, newaddr, globally) - return op, newaddr + return op, oldaddr, newaddr def ConfirmUnsubscription(self, addr, lang=None, remote=None): if lang is None: - lang = self.GetPreferredLanguage(addr) + lang = self.getMemberLanguage(addr) cookie = Pending.new(Pending.UNSUBSCRIPTION, addr) confirmurl = '%s/%s' % (self.GetScriptURL('confirm', absolute=1), cookie) @@ -1024,21 +1021,6 @@ bad regexp in bounce_matching_header line: %s # # Multilingual (i18n) support # - def SetPreferredLanguage(self, name, lang): - assert lang in self.GetAvailableLanguages() - lcname = name.lower() - if lang <> self.preferred_language: - self.language[lcname] = lang - else: - if self.language.has_key(lcname): - del self.language[lcname] - - def GetPreferredLanguage(self, name=None): - if name is None: - return self.preferred_language - lcname = name.lower() - return self.language.get(lcname, self.preferred_language) - def GetAvailableLanguages(self): dirs = Utils.GetDirectories(self._full_path) # If we don't add this, and the site admin has never added any |
