summaryrefslogtreecommitdiff
path: root/Mailman/Version.py
Commit message (Collapse)AuthorAgeFilesLines
* Bite the bullet: rename the Mailman package to mailman.Barry Warsaw2008-02-271-47/+0
|
* Tweak copyright years.Barry Warsaw2008-02-071-1/+1
|
* Removed a bunch of files that are obsolete. The interfaces are all foldedBarry Warsaw2007-09-271-9/+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.
* The start of a setuptools conversion. All the Makefile.in and autoconfBarry Warsaw2007-07-131-3/+3
| | | | artifacts are removed, as is the C files which we will no longer need.
* Update copyright years.bwarsaw2007-01-191-1/+1
|
* Merged revisions 8113-8121 via svnmerge from bwarsaw2006-12-291-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | https://mailman.svn.sourceforge.net/svnroot/mailman/branches/tmp-sqlalchemy-branch ................ r8114 | bwarsaw | 2006-12-06 00:16:54 -0500 (Wed, 06 Dec 2006) | 44 lines Initial take on using SQLAlchemy to store list data in lieu of Python pickles. While all the list data (including OldStyleMemberships attributes) are stored in the database, many attributes are stored as PickleTypes binary data. This isn't idea but it gets things working until a more sophisticated schema can be developed. MailList class is now a new-style class, as is required by SQLAlchemy. This makes several things, er, interesting. Rip out all the low-level pickle reading and writing stuff. Hook SA transaction events into Lock() and Unlock(). Move the hooking of the _memberadaptor into InitTempVars(), which gets called by the SQLAlchemy hooks (MailList.__init__() never is). Add an initialize.py module which centralizes all the initialization bits that command line scripts have to do, including configuration, logging, and atabase initialization. This change also converts bin/withlist to mmshell wrapper. Update to SQLAlchemy 0.3.1. Revamp paths.py.in considerably. There were several problems with the old way. We no longer disable default loading of site-packages so we don't need to add Python's site-packages back to sys.path. Also, because site.addsitedir() causes things like .pth paths to be /appended/ to sys.path, they actually won't override any site-installed packages. E.g. if SQLAlchemy is installed in the system Python, our version will not override. IIUC, setuptools-based packages can be configured to work properly in the face of package versions, however not all packages we currently depend on are setuptools-based. So instead, we steal a bit of stuff from site.py but change things so the prepend .pth stuff to sys.path. Update several modules to use True/False and whitespace normalization. Convert from mm_cfg to config object. Modernize a few coding constructs. Add a couple of exceptions to handle database problems. In the export script, include the widget type in the elements. This helped in my stupid little throw away conversion script, but I think it will be more generally useful. Add an interact.py module which refactors interactive interpreter access. Mostly this is used by withlist -i, but it lets us import Mailman.interact and drop into a prompt just about anywhere (e.g. debugging). ................ r8115 | bwarsaw | 2006-12-07 09:13:56 -0500 (Thu, 07 Dec 2006) | 22 lines Start to flesh out more of the SQLAlchemy mechanisms. Added a MailList.__new__() which hooks instantiation to use a query on dbcontext to get an existing mailing list. A 'no-args' call means we're doing a Create(), though eventually that will change too. For now, disable the CheckVersion() call. Eventually this will be folded into schema migration. list_exists(): Rewrite to use the dbcontext query to determine if the named mailing list exists or not. Requires the fqdn_listname. Eradicate two failed member adaptors: BDBMemberAdaptor and SAMemberships. Change the way the DBContext holds onto tables. It now keeps a dictionary mapping the table's name to the SA Table instance. This makes it easier to look up and use the individual tables. Add 'web_page_url' as an attribute managed by SA, and remove a debugging print. ................ r8116 | bwarsaw | 2006-12-11 07:27:47 -0500 (Mon, 11 Dec 2006) | 29 lines Rework the whole dbcontext and transaction framework. SA already handles nested transactions so we don't have to worry about them. However, we do have the weird situation where some transactions are tied to MailList .Lock()/.Unlock()/.Save() and some are tied to non-mlist actions. So now we use an @txn decorator to put methods in a session transaction, but then we also hook into the above MailList methods as possibly sub-transactions. We use a weakref subclass to manage the MailList interface, with a dictionary mapping MailList fqdn_listnames against transactions. The weakrefs come in by giving us a callback when a MailList gets derefed such that we're guaranteed to rollback any outstanding transaction. Also, we have one global DBContext instance but rather than force the rest of Mailman to deal with context objects, instead we expose API methods on that object into the Mailman.database module, which the rest of the code will use. Such methods must be prepended with 'api_' to get exposed this way. bin/rmlist now works with the SA-backend. I refactored the code here so that other code (namely, the test suite) can more easily and consistently remove a mailing list. This isn't the best place for it ultimately, but it's good enough for now. New convenience functions Utils.split_listname(), .fqdn_listname(). Convert testall to use Mailman.initialize.initialize(). Not all tests work, but I'm down to only 8 failures and 7 errors. Also, do a better job of recovering from failures in setUp(). MailList.__new__() now takes keyword arguments. ................ r8117 | bwarsaw | 2006-12-11 22:58:06 -0500 (Mon, 11 Dec 2006) | 7 lines Unit test repairs; even though the unit tests are still pretty fragile, everything now passes with the SQLAlchemy storage of list data. Added missing 'personalize' column. Converted mailmanctl and qrunner to initialize() interface. Fixed _cookie_path() to not fail if SCRIPT_NAME is not in the environment. ................ r8118 | bwarsaw | 2006-12-27 18:45:41 -0500 (Wed, 27 Dec 2006) | 21 lines Utils.list_names(): Use a database query to get all the list names. dbcontext.py: Added api_get_list_names() to support Utils.list_names(). listdata.py: Added two additional MailList attributes which need to be stored in the database. The first is 'admin_member_chunksize' which isn't modifiable from the web. The second is 'password' which holds the list's password. HTMLFormatObject: item strings can now be unicodes. bin/list_lists.py: Must call initialize() to get the database properly initialized, not just config.load(). This will be a common theme. SecurityManager.py: - Remove md5 and crypt support - Added mailman.debug logger, though it will be only used during debugging. - The 'secret' can be a unicode now. - A few coding style updates; repr() instead of backticks, 'key in dict' instead of 'dict.has_key(key)' ................ r8119 | bwarsaw | 2006-12-27 19:13:09 -0500 (Wed, 27 Dec 2006) | 2 lines genaliases.py: config.load() -> initialize() ................ r8120 | bwarsaw | 2006-12-27 19:17:26 -0500 (Wed, 27 Dec 2006) | 9 lines Blocked revisions 8113 via svnmerge ........ r8113 | bwarsaw | 2006-12-05 23:54:30 -0500 (Tue, 05 Dec 2006) | 3 lines Initialized merge tracking via "svnmerge" with revisions "1-8112" from https://mailman.svn.sourceforge.net/svnroot/mailman/branches/tmp-sqlalchemy-branch ........ ................ r8121 | bwarsaw | 2006-12-28 23:34:52 -0500 (Thu, 28 Dec 2006) | 20 lines Remove SIGTERM handling from all the CGI scripts. This messes with HTTPRunner because when you issue "mailmanctl stop" after the signal handler has been installed, the process will get a SIGTERM, the signal handler will run, and the process will exit with a normal zero code. This will cause mailmanctl to try to restart the HTTPRunner. I don't think we need that stuff at all when running under wsgi with a SQLAlchemy backend. If mailmanctl kills the HTTPRunner in the middle of the process, I believe (but have not tested) that the transaction should get properly rolled back at process exit. We need to make sure about this, and also we need to test the signal handling functionality under traditional CGI environment (if we even still want to support that). Also, make sure that we don't try to initialize the loggers twice in qrunner. This was the cause of all the double entries in logs/qrunner. Fix a coding style nit in mailmanctl.py. De-DOS-ify line endings in loginit.py. ................
* First crack at real virtual domain support, i.e. mailing lists with the samebwarsaw2006-07-081-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | name in more than one domain. - Totally eradicate MAILMAN_SITE_LIST, and in fact the entire need for a site list. The functions that the site list previously performed are either removed or supported in other ways. For example, instead of forwarding owner bounces to the site list, we now have a SITE_OWNER_ADDRESS which should point to a human, and such bounces are sent there instead. There's also a "no reply" email address that should be set up to go to devnull. For any message that never expects a reply, the sender is set to this address. - Remove the Site.py module. It was an experimental approach to trying to support virtual domains, and we're going to do it so much better now that this module is no longer necessary. Site._makedirs() -> Utils.makedir(). - VIRTUAL_HOST_OVERVIEW is completely removed, since now virtual hosts are always enabled. Virtual domains should be added to mailman.cfg by using the new add_domain() function. add_virtualhost() is gone. If no virtual domains are added explicitly, we add the default one that configure guessed (but we never add that if domains are added explicitly). - Utils.get_domain() -> Utils.get_request_domain() - withlist code cleanup and make sure that we load etc/mailman.cfg - A new base exception called MailmanException is added, from which all exceptions defined in Errors.py ultimately derive. MailmanError is retained and derives from MailmanException. - BadDomainSpecificationError is added. - Remove the -V/--virtual-host-overview option from list_lists and add instead -d/--domain and -f/--full. - bin/update probably works but needs more testing. - bin/newlist and bin/rmlist take fqdn list names, but default to the default domain if @whatever isn't given. newlist's -u/--urlhost and -e/--emailhost options are removed. The domain that the list is being added to must already exist. - Minor code cleanup in Message.py - Bump version to 2.2.0a1 - The Configuration object grows a .domain dictionary which maps email hosts to url hosts. The reverse mapping is supported, but not directly; use Configuration.get_email_host() instead. - Mailman/Cgi/create is converted from mm_cfg to config, and some minor code cleanup is performed. Also, convert to __i18n_templates__ = True. - New MailList APIs: + property .fqdn_listname + GetNoReplyEmail() + Create() API changes and refactoring.
* Massive conversion process so that Mailman can be run from a user specifiedbwarsaw2006-07-081-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | configuration file. While the full conversion is not yet complete, everything that seems to be required to run mailmanctl, qrunner, rmlist, and newlist have been updated. Basically, modules should no longer import mm_cfg, but instead they should import Mailman.configuration.config. The latter is an object that's guaranteed to exist, but not guaranteed to be initialized until some top-level script calls config.load(). The latter should be called with the argument to -C/--config which is a new convention the above scripts have been given. In most cases, where mm_cfg.<variable> is used config.<variable> can be used, but the exceptions are where the default value must be available before config.load() is called. Sometimes you can import Mailman.Default and get the variable from there, but other times the code has to be changed to work around this limitation. Take each on a case-by-case basis. Note that the various directories calculated from VAR_PREFIX, EXEC_PREFIX, and PREFIX are now calculated in config.py, not in Defaults.py. This way a configuration file can override the base directories and everything should work correctly. Other changes here include: - mailmanctl, qrunner, and update are switched to optparse and $-strings, and changed to the mmshell architecture - An etc directory has been added to /usr/local/mailman and a mailman.cfg.sample file is installed there. Sites should now edit an etc/mailman.cfg file to do their configurations, although the mm_cfg file is still honored. The formats of the two files are identical. - list_lists is given the -C/--config option - Some coding style fixes in bin/update, but not extensive - Get rid of nested scope hacks in qrunner.py - A start on getting EmailBase tests working (specifically test_message), although not yet complete.
* - Utils.py Fixed a security hole which allowed a crafted URI to injectmsapiro2006-07-071-1/+1
| | | | | | | | | | | | | | | | | | | | 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.
* Added a new list attribute 'subscribe_auto_approval' which is a list of ↵msapiro2006-03-181-1/+1
| | | | | | | email addresses and regular expressions matching email addresses whose subscriptions are exempt from admin approval. RFE 403066.
* back porting from 2.1.6tkikuchi2005-08-281-5/+5
|
* FSF office has moved. chdcking in for MAIN branch.tkikuchi2005-08-271-1/+1
|
* Bump this to 2.2 alpha 0.bwarsaw2003-09-281-4/+4
|
* Bumping version numbers.bwarsaw2003-05-021-2/+2
|
* Bump version number.bwarsaw2003-02-111-2/+2
|
* Bump the version number.bwarsaw2003-01-021-2/+2
|
* This is it baby! Bump the version to 2.1 final.bwarsaw2002-12-311-3/+3
|
* Bump to 2.1rc1+bwarsaw2002-12-241-1/+1
|
* Bump to 2.1rc1bwarsaw2002-12-241-3/+3
|
* Bump to 2.1b6+bwarsaw2002-12-111-1/+1
|
* Bumping to 2.1b6bwarsaw2002-12-091-2/+2
|
* VERSION: Bump.bwarsaw2002-11-211-1/+1
|
* Prepare for beta5bwarsaw2002-11-191-2/+2
|
* Bump version number.bwarsaw2002-10-281-1/+1
|
* Prepare for beta4bwarsaw2002-10-251-2/+2
|
* Whitespace normalization.bwarsaw2002-10-191-3/+3
|
* DATA_FILE_VERSION: Bump to pick up news_moderation.bwarsaw2002-10-191-1/+1
|
* When content filtering, we may not always want to just discard thebwarsaw2002-10-071-1/+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. Bump DATA_FILE_VERSION to pick up the new filter_action attribute.
* DATA_FILE_VERSION: Bump to pick up pass_mime_types.bwarsaw2002-08-151-1/+1
| | | | | | NewVars(): Add pass_mime_types if missing. Also, whitespace normalization and PyChecker cleanup.
* VERSION: Set to 2.1b3+bwarsaw2002-08-131-1/+1
|
* DATA_FILE_VERSION: Bump to pick up encode_ascii_prefixes.bwarsaw2002-08-091-1/+1
|
* Get ready for 2.1b3 release.bwarsaw2002-08-091-2/+2
|
* Allow postings gatewayed to Usenet to inhibit the Subject: fieldbwarsaw2002-07-311-1/+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. Bump the DATA_FILE_VERSION to pick up the news_prefix_subject_too attribute.
* Bump the DATA_FILE_VERSION and add hold_and_cmd_autoresponses if it'sbwarsaw2002-05-281-1/+1
| | | | missing.
* Bump DATA_FILE_VERSION so we get the new bounce_info cleaner to run.bwarsaw2002-05-091-1/+1
|
* Bump VERSION to 2.1b2+bwarsaw2002-05-071-1/+1
|
* Bumping to 2.1b2bwarsaw2002-05-051-2/+2
|
* DATA_FILE_VERSION: Bump this to pick up include_list_post_header.bwarsaw2002-04-191-1/+1
|
* Port of Les Niles' patch to do de-mime. Specifically,bwarsaw2002-04-141-1/+1
| | | | | DATA_FILE_VERSION: Bump to pick up the new content filtering attributes.
* Bump the version number to 2.1b1 in preparation for the first betabwarsaw2002-03-161-3/+3
| | | | release.
* Bump DATA_FILE_VERSION to pick up the emergency attribute.bwarsaw2002-03-151-2/+2
|
* Dan Mick's patch (with mods ;) for disabling list owner notificationbwarsaw2002-03-121-1/+1
| | | | | | on disabled-due-to-bounces and removal-due-to-bounces. Specifically, Bump the DATA_FILE_VERSION to pick up the new list attributes.
* Bump DATA_FILE_VERSION to pick up the newbwarsaw2002-03-071-1/+1
| | | | bounce_unrecognized_goes_to_list_owner attribute.
* Bump DATA_FILE_VERSION to some insanely high number <60 wink>.bwarsaw2002-03-061-1/+1
|
* Patches to support duplicate suppression for explicit recipients,bwarsaw2002-03-051-1/+1
| | | | | | | | written by Ben Gertzfield, ported to MM2.1 by Marc MERLIN. Specifically, DATA_FILE_VERSION: Bump to pick up the new_member_options attribute.
* DATA_FILE_VERSION: Bump to pick up new list attributesbwarsaw2002-01-211-1/+1
| | | | member_moderation_action and member_moderation_notice.
* VERSION: Bump to 2.1a4+bwarsaw2002-01-061-3/+3
| | | | DATA_FILE_VERSION: Bump to pick up the new ban_list attribute.
* Bump to 2.1a4bwarsaw2001-12-311-2/+2
|
* DATA_FILE_VERSION: Bump up a few notches to pick up the schemabwarsaw2001-12-271-1/+1
| | | | changes.
* DATA_FILE_VERSION: Bump it up to get the delivery_status schemabwarsaw2001-12-191-1/+1
| | | | changes.