summaryrefslogtreecommitdiff
path: root/Mailman/versions.py
Commit message (Collapse)AuthorAgeFilesLines
* Removed a bunch of files that are obsolete. The interfaces are all foldedBarry Warsaw2007-09-271-517/+0
| | | | | | | | | | | | | into the IMailingList interface. OTOH, MemberAdaptor.py is completely useless now (though not entirely eradicated), as is OldStyleMemberships.py. versions.py isn't necessary any longer either because we'll have to do database migrations (and conversions from MM2.1) completely differently. New command line script 'set_members' which is used to take a CSV file and syncing that to a list's membership. Added back the DeliveryStatus.unknown item because we'll need it when we migrate MM 2.1 databases.
* Other than contrib files, convert all imports of mm_cfg to imports of config.Barry Warsaw2007-07-141-39/+39
| | | | | | | | | | | Ignore mailman.egg-info In bin/make_instance.py: Catch and ignore import errors when importing Mailman.i18n. Before this script has actually been run, there won't be enough infrastructure in place of the import to succeed. Include several other fixes in this file. Add install_requires to the setup script.
* Update copyright years.bwarsaw2007-01-191-1/+1
|
* - Utils.py Fixed a security hole which allowed a crafted URI to injectmsapiro2006-07-071-0/+9
| | | | | | | | | | | | | | | | | | | | bogus apparent messages into the error log, possibly inducing an admin to visit a phishing site. - options.py Topics.py Tagger.py MailList.py Utils.py Version.py versions.py The processing of Topics regular expressions has changed. Previously the Topics regexp was compiled in verbose mode but not documented as such which caused some confusion. Also, the documentation indicated that topic keywords could be entered one per line, but these entries were not properly. Topics regexps are now compiled in non-verbose mode and multi- line entries are 'ored'. Existing Topics regexps will be converted when the list is updated so they will continue to work.
* Replaced call to no longer existent Message.OutgoingMessage() with call tomsapiro2006-05-301-1/+2
| | | | email.message_from_string(text, Message.Message) (Sourceforge is migrating from 1.x - scary)
* Remove most uses of the types module, in favor of isinstance checks againstbwarsaw2006-04-171-6/+4
| | | | | | the builtin types. Two still remain: a check against ClassType and a check against MethodType. Also, fix some hinky type comparisons to use isinstance() consistently.
* - Convert all logging to Python's standard logging module. Get rid of allbwarsaw2006-04-171-8/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | traces of our crufty old Syslog. Most of this work was purely mechanical, except for: 1) Initializing the loggers. For this, there's a new module Mailman/loginit.py (yes all modules from now on will use PEP 8 names). We can't call this 'logging.py' because that will interfere with importing the stdlib module of the same name (can you say Python 2.5 and absolute imports?). If you want to write log messages both to the log file and to stderr, pass True to loginit.initialize(). This will turn on propagation of log messages to the parent 'mailman' logger, which is set up to print to stderr. This is how bin/qrunner works when not running as a subprocess of mailmanctl. 2) The driver script. I had to untwist the StampedLogger stuff and implement differently printing exceptions and such to log/error because standard logging objects don't have a write() method. So we write to a cStringIO and then pass that to the logger. 3) SMTPDirect.py because of the configurability of the log messages. This required changing SafeDict into a dict subclass (which is better than using UserDicts anyway -- yay Python 2.3!). It's probably still possible to flummox things up if you change the name of the loggers in the SMTP_LOG_* variables in mm_cfg.py. However, the worst you can do is cause output to go to stderr and not go to a log file. Note too that all entry points into the Mailman system must call Mailman.loginit.initialize() or the log output will go to stderr (which may occasionally be what you want). Currently all CGIs and qrunners should be working properly. I wish I could have tested all code paths that touch the logger, but that's infeasible. I have tested this, but it's possible that there were some mistakes in the translation. - Mailman.Bouncers.BounceAPI.Stop is a singleton, but not a class instance any more. - True/False code cleanup, PEP 8 import restructuring, whitespace normalization, and copyright year updates, as appropriate.
* Added a new list attribute 'subscribe_auto_approval' which is a list of ↵msapiro2006-03-181-0/+2
| | | | | | | email addresses and regular expressions matching email addresses whose subscriptions are exempt from admin approval. RFE 403066.
* Port cleaning changes forward from 2.1-maint branch.bwarsaw2005-12-301-2/+2
|
* back porting from 2.1.6tkikuchi2005-08-281-2/+16
|
* FSF office has moved. chdcking in for MAIN branch.tkikuchi2005-08-271-1/+1
|
* NewVars(): Pick up news_moderation.bwarsaw2002-10-191-0/+1
|
* When content filtering, we may not always want to just discard thebwarsaw2002-10-071-0/+1
| | | | | | | | message. This is especially the case when debugging your filtering rules. To support this we now have a "filter action" which can be Discard, Reject, Forward to Admin, Preserve on disk. NewVars(): Add 'filter_action' if missing.
* NewVars(): pass_mime_types needs to get its value from the mm_cfgbwarsaw2002-08-151-1/+1
| | | | default.
* DATA_FILE_VERSION: Bump to pick up pass_mime_types.bwarsaw2002-08-151-7/+7
| | | | | | NewVars(): Add pass_mime_types if missing. Also, whitespace normalization and PyChecker cleanup.
* NewVars(): Add encode_ascii_prefixes if missing.bwarsaw2002-08-091-0/+6
|
* UpdateOldVars(): Rewrite how the old variables `moderated', `posters',bwarsaw2002-08-011-40/+94
| | | | | | | | and `member_posting_only' get translated into the new variables `generic_nonmember_action', `default_member_moderation', `accept_these_nonmembers', and member Moderate flags. This (hopefully) closes SF bug #573071.
* Allow postings gatewayed to Usenet to inhibit the Subject: fieldbwarsaw2002-07-311-0/+1
| | | | | | | | munging, separate from the mail list. This actually restores the original Subject: field which is stashed away in the metadata when it's munged in CookHeaders. NewVar(): Add the news_prefix_subject_too attribute if it's missing.
* Bump the DATA_FILE_VERSION and add hold_and_cmd_autoresponses if it'sbwarsaw2002-05-281-0/+1
| | | | missing.
* UpdateOldUsers(): It was wrong to do a test on the existance ofbwarsaw2002-05-091-9/+11
| | | | | | | delivery_status when deciding how/when to clean up the bounce_info dict. Now we always clean it up by removing any bounce_info keys which are "not isMember()" and which do not have an instance of _BounceInfo in their value.
* Update(): Call UpdateOldUsers() before calling NewVars().bwarsaw2002-05-031-3/+7
| | | | | | UpdateOldUsers(): Only zap bounce_info if there's no delivery_status attribute, otherwise every time we changed DATA_FILE_VERSION, we'd zap all the bounce information!
* NewVars(): Pick up include_list_post_header.bwarsaw2002-04-191-0/+1
|
* Port of Les Niles' patch to do de-mime. Specifically,bwarsaw2002-04-141-0/+4
| | | | | NewVars(): Add attributes filter_mime_types, filter_content, and convert_html_to_plaintext if they are missing.
* CanonicalizeUserOptions(): If the key isn't a member (as we'rebwarsaw2002-04-091-0/+1
| | | | | | trolling through user_options), we must continue after deleting the entry in user_options, otherwise the subsequent getMemberOption() call will fail.
* NewVars(): Add emergency attribute, if missing.bwarsaw2002-03-151-0/+2
|
* Dan Mick's patch (with mods ;) for disabling list owner notificationbwarsaw2002-03-121-0/+6
| | | | | | | on disabled-due-to-bounces and removal-due-to-bounces. Specifically, NewVars(): Add bounce_notify_owner_on_disable and bounce_notify_owner_on_removal if missing.
* UpdateOldVars(): When converting from a MM2.0.x era list, if we findbwarsaw2002-03-111-2/+6
| | | | | the list's moderate attribute is enabled, then we need to set each member's Moderate option to true.
* CanonicalizeUserOptions(): Two changes. First, when migratingbwarsaw2002-03-091-0/+9
| | | | | | | | | | | user_options, skip the key if its not a member. This can happen when upgrading legacy databases because I believe there were bugs long ago that caused some keys to appear in user_options but not in members or digest_members. Also, we now have a mini-version id for the user_options stuff so CanonicalizeUserOptions() won't try to run every time some other part of the schema changes.
* NewVars(): Pick up the new bounce_unrecognized_goes_to_list_ownerbwarsaw2002-03-071-0/+3
| | | | attribute.
* Patches to support duplicate suppression for explicit recipients,bwarsaw2002-03-051-0/+2
| | | | | | | | written by Ben Gertzfield, ported to MM2.1 by Marc MERLIN. Specifically, NewVars(): Pick up the new_member_options attribute.
* NewVars(): Pick up new list attributes member_moderation_action andbwarsaw2002-01-211-0/+4
| | | | member_moderation_notice.
* NewVars(), CanonicalizeUserOptions(): Don't set the delivery_statusbwarsaw2002-01-161-1/+1
| | | | | | | | attribute in the latter function, only do it in the former function. Otherwise every time the DATA_FILE_VERSION gets updated, all your users' nomail options will be cleared. Arrrggghh! Thanks to Dan Mick for enduring the pain.
* NewVars(): Add ban_list attribute if it's missing.bwarsaw2002-01-061-1/+2
|
* CanonicalizeUserOptions(): Use augmented assignments.bwarsaw2001-12-311-1/+1
|
* ZapOldVars(): Get rid of old bounce processing attributesbwarsaw2001-12-271-0/+16
| | | | | | | | | | | | minimum_removal_date, minimum_post_count_before_bounce_action, automatic_bounce_action, and max_posts_between_bounces. NewVars(): Add new bounce scoring attributes bounce_score_threshold, bounce_info_stale_after, bounce_you_are_disabled_warnings, bounce_you_are_disabled_warnings_interval. UpdateOldVars(): Clear out bounce_info. We don't need to migrate any of this data. Instead we'll just start bounce scoring from scratch.
* CanonicalizeUserOptions(): Implement the schema update frombwarsaw2001-12-191-1/+11
| | | | DisableDelivery member option to the new delivery_status dictionary.
* NewVars(): Add unsubscribe_policy, send_goodbye_msg, andbwarsaw2001-10-211-0/+4
| | | | include_rfc2369_headers to the list object if they are missing.
* NewVars(): Pick up new list attribute first_strip_reply_to.bwarsaw2001-10-201-0/+2
|
* UpdateOldVars(): Handle the migration of the old privacy variables tobwarsaw2001-10-151-0/+69
| | | | | | | | | | | | | | | | | | | | | | | | | | | | the new ones. I think this is as close as we can get: - add default_member_moderation, accept_these_nonmembers, hold_these_nonmembers, reject_these_nonmembers, discard_these_nonmembers, forward_auto_discards, generic_nonmember_action - moderated -> generic_nonmember_action, also if we were moderating this list, then the generic_nonmember_action should be to hold the message, otherwise it should be to accept it. - for each address in forbidden_posters, if the address is a member, set their moderate flag to true, otherwise add them to hold_these_nonmembers. - posters (fun! not.) and member_posting_only: if member_posting_only == yes and there are posters, then they are members and non-members we automatically accept. So for members, turn off their moderation bit, and for non-members we add them to accept_these_nonmembers. BUT! if member_post_only == no, posters is the list of addresses we only accept, with all others being held. So, first turn the moderation bit on for all members, then for addresses in posters which are members, turn their moderation bit off, and for addresses which are nonmembers, add them to accept_these_nonmembers. Phew!
* UpdateOldVars(): dont_respond_to_post_requests => respond_to_post_requestsbwarsaw2001-08-171-0/+7
|
* de-string-module-ificationbwarsaw2001-08-141-10/+9
| | | | NewVars(): Add available_languages attribute if missing.
* NewVars(): Add the `personalize' attribute if it's missing.bwarsaw2001-08-031-0/+1
|
* ZapOldVars(): Rewrite a bit more succinctly, and add the followingbwarsaw2001-07-261-7/+7
| | | | | | | | | | | attribute to those that should be zapped: public_archive_file_dir private_archive_file_dir archive_directory All three can be calculated, and it makes moving a list much easier if they are, instead of being kept as attributes in the list.
* NewVars(): Add the following attributes to MailList instances, if theybwarsaw2001-07-181-0/+5
| | | | | | | | | | | | | | | don't already have them: - topics: a list of all admin specified topics - topics_enabled: a flag specifying whether topics are enabled - topics_bodylines_limit: the number of lines of the body that the topic tagger should look for Subject: and Keywords: lines - one_last_digest: A hold over from an earlier time, this holds addresses of folks who switched from digest to regular delivery - usernames: holds the dictionary of email addresses to Real Names but if a user has no assigned Real Name, they have no entry in this dictionary.
* UpdateOldVars(): 'setatrr' -> 'setattr'twouters2001-07-101-1/+1
|
* Use better syslog() calling convention.bwarsaw2001-06-271-3/+3
|
* NewVars(): Add mod_password and moderator attributes to list schemas.bwarsaw2001-05-311-0/+2
|
* ZapOldVars(): clobber_date goes away as a list-specific configurationbwarsaw2001-05-011-0/+5
| | | | | | | variable. NewVars(): MailList objects grow a digest_volume_frequency and digest_last_sent_at attributes.
* ZapOldVars(): We no longer support the filter_prog argument on thebwarsaw2001-02-151-11/+14
| | | | | | | | MailList object. I don't think this was ever used and there are better ways to do this now. Make sure this gets into the NEWS file. NewVars(): Simplify interface by using a local=global trick (this won't be necessary in Python 2.1!)
* Update(): Call ZapOldVars()bwarsaw2000-06-141-0/+7
| | | | | ZapOldVars(): Remove `num_spawns' attribute if the list object still has it.