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
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):