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))
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))
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()
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))
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))
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)
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))
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()
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, ), )
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()
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'))
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'])
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))
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
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")
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]
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
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
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)
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)
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))