[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