Ejemplo n.º 1
0
    def test_invoke_edit_view(self):
        # NOTE: This test can be removed if the portlet has no edit form
        mapping = PortletAssignmentMapping()
        request = self.request

        mapping['foo'] = newsportlet.Assignment()
        editview = getMultiAdapter((mapping['foo'], request), name='edit')
        self.failUnless(isinstance(editview, newsportlet.EditForm))
    def test_invoke_edit_view(self):
        # NOTE: This test can be removed if the portlet has no edit form
        mapping = PortletAssignmentMapping()
        request = self.folder.REQUEST

        mapping['foo'] = twittermultistream.Assignment()
        editview = getMultiAdapter((mapping['foo'], request), name='edit')
        self.failUnless(isinstance(editview, twittermultistream.EditForm))
    def test_invoke_edit_view(self):
        mapping = PortletAssignmentMapping()
        request = self.folder.REQUEST

        mapping['foo'] = osha_items.Assignment()
        editview = component.getMultiAdapter((mapping['foo'], request),
                                             name='edit')
        self.failUnless(isinstance(editview, osha_items.EditForm))
Ejemplo n.º 4
0
    def test_invoke_edit_view(self):
        mapping = PortletAssignmentMapping()
        request = self.folder.REQUEST

        mapping['foo'] = personleadimagecollectionportlet.Assignment(
            header=u"title")
        editview = getMultiAdapter((mapping['foo'], request), name='edit')
        self.failUnless(
            isinstance(editview, personleadimagecollectionportlet.EditForm))
Ejemplo n.º 5
0
 def getAssignmentsForManager(self, manager):
     key = self.request['key']
     column = getUtility(IPortletManager, name=manager.__name__)
     category = column[GROUP_CATEGORY]
     mapping = category.get(key, None)
     if mapping is None:
         mapping = category[key] = PortletAssignmentMapping(
             manager=manager.__name__, category=GROUP_CATEGORY, name=key)
     return mapping.values()
Ejemplo n.º 6
0
    def testInvokeEditView(self):
        mapping = PortletAssignmentMapping()

        mapping['foo'] = portlet_events.Assignment(count=5)
        editview = getMultiAdapter((mapping['foo'], self.request), name='edit')
        if PLONE5:
            self.assertTrue(isinstance(editview, portlet_events.EditForm))
        else:
            self.assertTrue(isinstance(editview, bbb_portlet_events.EditForm))
Ejemplo n.º 7
0
    def test_invoke_edit_view(self):
        mapping = PortletAssignmentMapping()
        request = self.request

        mapping['latest_nitf'] = latest_sectionable_nitf.Assignment()

        editview = getMultiAdapter((mapping['latest_nitf'], request),
                                   name='edit')
        self.assertTrue(isinstance(editview, latest_sectionable_nitf.EditForm))
Ejemplo n.º 8
0
    def test_invoke_editview(self):
        mapping = PortletAssignmentMapping()
        request = self.folder.REQUEST

        mapping['foo'] = voteportlet.Assignment(header='Polls',
                                         poll='latest')
        editview = getMultiAdapter((mapping['foo'], request),
                                    name='edit')
        self.assertTrue(isinstance(editview, voteportlet.EditForm))
    def testInvokeEditView(self):
        mapping = PortletAssignmentMapping()
        request = self.folder.REQUEST

        mapping['foo'] = login.Assignment()
        editview = queryMultiAdapter((mapping['foo'], request),
                                     name='edit',
                                     default=None)
        self.assertTrue(editview is None)
Ejemplo n.º 10
0
    def test_invoke_edit_view(self):
        # NOTE: This test can be removed if the portlet has no edit form
        mapping = PortletAssignmentMapping()
        request = self.portal.REQUEST

        mapping["foo"] = rerportletadvancedstatic.Assignment()
        editview = getMultiAdapter((mapping["foo"], request), name="edit")
        self.failUnless(isinstance(editview,
                                   rerportletadvancedstatic.EditForm))
Ejemplo n.º 11
0
 def getAssignmentsForManager(self, manager):
     pt = self.request['key']
     column = getUtility(IPortletManager, name=manager.__name__)
     category = column[CONTENT_TYPE_CATEGORY]
     mapping = category.get(pt, None)
     if mapping is None:
         mapping = category[pt] = PortletAssignmentMapping(
             manager=manager.__name__, category=CONTENT_TYPE_CATEGORY, name=pt)
     return mapping.values()
Ejemplo n.º 12
0
    def test_invoke_edit_view(self):
        mapping = PortletAssignmentMapping()
        request = self.folder.REQUEST

        mapping['foo'] = actions.Assignment(ptitle=u'actions',
                                            category=u'document',
                                            show_icons=True)
        editview = getMultiAdapter((mapping['foo'], request), name='edit')
        self.failUnless(isinstance(editview, actions.EditForm))
        return
    def testInvokeEditView(self):
        mapping = PortletAssignmentMapping()
        request = self.folder.REQUEST

        mapping['foo'] = portlet_tasks.Assignment()
        editview = queryMultiAdapter((mapping['foo'], request),
                                     name='edit',
                                     default=None)
        self.failUnless(
            isinstance(list(mapping.values())[0], portlet_tasks.Assignment))
    def testInvokeEditView(self):
        mapping = PortletAssignmentMapping()
        request = self.portal.REQUEST

        mapping['foo'] = existing_content_portlet.Assignment(
            content_uid=self.doc.UID(), )
        editview = getMultiAdapter((mapping['foo'], request), name='edit')
        self.assertTrue(
            isinstance(
                editview,
                existing_content_portlet.EditForm,
            ), )
Ejemplo n.º 15
0
 def results(limit=None):
     mapping = PortletAssignmentMapping()
     request = self.folder.REQUEST
     mapping['foo'] = ngcollection.Assignment(
         header=u"title",
         random=True,
         target_collection='/Members/test_user_1_/collection',
         limit=limit)
     return self.renderer(context=None,
                          request=None,
                          view=None,
                          manager=None,
                          assignment=mapping['foo']).results()
Ejemplo n.º 16
0
 def test_edit_link(self):
     collection = getattr(self.folder, 'collection')
     collection.setQuery(query)
     mapping = PortletAssignmentMapping()
     mapping['foo'] = carousel.Assignment(
         header=u"Test carousel",
         target_collection='/Members/test_user_1_/collection')
     r = self.renderer(context=None,
                       request=None,
                       view=None,
                       manager=None,
                       assignment=mapping['foo'])
     self.assertTrue(r.editCarouselLink().endswith('/edit'))
Ejemplo n.º 17
0
    def test_editform_fields(self):

        schema_field_names = field.Fields(news.INewsPortlet).keys()

        mapping = PortletAssignmentMapping()
        request = self.folder.REQUEST
        mapping['foo'] = news.Assignment(count=5)
        editview = getMultiAdapter((mapping['foo'], request), name='edit')
        editview.update()
        editview_field_names = editview.fields.keys()

        # Our editview schema before we register our extender:
        self.assertEqual(editview_field_names, schema_field_names)

        # Register our schemaextender
        gsm = getGlobalSiteManager()
        gsm.registerAdapter(PortletCssClassAdapter, (IPortletAssignment, ))
        gsm.registerAdapter(
            PortletCssClassFormExtender,
            (Interface, IDefaultBrowserLayer, IPortletEditForm), IFormExtender,
            'portletcssclass.extender')

        mapping = PortletAssignmentMapping()
        request = self.folder.REQUEST
        mapping['foo'] = news.Assignment(count=5)
        editview = getMultiAdapter((mapping['foo'], request), name='edit')
        editview.update()
        editview_field_names = editview.fields.keys()

        gsm.unregisterAdapter(
            PortletCssClassFormExtender,
            (Interface, IDefaultBrowserLayer, IPortletEditForm), IFormExtender,
            'portletcssclass.extender')
        gsm.unregisterAdapter(PortletCssClassAdapter, (IPortletAssignment, ))

        # Our editview schema now includes our extended schema:
        self.assertEqual(editview_field_names,
                         schema_field_names + [EXTENDER_PREFIX + '.css_class'])
Ejemplo n.º 18
0
    def test_invoke_edit_view(self):
        # NOTE: This test can be removed if the portlet has no edit form
        mapping = PortletAssignmentMapping()
        request = self.request

        mapping['foo1'] = hot_threads.Assignment(5, 'testforum')
        mapping['foo2'] = popular_threads.Assignment(5, 'interval',
                                                     'testforum')

        editview1 = getMultiAdapter((mapping['foo1'], request), name='edit')
        editview2 = getMultiAdapter((mapping['foo2'], request), name='edit')

        self.assertTrue(isinstance(editview1, hot_threads.EditForm))
        self.assertTrue(isinstance(editview2, popular_threads.EditForm))
Ejemplo n.º 19
0
    def traverse(self, name, ignore):
        col, pt = name.split('+')
        column = getUtility(IPortletManager, name=col)
        category = column[CONTENT_TYPE_CATEGORY]
        manager = category.get(pt, None)
        if manager is None:
            manager = category[pt] = PortletAssignmentMapping(
                manager=col, category=CONTENT_TYPE_CATEGORY, name=pt)

        # XXX: For graceful migration
        if not getattr(manager, '__manager__', None):
            manager.__manager__ = col
        if not getattr(manager, '__category__', None):
            manager.__category__ = CONTENT_TYPE_CATEGORY
        if not getattr(manager, '__name__', None):
            manager.__name__ = pt

        return manager
Ejemplo n.º 20
0
    def traverse(self, name, ignore):
        col, group = name.split('+')
        column = getUtility(IPortletManager, name=col)
        category = column[GROUP_CATEGORY]
        manager = category.get(group, None)
        if manager is None:
            manager = category[group] = PortletAssignmentMapping(
                manager=col, category=GROUP_CATEGORY, name=group)

        # XXX: For graceful migration
        if not getattr(manager, '__manager__', None):
            manager.__manager__ = col
        if not getattr(manager, '__category__', None):
            manager.__category__ = GROUP_CATEGORY
        if not getattr(manager, '__name__', None):
            manager.__name__ = group

        return manager
    def testPortletAvailabilityWithPrivateFolders(self):
        private_folder = self._createType(self.folder, 'Folder', 'private')
        public_subfolder = self._createType(private_folder, 'Folder', 'public')
        self.portal.portal_workflow.doActionFor(public_subfolder, 'publish')
        self.collection = self._createType(public_subfolder, 'Collection',
                                           'collection')
        self.portal.portal_workflow.doActionFor(self.collection, 'publish')

        mapping = PortletAssignmentMapping()
        mapping['foo'] = collection.Assignment(
            header=u"title",
            uid=self.portal.folder.private.public.collection.UID())
        logout()
        collectionrenderer = self.renderer(context=None,
                                           request=None,
                                           view=None,
                                           manager=None,
                                           assignment=mapping['foo'])

        self.assertEqual(self.collection, collectionrenderer.collection())
    def testInvokeEditView(self):
        mapping = PortletAssignmentMapping()
        request = self.folder.REQUEST

        mapping['foo'] = portlet_mod.Assignment()
        editview = getMultiAdapter((mapping['foo'], request), name='edit')
        self.failUnless(isinstance(editview, portlet_mod.EditForm))

        editview.setUpWidgets(True)
        editview.handle_edit_action.success(
            dict(title="Test Title",
                 feeds="Test Feeds",
                 items_shown=16,
                 cache_timeout="32"))
        assignment = mapping.values()[0]
        self.failUnless(isinstance(assignment, portlet_mod.Assignment))
        self.assertEqual(assignment.title, "Test Title")
        self.assertEqual(assignment.feeds, "Test Feeds")
        self.assertEqual(assignment.items_shown, 16)
        self.assertEqual(assignment.cache_timeout, "32")
Ejemplo n.º 23
0
def assignment_mapping_from_key(context,
                                manager_name,
                                category,
                                key,
                                create=False):
    """Given the name of a portlet manager, the name of a category, and a
    key in that category, return the IPortletAssignmentMapping.
    Raise a KeyError if it cannot be found.
    """

    manager = getUtility(IPortletManager, manager_name)

    if category == CONTEXT_CATEGORY:
        path = key
        portal = getToolByName(context, 'portal_url').getPortalObject()
        portal_path = '/'.join(portal.getPhysicalPath())
        if path == portal_path:
            # there may be problem if PloneSite id is 'plone'.
            # restrictedTraverse traverses to @@plone BrowserView which
            # is wrong
            obj = portal
        else:
            if path.startswith(portal_path + '/'):
                path = path[len(portal_path) + 1:]
            while path.startswith('/'):
                path = path[1:]
            if six.PY2 and isinstance(path, six.text_type):
                path = path.encode(
                    'utf-8')  # OFS.traversable cannot do unicode
            obj = portal.restrictedTraverse(path, None)
        if obj is None:
            raise KeyError("Cannot find object at path %s" % path)
        return getMultiAdapter((obj, manager), IPortletAssignmentMapping)
    else:
        mapping = manager[category]
        if key not in mapping and create:
            if category == USER_CATEGORY:
                mapping[key] = UserPortletAssignmentMapping()
            else:
                mapping[key] = PortletAssignmentMapping()
        return mapping[key]
Ejemplo n.º 24
0
def localPortletAssignmentMappingAdapter(context, manager):
    """Zope 2 version of the localPortletAssignmentMappingAdapter factory.
    """
    annotations = IAnnotations(context)
    local = annotations.get(CONTEXT_ASSIGNMENT_KEY, None)
    if local is None:
        local = annotations[CONTEXT_ASSIGNMENT_KEY] = OOBTree()

    portlets = local.get(manager.__name__, None)
    if portlets is None:
        portlets = local[manager.__name__] = PortletAssignmentMapping(
            manager=manager.__name__, category=CONTEXT_CATEGORY)

    # XXX: For graceful migration
    if not getattr(portlets, '__manager__', ''):
        portlets.__manager__ = manager.__name__

    if not getattr(portlets, '__category__', ''):
        portlets.__category__ = CONTEXT_CATEGORY

    return portlets
Ejemplo n.º 25
0
def localPortletAssignmentMappingAdapter(context, manager):
    """Zope 2 version of the localPortletAssignmentMappingAdapter factory.
    """
    annotations = IAnnotations(context)
    local = annotations.get(CONTEXT_ASSIGNMENT_KEY, {})
    portlets = local.get(manager.__name__, None)
    if portlets is None:
        # Return new mapping without storing it yet,
        # but pass along the context so it can be stored
        # if an assignment is added.
        portlets = PortletAssignmentMapping(manager=manager.__name__,
                                            category=CONTEXT_CATEGORY,
                                            context=context)

    # XXX: For graceful migration
    if not getattr(portlets, '__manager__', ''):
        portlets.__manager__ = manager.__name__

    if not getattr(portlets, '__category__', ''):
        portlets.__category__ = CONTEXT_CATEGORY

    return portlets
Ejemplo n.º 26
0
 def afterSetUp(self):
     self.manager = getUtility(IPortletManager, name=u'plone.leftcolumn')
     self.cat = self.manager[USER_CATEGORY]
     self.cat[user_name] = PortletAssignmentMapping(manager=u'plone.leftcolumn',
                                                    category=USER_CATEGORY,
                                                    name=user_name)
Ejemplo n.º 27
0
 def afterSetUp(self):
     self.mapping = PortletAssignmentMapping()
     c = classic.Assignment()
     self.mapping['foo'] = c
     self.traverser = getMultiAdapter((self.mapping, self.folder.REQUEST),
                                      IBrowserPublisher)
 def testInvokeEditView(self):
     mapping = PortletAssignmentMapping()
     request = self.folder.REQUEST
     mapping['foo'] = collection.Assignment(header=u"title")
     editview = getMultiAdapter((mapping['foo'], request), name='edit')
     self.assertTrue(isinstance(editview, collection.EditForm))
    def testRandomQuery(self):
        # set up our portlet renderer
        mapping = PortletAssignmentMapping()
        mapping['foo'] = collection.Assignment(
            header=u"title", random=True, uid=self.folder.collection.UID())
        # add some folders
        for i in range(6):
            self.folder.invokeFactory('Folder', 'folder_%s' % i)
            getattr(self.folder, 'folder_%s' % i).reindexObject()

        # collection with no criteria -- should return empty list
        collectionrenderer = self.renderer(context=None,
                                           request=None,
                                           view=None,
                                           manager=None,
                                           assignment=mapping['foo'])
        self.assertEqual(len(collectionrenderer.results()), 0)

        # collection with simple criterion -- should return 1 (random) folder
        self.folder.collection.query = [{
            'i': 'portal_type',
            'o': 'plone.app.querystring.operation.string.is',
            'v': 'Folder',
        }]
        collectionrenderer = self.renderer(context=None,
                                           request=None,
                                           view=None,
                                           manager=None,
                                           assignment=mapping['foo'])
        self.assertEqual(len(collectionrenderer.results()), 1)

        # collection with multiple criteria -- should behave similarly
        self.folder.collection.query = [
            {
                'i': 'portal_type',
                'o': 'plone.app.querystring.operation.string.is',
                'v': 'Folder',
            },
            {
                'i': 'creator',
                'o': 'plone.app.querystring.operation.string.is',
                'v': 'test_user_1_',
            },
        ]
        collectionrenderer = self.renderer(context=None,
                                           request=None,
                                           view=None,
                                           manager=None,
                                           assignment=mapping['foo'])
        collectionrenderer.results()

        # collection with sorting -- should behave similarly (sort is ignored
        # internally)
        self.folder.collection.sort_on = 'modified'
        collectionrenderer = self.renderer(context=None,
                                           request=None,
                                           view=None,
                                           manager=None,
                                           assignment=mapping['foo'])
        self.assertEqual(len(collectionrenderer.results()), 1)

        # same criteria, now with limit set to 2 -- should return 2 (random)
        # folders
        collectionrenderer = self.renderer(context=None,
                                           request=None,
                                           view=None,
                                           manager=None,
                                           assignment=mapping['foo'])
        collectionrenderer.data.limit = 2
        self.assertEqual(len(collectionrenderer.results()), 2)

        # make sure there's no error if the limit is greater than the # of
        # results found
        collectionrenderer = self.renderer(context=None,
                                           request=None,
                                           view=None,
                                           manager=None,
                                           assignment=mapping['foo'])
        collectionrenderer.data.limit = 10
        self.assertTrue(len(collectionrenderer.results()) >= 6)
Ejemplo n.º 30
0
    def testInvokeEditView(self):
        mapping = PortletAssignmentMapping()

        mapping['foo'] = portlet_events.Assignment(count=5)
        editview = getMultiAdapter((mapping['foo'], self.request), name='edit')
        self.failUnless(isinstance(editview, portlet_events.EditForm))