[Mailman-Developers] Implementing the IArchiver

Barry Warsaw barry at list.org
Fri Jul 20 16:14:37 CEST 2012


Hi George,

On Jul 20, 2012, at 02:45 PM, George Chatzisofroniou wrote:

>For my metrics app (GSoC project), I'm currently using a MM3 simulator
>for testing purposes. Proceeding with the development, i think it's
>time to implement a connection with a real MM3 environment.
>
>For the current version of the app, the only information i need is who
>posted what to which list on what date. So, as we have already
>discussed, the IArchiver should be the origin of the interface.
>
>But i know nothing on how to implement this. How will i add my app to
>the active IA modules? Is there any code that extends the IArchiver
>and will help me understand how it works? (I guess HK extends it to
>inject the messages into the archiver.)

There isn't too much boilerplate you need to write in order to implement
IArchiver, or any interface.  You can look at the existing implementations in
src/mailman/archiving/*.py for examples, but I'll briefly outline what you
need here.

from zope.interface import implementer
from mailman.interfaces.archiver import IArchiver

@implementer(IArchiver)
class MyArchiver:
    """This is the docstring."""

    name = 'myarchiver'

    @staticmethod
    def list_url(mlist):
        """See `IArchiver`."""
        # do something

    @staticmethod
    def permalink(mlist, msg):
        """See `IArchiver`."""
        # do something

    @staticmethod
    def archive_message(mlist, message):
        """See `IArchiver`."""
        # do something


You probably only care about archive_message().  For methods list_url() and
permalink() which you don't care about, you can just `raise NotImplemented`.

That's about it!  Of course the details of archive_message() are up to you.

Cheers,
-Barry


More information about the Mailman-Developers mailing list