Skip to content
  • bwarsaw's avatar
    Add a framework for easier use of alternative MemberAdaptor implementations. · 7958b4d5
    bwarsaw authored
    Also add an experimental (and currently non-functioning) SQLAlchemy
    implementation.
    
    The MemberAdaptor.py interface has been updated in a couple of ways.  First, a
    "transaction interface" has been added so that Mailman can properly sync with
    the member adaptor.  Newly supported methods are load(), lock(), save(), and
    unlock() and these correspond to methods in the MailList object.  Second,
    __init__() is officially documented to take a MailList instance and nothing
    else.  Third, some of the existing docstrings were incorrect w.r.t. the
    OldStyleMemberships implementation (such as rasing BadPasswordError in some
    cases).  Most of these should not be the responsibility of the MemberAdaptor,
    so the docstrings have been updated.
    
    Test cases have been added and a new Defaults.py.in variable called
    MEMBER_ADAPTOR_CLASS has been added which names the class to use.  Of course
    OldStyleMemberships are named by default.  There's also a
    SQLALCHEMY_ENGINE_URL variable for use with the experimental member adaptor.
    
    Fix a bug in Configuration where if the etc/mailman.cfg file wasn't found and
    the mm_cfg.py file was used as a fallback, it would blow away the original
    namespace copied from Defaults.py.in.  This wasn't a problem until we started
    adding additional names to that namespace, such as 'add_domain'.
    7958b4d5