<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mailman.git/Mailman/Commands, branch master</title>
<subtitle>The GNU Mailing List manager.</subtitle>
<id>https://git.neuromancer.sk/mailman.git/atom/Mailman/Commands?h=master</id>
<link rel='self' href='https://git.neuromancer.sk/mailman.git/atom/Mailman/Commands?h=master'/>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/'/>
<updated>2008-02-27T06:26:18Z</updated>
<entry>
<title>Bite the bullet: rename the Mailman package to mailman.</title>
<updated>2008-02-27T06:26:18Z</updated>
<author>
<name>Barry Warsaw</name>
</author>
<published>2008-02-27T06:26:18Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=a1c73f6c305c7f74987d99855ba59d8fa823c253'/>
<id>urn:sha1:a1c73f6c305c7f74987d99855ba59d8fa823c253</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Tweak copyright years.</title>
<updated>2008-02-08T04:01:48Z</updated>
<author>
<name>Barry Warsaw</name>
</author>
<published>2008-02-08T04:01:48Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=0478757a09b4173937d75103fa96444b6b085300'/>
<id>urn:sha1:0478757a09b4173937d75103fa96444b6b085300</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Remove the action.py module, move this to Mailman/interfaces/__init__.py.</title>
<updated>2007-10-10T04:16:12Z</updated>
<author>
<name>Barry Warsaw</name>
</author>
<published>2007-10-10T04:16:12Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=15f9e73fdb96a145632e5916cc0073472c014c99'/>
<id>urn:sha1:15f9e73fdb96a145632e5916cc0073472c014c99</id>
<content type='text'>
Convert IMailingList.personalize to a enum.

Change all non-obsolete occurances of GetListEmail() to posting_address.
</content>
</entry>
<entry>
<title>Move the pending database into the SQLAlchemy/Elixir layer.  The old</title>
<updated>2007-08-01T20:11:08Z</updated>
<author>
<name>Barry Warsaw</name>
</author>
<published>2007-08-01T20:11:08Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=f8a6c46455a409125dcc0fcace7d7116898b0319'/>
<id>urn:sha1:f8a6c46455a409125dcc0fcace7d7116898b0319</id>
<content type='text'>
Pending.py module is removed.  Added an interface to this functionality such
that any IPendable (essentially a key/value mapping) can be associated with a
token, and that token can be confirmed and has a lifetime.  Any keys and
values can be stored, as long as both are unicodes.

Added a doctest.

Modified initialization of the database layer to support pluggability via
setuptools.  No longer is this layer initialized from a module, but now it's
instantiated from a class that implements IDatabase.  The StockDatabase class
implements the SQLAchemy/Elixir layer, but this can be overridden in a
setup.py.  Bye bye MANAGERS_INIT_FUNCTION, we hardly knew ye.

Added a package Mailman.app which will contain certain application specific
functionality.  Right now, the only there there is an IRegistar
implementation, which didn't seem to fit anywhere else.

Speaking of which, the IRegistrar interface implements all the logic related
to registration and verification of email addresses.  Think the equivalent of
MailList.AddMember() except generalized out of a mailing list context.  This
latter will eventually go away.  The IRegistrar sends the confirmation email.

Added an IDomain interface, though the only implementation of this so far
lives in the registration.txt doctest.  This defines the context necessary for
domain-level things, like address confirmation.

A bunch of other cleanups in modules that are necessary due to the refactoring
of Pending, but don't affect anything that's actually tested yet, so I won't
vouch for them (except that they don't throw errors on import!).

Clean up Defaults.py; also turn the functions seconds(), minutes(), hours()
and days() into their datetime.timedelta equivalents.

Consolidated the bogus email address exceptions.

In some places where appropriate, use email 4.0 module names instead of the
older brand.

Switch from Mailman.Utils.unique_message_id() to email.utils.make_msgid()
everywhere.  This is because we need to allow sending not in the context of a
mailing list (i.e. domain-wide address confirmation message).  So we can't use
a Message-ID generator that requires a mailing list.  OTOH, this breaks
Message-ID collision detection in the mail-&gt;news gateway.  I'll fix that
eventually.

Remove the 'verified' row on the Address table.  Now verification is checked
by Address.verified_on not being None.
</content>
</entry>
<entry>
<title>Other than contrib files, convert all imports of mm_cfg to imports of config.</title>
<updated>2007-07-15T01:23:28Z</updated>
<author>
<name>Barry Warsaw</name>
</author>
<published>2007-07-15T01:23:28Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=327865eaf118f40063366acad9c7d97487e010d6'/>
<id>urn:sha1:327865eaf118f40063366acad9c7d97487e010d6</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>The start of a setuptools conversion.  All the Makefile.in and autoconf</title>
<updated>2007-07-13T04:19:10Z</updated>
<author>
<name>Barry Warsaw</name>
</author>
<published>2007-07-13T04:19:10Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=288ae405b09baa443eb1b39422c48c315fbb2e5a'/>
<id>urn:sha1:288ae405b09baa443eb1b39422c48c315fbb2e5a</id>
<content type='text'>
artifacts are removed, as is the C files which we will no longer need.
</content>
</entry>
<entry>
<title>Merge exp-elixir-branch to trunk.  There is enough working to make me feel</title>
<updated>2007-05-28T20:21:41Z</updated>
<author>
<name>bwarsaw</name>
</author>
<published>2007-05-28T20:21:41Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=b18f632faa6de17badabb3c6c7ba61752ac84c37'/>
<id>urn:sha1:b18f632faa6de17badabb3c6c7ba61752ac84c37</id>
<content type='text'>
confident the Elixir branch is ready to become mainline.  Also, fewer branches
makes for an easier migration to a dvcs.

Don't expect much of the old test suite to work, or even for much of the old
functionality to work.  The changes here are disruptive enough to break higher
level parts of Mailman.  But that's okay because I am slowly building up a new
and improved test suite, which will lead to a functional system again.

For now, only the doctests in Mailman/docs (and their related test harnesses)
will pass, but they all do pass.  Note that Mailman/docs serve as system
documentation first and unit tests second.  You should be able to read the
doctest files to understand the underlying data model.

Other changes included in this merge:

- Added the Mailman.ext extension package.
- zope.interfaces uses to describe major components
- SQLAlchemy/Elixir used as the database model
- Top level doinstall target renamed to justinstall
- 3rd-party packages are now installed in pythonlib/lib/python to be more
  compliant with distutils standards.  This allows us to use just --home
  instead of all the --install-* options.
- No longer need to include the email package or pysqlite, as Python 2.5 is
  required (and comes with both packages).
- munepy package is included, for Python enums
- IRosterSets are added as a way to manage a collection of IRosters.  Roster
  sets are named so that we can maintain the indirection between mailing lists
  and rosters, where the two are maintained in different storages.
- IMailingListRosters: remove_*_roster() -&gt; delete_*_roster()
- Remove IMember interface.
- Utils.list_names() -&gt; config.list_manager.names
- fqdn_listname() takes an optional hostname argument.
- Added a bunch of new exceptions used throughout the new interfaces.
- Make LockFile a context manager for use with the 'with' statement.
</content>
</entry>
<entry>
<title>- Changed to show hidden members when authorization is by list admin or moderator password.</title>
<updated>2007-01-21T15:55:21Z</updated>
<author>
<name>msapiro</name>
</author>
<published>2007-01-21T15:55:21Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=d8ebc777fd8cc1cc2e60fba67ef29137e0329bb0'/>
<id>urn:sha1:d8ebc777fd8cc1cc2e60fba67ef29137e0329bb0</id>
<content type='text'>
- Changed public roster syntax to accept optional password.</content>
</entry>
<entry>
<title>Update copyright years.</title>
<updated>2007-01-19T04:38:06Z</updated>
<author>
<name>bwarsaw</name>
</author>
<published>2007-01-19T04:38:06Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=25f7d0630bfc73b3fd5c41a584d8eb3a8554f45d'/>
<id>urn:sha1:25f7d0630bfc73b3fd5c41a584d8eb3a8554f45d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>First crack at real virtual domain support, i.e. mailing lists with the same</title>
<updated>2006-07-08T17:58:13Z</updated>
<author>
<name>bwarsaw</name>
</author>
<published>2006-07-08T17:58:13Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=f321ff8f419284c32f7eea4e06c83212bccef6b0'/>
<id>urn:sha1:f321ff8f419284c32f7eea4e06c83212bccef6b0</id>
<content type='text'>
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() -&gt; 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() -&gt; 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.
</content>
</entry>
</feed>
