diff options
Diffstat (limited to 'Mailman/MailList.py')
| -rw-r--r-- | Mailman/MailList.py | 104 |
1 files changed, 0 insertions, 104 deletions
diff --git a/Mailman/MailList.py b/Mailman/MailList.py index d90de18f0..335d82581 100644 --- a/Mailman/MailList.py +++ b/Mailman/MailList.py @@ -47,7 +47,6 @@ from email.Header import Header from email.Utils import getaddresses, formataddr, parseaddr from Mailman import Errors -from Mailman import LockFile from Mailman import Utils from Mailman import Version from Mailman import database @@ -132,36 +131,6 @@ class MailList(object, Archiver, Digester, SecurityManager, Bouncer): return '<mailing list "%s" at %x>' % (self.fqdn_listname, id(self)) - # - # Lock management - # - def _make_lock(self, name, lock=False): - self._lock = LockFile.LockFile( - os.path.join(config.LOCK_DIR, name) + '.lock', - lifetime=config.LIST_LOCK_LIFETIME) - if lock: - self._lock.lock() - - def Lock(self, timeout=0): - self._lock.lock(timeout) - self._memberadaptor.lock() - # Must reload our database for consistency. Watch out for lists that - # don't exist. - try: - self.Load() - except Exception: - self.Unlock() - raise - - def Unlock(self): - self._lock.unlock(unconditionally=True) - self._memberadaptor.unlock() - - def Locked(self): - return self._lock.locked() - - - def GetConfirmJoinSubject(self, listname, cookie): if config.VERP_CONFIRMATIONS and cookie: cset = i18n.get_translation().charset() or \ @@ -258,59 +227,6 @@ class MailList(object, Archiver, Digester, SecurityManager, Bouncer): return value - def Save(self): - # Refresh the lock, just to let other processes know we're still - # interested in it. This will raise a NotLockedError if we don't have - # the lock (which is a serious problem!). TBD: do we need to be more - # defensive? - self._lock.refresh() - # The member adaptor may have its own save operation - self._memberadaptor.save() - self.CheckHTMLArchiveDir() - - def Load(self): - self._memberadaptor.load() - - - - # - # Sanity checks - # - def CheckValues(self): - """Normalize selected values to known formats.""" - if '' in urlparse(self.web_page_url)[:2]: - # Either the "scheme" or the "network location" part of the parsed - # URL is empty; substitute faulty value with (hopefully sane) - # default. Note that DEFAULT_URL is obsolete. - self.web_page_url = ( - config.DEFAULT_URL or - config.DEFAULT_URL_PATTERN % config.DEFAULT_URL_HOST) - if self.web_page_url and self.web_page_url[-1] <> '/': - self.web_page_url = self.web_page_url + '/' - # Legacy reply_to_address could be an illegal value. We now verify - # upon setting and don't check it at the point of use. - try: - if self.reply_to_address.strip() and self.reply_goes_to_list: - Utils.ValidateEmail(self.reply_to_address) - except Errors.EmailAddressError: - elog.error('Bad reply_to_address "%s" cleared for list: %s', - self.reply_to_address, self.internal_name()) - self.reply_to_address = '' - self.reply_goes_to_list = 0 - # Legacy topics may have bad regular expressions in their patterns - goodtopics = [] - for name, pattern, desc, emptyflag in self.topics: - try: - orpattern = OR.join(pattern.splitlines()) - re.compile(orpattern) - except (re.error, TypeError): - elog.error('Bad topic pattern "%s" for list: %s', - orpattern, self.internal_name()) - else: - goodtopics.append((name, pattern, desc, emptyflag)) - self.topics = goodtopics - - # # Membership management front-ends and assertion checks # @@ -479,26 +395,6 @@ class MailList(object, Archiver, Digester, SecurityManager, Bouncer): raise Errors.MMNeedApproval, _( 'unsubscriptions require moderator approval') - def ChangeMemberName(self, addr, name, globally): - self.setMemberName(addr, name) - if not globally: - return - for listname in config.list_manager.names: - # Don't bother with ourselves - if listname == self.internal_name(): - continue - mlist = MailList(listname, lock=0) - if mlist.host_name <> self.host_name: - continue - if not mlist.isMember(addr): - continue - mlist.Lock() - try: - mlist.setMemberName(addr, name) - mlist.Save() - finally: - mlist.Unlock() - def ChangeMemberAddress(self, oldaddr, newaddr, globally): # Changing a member address consists of verifying the new address, # making sure the new address isn't already a member, and optionally |
