from topp.featurelets.interfaces import IFeatureletSupporter

before = IFeatureletSupporter(portal).getInstalledFeatureletIds()

from Products.listen.interfaces.list_types import PostModeratedListTypeDefinition as PostModerated
from Products.listen.content import ListTypeChanged
from zope.event import notify

if len(sys.argv) < 2:
    print __doc__
    sys.exit(0)

if sys.argv[1] == 'add':
    IFeatureletSupporter(portal).installFeaturelet('listen')
    lists_folder = IListenContainer(IListenFeatureletInstalled(portal).lists)
    for mlist in lists_folder.objectValues(spec='OpenMailingList'):
        # what a silly API :-(
        notify(ListTypeChanged(mlist,
                               mlist.list_type.list_marker,
                               PostModerated.list_marker))
            
elif sys.argv[1] == 'remove':
    IFeatureletSupporter(portal).removeFeaturelet('listen')

elif sys.argv[1] == 'sync':
    lists_folder = IListenContainer(IListenFeatureletInstalled(portal).lists)

    mlists = []
    for mlist in lists_folder.objectValues(spec='OpenMailingList'):
        if ISyncWithProjectMembership.providedBy(mlist):
            mlists.append(mlist)