summaryrefslogtreecommitdiff
path: root/Mailman/pythonlib/StringIO.py (unfollow)
Commit message (Collapse)AuthorFilesLines
2001-07-19Added an acknowledgement to Control.com, sponsors of most of thebwarsaw2-3/+13
recent checkins.
2001-07-19Major overhaul. Summary:bwarsaw1-958/+404
- There's no more GetConfigInfo() in the mixin classes. All admin ui categories and content comes from components in the new Mailman.Gui package. - All MailList attribute access for user-centric information is moved out of here into the OldStyleMemberships (a subclass, aka implementation of the MemberAdaptor interface). - An extension mechanism to MailList objects has been added. Drop a file called extend.py in the lists/<yourlist> directory; this gets execfile'd, and the function extend() is called after the instance is initialized. Use this to override anything (e.g. the _memberadaptor attribute). - Lots of code reorganization. Specific changes: MailList subclasses: Added TopicMgr __init__(): Don't call MailCommandHandler.__init__() explicitly. Instead, loop through base classes calling their __init__()'s if they have them. Initialize _memberadaptor to be an OldStyleMemberships instance. After the instance has been locked and loaded <snort!> execfile extend.py and run its extend() function, if it has one. InitTempVars(): Like __init__(), cycle through all base classes, calling each's InitTempVars() if they have one. Also, instantiate the gui components by dir'ing the Gui package and instantiating each callable not prefixed by _ (they will be the individual classes). GetMembers(), GetDigestMembers(), GetDeliveryMembers(), GetDigestDeliveryMembers(), __AddMember(), GetUserSubscribedAddress(), GetUserCanonicalAddress(), GetUserOption(), SetUserOption(), FindUser(): Removed. __getattr__(): Added for auto-delegation first to the _memberadaptor, and then to the gui components. __repr__(): Change the printable representation slightly so that "(unlocked)" is printed if the list is unlocked, and also to not include the class/module name. Also use %x format instead of coercing the id to hex(). InitVars(): Add usernames and passwords dicts for traditional membership management. Like __init__(), cycle through all base classes, calling each's InitVars() if they have one. Set self.password here instead of in SecurityManager's InitVar(). GetConfigCategories(): New method which returns a CategoryDict instance (subclass of UserDict), containing the order ADMIN_CATEGORIES as extracted from the gui components GetConfigCategory() methods. GetConfigSubCategories(): For a particular category, get the list of subcategories by calling a gui component's GetConfigSubCategories() method if it has one. GetConfigInfo(): Delegate to gui components. Save(): Ignore attributes if their name starts with _ (like before) or if their value type is MethodType. AddMember(): Rewrite to use (Python 2.2's) rfc822.parseaddr() which supplants Utils.ParseAddrs(). We also don't remove spaces from the name any more, but we do still lowercase the domain. Also, IsMember() -> isMember(). Call ApprovedAddMember() passing in the fullname. Same with HoldSubscription(). ApprovedAddMembers(): Use MemberAdaptor API, and rfc822.parseaddr(). DeleteMember() -> ApprovedDeleteMember(). Also rewrite to use MemberAdaptor API. ChangeMemberName(): New method which changes a member's real name, both for this list, and globally. ChangeMemberAddress(), ApprovedChangeMemberAddress(): Use MemberAdaptor API. ProcessConfirmation(): DeleteMember() -> ApprovedDeleteMember(). GetPreferredLanguage(): Allow name to default to None, meaning return the list's preferred_language.
2001-07-19MMMemberError, MMBadUserError, MMNotAMemberError, MMNoSuchUserError,bwarsaw1-6/+14
MMAlreadyAMember: Make these class based exceptions. MemberError, NotAMemberError, AlreadyReceivingDigests, AlreadyReceivingRegularDeliveries, CantDigestError, MustDigestError: Add these "new wave" exceptions, which are raised by the MemberAdaptors. NB: I really need to go through and make all the exceptions sane!
2001-07-19All membership related attribute access should use the MemberAdaptorbwarsaw1-109/+94
API instead, e.g. IsMember() -> isMember() self.passwords.* -> getMemberPassword() ConfirmUserPassword() -> [do the comparison ourselves] ChangeUserPassword() -> setMemberPassword() GetUserOption() -> getMemberOption() GetDigestMembers() -> getDigestMemberKeys() GetMembers() -> getRegularMemberKeys() DeleteMember() -> ApprovedDeleteMember() option_info: Make order agree w/ option_desc. ProcessPasswordCmd(): Fix the response string so that it isn't broken on two lines. Remove unnecessary exception handlers. be raised. ProcessOptionsCmd(), ProcessSetCmd(), ProcessUnsubscribeCmd(): Rewrite and simply to use the new membership API. Remove unnecessary exception handlers. ProcessSetCommand(): Split usage printing into __setcmd_usage() method.
2001-07-19All membership related attribute access should use the MemberAdaptorbwarsaw1-11/+13
API instead, e.g. GetDigestMembers() -> getDigestMemberKeys() GetUserOption() -> getMemberOption() GetMembers() -> getRegularMemberKeys() FormatOptionButton(): Add ReceiveNonmatchingTopics flag. FormatBox(): Add optional `value' parameter, which if supplied is the default value for teh input box (default is the empty string).
2001-07-19GLOBAL_PIPELINE: Add the new Tagger handler before CalcRecips (whichbwarsaw1-4/+13
depends on it). ADMIN_CATEGORIES: Here's where we define the category names for the admin ui. Topics: A new widget type. ReceiveNonmatchingTopics: New member option flag controlling whether a user receives or ignores a message that does not matching any topics.
2001-07-19All membership related attribute access should use the MemberAdaptorbwarsaw3-31/+44
API instead, e.g. GetUserOption() -> getMemberOption() GetPreferredLanguage() -> getMemberLanguage() IsMember() -> isMember() GetDigestDeliveryMembers() -> getDigestMemberKeys() ToDigest.py: clear the one_last_digest() dictionary after sending the digest.
2001-07-19All membership related attribute access should use the MemberAdaptorbwarsaw1-2/+2
API instead, e.g. GetUserOption() -> getMemberOption() GetUserSubscribedAddress() -> getMemberCPAddress()
2001-07-19All membership related attribute access should use the MemberAdaptorbwarsaw5-10/+14
API instead, e.g. GetMembers()/GetDigestMembers() -> getMembers() GetUserSubscribedAddress() -> getMemberCPAddress() GetDeliveryMembers() -> getRegularMemberKeys() GetDigestDeliveryMembers() -> getDigestMemberKeys()
2001-07-19Now, try to remove it!bwarsaw1-555/+0