------------------------------------------------------------
revno: 6555
committer: Barry Warsaw <[EMAIL PROTECTED]>
branch nick: 3.0
timestamp: Wed 2007-09-19 22:35:37 -0400
message:
  InitTempVars() is completely eradicated.  The only bit I think we
  still need temporarily is the _gui component initialization, so this
  has been moved into MailList.__init__().
  
  Fixed the __getattr__() super call to properly dispatch up.
  
  Removed the _memberadaptor instance variable initialization.  The
  whole MemberAdaptor stuff is next on the chopping block.
  
  Essentially MailList locking is gone too now, although it's not  yet
  completely eradicated.  However, the __repr__() no longer states the
  lock status.
  
  The full_path property is now just an attribute on the underlying
  MailingList database object.
modified:
  Mailman/MailList.py
  Mailman/database/model/mailinglist.py
  Mailman/docs/hold.txt
  Mailman/docs/membership.txt
  Mailman/docs/requests.txt
  TODO.txt

=== modified file 'Mailman/MailList.py'
--- a/Mailman/MailList.py       2007-09-19 11:28:58 +0000
+++ b/Mailman/MailList.py       2007-09-20 02:35:37 +0000
@@ -97,12 +97,16 @@
 
     def __init__(self, data):
         self._data = data
-        # Only one level of mixin inheritance allowed
+        # Only one level of mixin inheritance allowed.
         for baseclass in self.__class__.__bases__:
             if hasattr(baseclass, '__init__'):
                 baseclass.__init__(self)
-        # Initialize volatile attributes
-        self.InitTempVars()
+        # Initialize the web u/i components.
+        self._gui = []
+        for component in dir(Gui):
+            if component.startswith('_'):
+                continue
+            self._gui.append(getattr(Gui, component)())
         # Give the extension mechanism a chance to process this list.
         try:
             from Mailman.ext import init_mlist
@@ -114,15 +118,11 @@
     def __getattr__(self, name):
         missing = object()
         if name.startswith('_'):
-            return super(MailList, self).__getattr__(name)
+            return getattr(super(MailList, self), name)
         # Delegate to the database model object if it has the attribute.
         obj = getattr(self._data, name, missing)
         if obj is not missing:
             return obj
-        # Delegate to the member adapter next.
-        obj = getattr(self._memberadaptor, name, missing)
-        if obj is not missing:
-            return obj
         # Finally, delegate to one of the gui components.
         for guicomponent in self._gui:
             obj = getattr(guicomponent, name, missing)
@@ -132,12 +132,7 @@
         raise AttributeError(name)
 
     def __repr__(self):
-        if self.Locked():
-            status = '(locked)'
-        else:
-            status = '(unlocked)'
-        return '<mailing list "%s" %s at %x>' % (
-            self.fqdn_listname, status, id(self))
+        return '<mailing list "%s" at %x>' % (self.fqdn_listname, id(self))
 
 
     #
@@ -170,15 +165,6 @@
 
 
 
-    #
-    # Useful accessors
-    #
-    @property
-    def full_path(self):
-        return self._full_path
-
-
-
     # IMailingListAddresses
 
     @property
@@ -278,42 +264,6 @@
 
 
     #
-    # Instance and subcomponent initialization
-    #
-    def InitTempVars(self):
-        """Set transient variables of this and inherited classes."""
-        # Because of the semantics of the database layer, it's possible that
-        # this method gets called more than once on an existing object.  For
-        # example, if the MailList object is expunged from the current db
-        # session, then this may get called again when the object's persistent
-        # attributes are re-read from the database.  This can have nasty
-        # consequences, so ensure that we're only called once.
-        if hasattr(self, '_lock'):
-            return
-        # Attach a membership adaptor instance.
-        parts = config.MEMBER_ADAPTOR_CLASS.split(DOT)
-        adaptor_class = parts.pop()
-        adaptor_module = DOT.join(parts)
-        __import__(adaptor_module)
-        mod = sys.modules[adaptor_module]
-        self._memberadaptor = getattr(mod, adaptor_class)(self)
-        self._make_lock(self.fqdn_listname)
-        # Create the list's data directory.
-        self._full_path = os.path.join(config.LIST_DATA_DIR, 
self.fqdn_listname)
-        Utils.makedirs(self._full_path)
-        # Only one level of mixin inheritance allowed
-        for baseclass in self.__class__.__bases__:
-            if hasattr(baseclass, 'InitTempVars'):
-                baseclass.InitTempVars(self)
-        # Now, initialize our gui components
-        self._gui = []
-        for component in dir(Gui):
-            if component.startswith('_'):
-                continue
-            self._gui.append(getattr(Gui, component)())
-
-
-    #
     # Web API support via administrative categories
     #
     def GetConfigCategories(self):

=== modified file 'Mailman/database/model/mailinglist.py'
--- a/Mailman/database/model/mailinglist.py     2007-08-06 03:49:04 +0000
+++ b/Mailman/database/model/mailinglist.py     2007-09-20 02:35:37 +0000
@@ -15,10 +15,12 @@
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
 # USA.
 
+import os
+
 from elixir import *
 from zope.interface import implements
 
-from Mailman.Utils import fqdn_listname, split_listname
+from Mailman.Utils import fqdn_listname, makedirs, split_listname
 from Mailman.configuration import config
 from Mailman.interfaces import *
 from Mailman.database.types import EnumType, TimeDeltaType
@@ -174,6 +176,8 @@
         # 2-tuple of the date of the last autoresponse and the number of
         # autoresponses sent on that date.
         self.hold_and_cmd_autoresponses = {}
+        self.full_path = os.path.join(config.LIST_DATA_DIR, fqdn_listname)
+        makedirs(self.full_path)
 
     # XXX FIXME
     def _restore(self):

=== modified file 'Mailman/docs/hold.txt'
--- a/Mailman/docs/hold.txt     2007-09-17 02:10:05 +0000
+++ b/Mailman/docs/hold.txt     2007-09-20 02:35:37 +0000
@@ -19,12 +19,6 @@
     >>> mlist._data.web_page_url = 'http://lists.example.com/'
     >>> flush()
 
-XXX The Hold handler requires that the mailing list be locked because it
-touches the pending database.  Eventually the pending database should be moved
-into the real database so that the lock is no longer necessary.
-
-    >>> mlist.Lock()
-
 Here's a helper function used when we don't care about what's in the virgin
 queue or in the pending database.
 
@@ -380,4 +374,3 @@
 Clean up.
 
     >>> clear()
-    >>> mlist.Unlock()

=== modified file 'Mailman/docs/membership.txt'
--- a/Mailman/docs/membership.txt       2007-08-06 03:49:04 +0000
+++ b/Mailman/docs/membership.txt       2007-09-20 02:35:37 +0000
@@ -19,7 +19,7 @@
     >>> mlist = config.db.list_manager.create('[EMAIL PROTECTED]')
     >>> flush()
     >>> mlist
-    <mailing list "[EMAIL PROTECTED]" (unlocked) at ...>
+    <mailing list "[EMAIL PROTECTED]" at ...>
     >>> sorted(member.address.address for member in mlist.members.members)
     []
     >>> sorted(user.real_name for user in mlist.members.users)

=== modified file 'Mailman/docs/requests.txt'
--- a/Mailman/docs/requests.txt 2007-09-16 16:08:24 +0000
+++ b/Mailman/docs/requests.txt 2007-09-20 02:35:37 +0000
@@ -48,7 +48,7 @@
     >>> verifyObject(IListRequests, requests)
     True
     >>> requests.mailing_list
-    <mailing list "[EMAIL PROTECTED]" (unlocked) at ...>
+    <mailing list "[EMAIL PROTECTED]" at ...>
 
 
 Holding requests

=== modified file 'TODO.txt'
--- a/TODO.txt  2007-09-19 11:28:58 +0000
+++ b/TODO.txt  2007-09-20 02:35:37 +0000
@@ -3,7 +3,6 @@
 
 Fix the XXX in model/requests.py where we need a flush because we can't get to
     last_inserted_id()
-Get rid of InitTempVars()
 Get rid of PickleTypes
 Get rid of MailList class!
 Add tests for bin/newlist and bin/rmlist



--

https://code.launchpad.net/~mailman-coders/mailman/3.0

You are receiving this branch notification because you are subscribed to it.
To unsubscribe from this branch go to 
https://code.launchpad.net/~mailman-coders/mailman/3.0/+subscription/mailman-checkins.
_______________________________________________
Mailman-checkins mailing list
[email protected]
Unsubscribe: 
http://mail.python.org/mailman/options/mailman-checkins/archive%40jab.org

Reply via email to