示例#1
0
def find_membership_synced_lists(context):
    project = IListenFeatureletInstalled(context)
    lists_folder = IListenContainer(project.lists)

    membership_synced_lists = []
    for item in lists_folder.values():
        try:
            membership_synced_lists.append(
                ISyncWithProjectMembership(IOpenMailingList(item))
                )
        except TypeError:
            continue
    return membership_synced_lists
示例#2
0
def mark_listen_folders(context):
    """
    Marks all 'lists' folders w/ the IListenContainer interface.
    """
    cat = getToolByName(context, 'portal_catalog')
    projs = cat.unrestrictedSearchResults(portal_type='OpenProject')
    for proj_brain in projs:
        proj = proj_brain.getObject()
        listfolder = proj._getOb('lists', None)
        if (listfolder is not None and
            not IListenContainer.providedBy(listfolder)):
            alsoProvides(listfolder, IListenContainer)
            logger.info('Marked folder with IListenContainer: %s'
                        % '/'.join(listfolder.getPhysicalPath()))
from opencore.listen.interfaces import IListenContainer, IListenFeatureletInstalled, ISyncWithProjectMembership
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):