コード例 #1
0
    def test_featureletsNotRemoved(self):
        # there was a bug where edits on the container that were not
        # from the edit template would cause all of the featurelets to
        # be uninstalled; this demonstrates that the bug has been
        # fixed
        flet_id = 'listen'
        content_id = 'lists'
        supporter = IFeatureletSupporter(self.proj)
        flet = getAdapter(supporter, IFeaturelet, flet_id)
        supporter.installFeaturelet(flet)
        self.failUnless(content_id in self.proj.objectIds())
        # unset the "don't recurse" flag
        req = self.proj.REQUEST
        req.set('flet_recurse_flag', None)

        zope.event.notify(objectevent.ObjectModifiedEvent(self.proj))
        self.failUnless(flet_id in supporter.getInstalledFeatureletIds())
コード例 #2
0
ファイル: utils.py プロジェクト: socialplanning/opencore
def get_featurelets(project):
    """
    Returns a list of dicts representing the featurelets that are
    installed into the provided project.
    """
    supporter = IFeatureletSupporter(project)
    flet_ids = supporter.getInstalledFeatureletIds()
    getfletdesc = supporter.getFeatureletDescriptor
    result = []
    for id in flet_ids:
        flet_info = getfletdesc(id)
        if flet_info is None:
            # flet registered but non-functional
            continue
        menu_item = flet_info['menu_items'][0]
        result.append(
            {'name': id,
             'url' : menu_item['action'],
             'title': menu_item['title'],
             }
            )
    return result
コード例 #3
0
ファイル: menus.py プロジェクト: socialplanning/opencore
    def addProjectView(self):
        projectInfoView = self.projectInfoView
        project = projectInfoView.project
        proj_home_url = project.absolute_url()
        self.addMenuItem('Project Home', proj_home_url)

        if self.mtool.checkPermission(CopyOrMove, project):
            self.addMenuItem('Contents',
                             '%s/folder_contents' % proj_home_url)

        self.addMenuItem('Contact',
                         '%s/contact_project_admins' % proj_home_url)

        supporter = IFeatureletSupporter(projectInfoView.project)

        for i in supporter.getInstalledFeatureletIds():
            desc = supporter.getFeatureletDescriptor(i)
            self.addMenuItem(desc['menu_items'][0]['title'],
                             '%s/%s' % (proj_home_url,
                                        desc['menu_items'][0]['action']))

        if self.mtool.checkPermission(ModifyPortalContent, project):
            self.addMenuItem('Preferences', '%s/edit' % proj_home_url)
コード例 #4
0
def rm_tasktracker_btree_storage(self):
    """extension method to remove tt storage where self is the portal"""
    projs_with_taskstorage_removed = []
    projs_with_no_taskstorage = []

    for pbrain in self.portal_catalog(portal_type='OpenProject'):
        proj = pbrain.getObject()
        fs = IFeatureletSupporter(proj)
        installed_storage_ids = fs.getInstalledFeatureletIds()
        if 'tasks' in installed_storage_ids:
            fs.storage.pop('tasks')
            projs_with_taskstorage_removed.append(proj.id)
        else:
            projs_with_no_taskstorage.append(proj.id)

    out = StringIO()
    out.write('Projects with no tasktracker btree storage:\n')
    out.write('\n'.join(projs_with_no_taskstorage))
    out.write('\n\n')
    out.write('Projects with tasktracker btree storage removed:\n')
    out.write('\n'.join(projs_with_taskstorage_removed))
    transaction.get().note('Removed tasktracker btree storage on %d items' %
                           len(projs_with_taskstorage_removed))
    return out.getvalue()
コード例 #5
0
def handle_flet_uninstall(project, event=None):
    supporter = IFeatureletSupporter(project)
    for flet_id in supporter.getInstalledFeatureletIds():
        supporter.removeFeaturelet(flet_id, raise_error=False)