def test_viewlet_is_present(self): """Testa se a viewlet foi registrada corretamente.""" request = self.request context = self.portal view = View(context, request) manager_name = 'plone.portaltop' manager = queryMultiAdapter((context, request, view), IViewletManager, manager_name, default=None) # Testa se o viewlet manager existe self.assertIsNotNone(manager) manager.update() my_viewlet = [ v for v in manager.viewlets if v.__name__ == 'brasil.gov.portal.acessibilidade' ] # Testa se o viewlet existe self.assertEqual(len(my_viewlet), 1)
def test_viewlet_is_present(self): """ looking up and updating the manager should list our viewlet """ # we need a context and request minisite_subfolder = api.content.create(type='Folder', id='minisite_subfolder', title='minisite_subfolder', container=self.minisite_folder) request = self.request context = self.minisite_folder # viewlet managers also require a view object for adaptation view = View(context, request) # finally, you need the name of the manager you want to find manager_name = 'plone.portaltop' # viewlet managers are found by Multi-Adapter lookup manager = queryMultiAdapter((context, request, view), IViewletManager, manager_name, default=None) self.assertIsNotNone(manager) # calling update() on a manager causes it to set up its viewlets manager.update() # now our viewlet should be in the list of viewlets for the manager # we can verify this by looking for a viewlet with the name we used # to register the viewlet in zcml my_viewlet = [ v for v in manager.viewlets if v.__name__ == 'cpskin.minisitemenu' ] self.assertEqual(len(my_viewlet), 1)
def test_viewlet_menu_contents(self): """ looking up and updating the manager should list our viewlet """ non_minisite_subfolder = api.content.create( type='Folder', id='non_minisite_subfolder', title='non_minisite_subfolder', container=self.portal) minisite_subfolder = api.content.create(type='Folder', id='minisite_subfolder', title='minisite_subfolder', container=self.minisite_folder) request = self.request context = self.minisite_folder view = View(context, request) manager_name = 'plone.portaltop' manager = queryMultiAdapter((context, request, view), IViewletManager, manager_name, default=None) self.assertIsNotNone(manager) manager.update() viewlets = [ v for v in manager.viewlets if v.__name__ == 'cpskin.minisitemenu' ] ms_viewlet = viewlets[0] ids = [item['id'] for item in ms_viewlet.portal_tabs] self.assertIn(minisite_subfolder.id, ids) self.assertNotIn(non_minisite_subfolder.id, ids)
def test_viewlet_is_not_installed(self): """ looking up and updating the manager should not list our viewlet when our browserlayer is not applied, eq. when our product is not installed. """ request = self.app.REQUEST context = self.portal view = View(context, request) manager_name = 'plone.htmlhead' manager = queryMultiAdapter((context, request, view), IViewletManager, manager_name, default=None) self.failUnless(manager) manager.update() my_viewlet = [ v for v in manager.viewlets if v.__name__ == 'collective.cookiecuttr' ] self.failUnlessEqual(len(my_viewlet), 0) # The analytics viewlet should be there and show its normal contents. analytics = self.get_analytics_viewlet_contents(context, request, view) self.assertEqual(analytics, self.webstats_js)
def _iter_enabled_viewlet_managers(self, context, request): # We use a generic view to lookup the viewlets. view = View(context, request) spec = tuple(map(providedBy, (context, request, view))) try: settings = getUtility(IRegistry).forInterface(IGlobalSettings) except (ComponentLookupError, KeyError): ignore_list = () else: if not root_interface().providedBy(context): ignore_list = settings.site_local_managers or () else: ignore_list = () for viewlet_manager_iface, viewlet_manager_title in self.all_viewlet_managers( context): if viewlet_manager_iface in ignore_list: continue for viewlet_name, factory in self._lookup( spec + (viewlet_manager_iface, ), IViewlet): try: if issubclass(factory, DisplayPanelManagerViewlet): yield viewlet_name, viewlet_manager_iface, viewlet_manager_title except TypeError: # Issue #9: "Unexpected non-class object while # iterating over viewlet managers" continue
def _get_viewlet_manager(self, context, request=None, name=None): assert name is not None if request is None: request = self.request view = View(context, request) manager = getMultiAdapter((context, request, view), IViewletManager, name) return manager
def get_viewlet_manager(self, context, name='plone.portalfooter'): from Products.Five.browser import BrowserView as View from zope.component import getMultiAdapter from zope.viewlet.interfaces import IViewletManager request = self.request view = View(context, request) manager = getMultiAdapter((context, request, view), IViewletManager, name) return manager
def test_anonymous_viewlet_is_not_present_in_portal(self): logout() view = View(self.portal, self.request) manager = queryMultiAdapter((self.portal, self.request, view), IViewletManager, 'plone.htmlhead') self.assertTrue(manager is not None) manager.update() viewlet = [v for v in manager.viewlets if v.__name__ == NAME] self.assertEqual(len(viewlet), 0)
def test_manager_viewlet_is_present_in_portal(self): setRoles(self.portal, TEST_USER_ID, ['Manager']) view = View(self.portal, self.request) manager = queryMultiAdapter((self.portal, self.request, view), IViewletManager, 'plone.htmlhead') self.assertTrue(manager is not None) manager.update() viewlet = [v for v in manager.viewlets if v.__name__ == NAME] self.assertEqual(len(viewlet), 1)
def _get_viewlets_from_manager(self, manager): """Returns all viewlets from a manager.""" request = self.portal.REQUEST view = View(self.portal, request) manager = queryMultiAdapter((self.portal, request, view), IViewletManager, manager, default=None) self.assertIsNotNone(manager) manager.update() return manager.viewlets
def _iter_viewlet_managers(self, context, request): # We use a generic view to lookup the viewletmanagers. view = View(context, request) spec = tuple(map(providedBy, (context, request, view))) storage = getUtility(IViewletSettingsStorage) skinname = context.getCurrentSkinName() for viewlet_name, viewlet_manager_iface, viewlet_manager_title in self._iter_enabled_viewlet_managers(context, request): for viewlet_manager_name, factory in self._lookup(spec, viewlet_manager_iface): hidden = storage.getHidden(viewlet_manager_name, skinname) if viewlet_name not in hidden: yield viewlet_manager_name, viewlet_manager_title
def test_leadimage_viewlet_does_not_show_up_for_newsitems(self): from zope.interface import alsoProvides from plone.app.contenttypes.behaviors.leadimage import ILeadImage alsoProvides(self.request, ILeadImage) view = View(self.portal, self.request) manager = queryMultiAdapter((self.portal, self.request, view), IViewletManager, 'plone.abovecontenttitle', default=None) self.assertTrue(manager) manager.update() leadimage_viewlet = [ v for v in manager.viewlets if v.__name__ == 'contentleadimage' ] self.assertEqual(len(leadimage_viewlet), 0)
def test_viewlet_cookiecuttr_enabled(self): """ looking up and updating the manager should list our viewlet It is enabled so it should be filled. """ # our viewlet is registered for a browser layer. Browser layers # are applied to the request during traversal in the publisher. We # need to do the same thing manually here request = self.app.REQUEST context = self.portal alsoProvides(request, ICookieCuttr) view = View(context, request) # finally, you need the name of the manager you want to find manager_name = 'plone.htmlhead' # viewlet managers are found by Multi-Adapter lookup manager = queryMultiAdapter((context, request, view), IViewletManager, manager_name, default=None) self.failUnless(manager) # calling update() on a manager causes it to set up its viewlets manager.update() # now our viewlet should be in the list of viewlets for the manager # we can verify this by looking for a viewlet with the name we used # to register the viewlet in zcml my_viewlet = [ v for v in manager.viewlets if v.__name__ == 'collective.cookiecuttr' ] self.failUnlessEqual(len(my_viewlet), 1) my_viewlet[0].settings.cookiecuttr_enabled = True self.failUnlessEqual( my_viewlet[0].render(), u'\n<script type="text/javascript">\n\n (function($) {\n $(document).ready(function () {\n if($.cookieCuttr) {\n $.cookieCuttr({cookieAnalytics: false,\n cookiePolicyLink: " ",\n cookieMessage: "We use cookies. <a href=\'{{cookiePolicyLink}}\' title=\'read about our cookies\'>Read everything</a>",\n cookieAcceptButtonText: "Accept cookies"\n });\n }\n })\n })(jQuery);\n</script>\n\n' ) # The analytics viewlet should be there and show nothing. analytics = self.get_analytics_viewlet_contents(context, request, view) self.assertEqual(analytics, '')
def _find_viewlet(self, context, manager_name, viewlet_name, layer=None): request = self.portal.REQUEST if layer: alsoProvides(request, layer) view = View(context, request) manager = queryMultiAdapter( (context, request, view), IViewletManager, manager_name, default=None ) self.failUnless(manager) manager.update() viewlets = manager.viewlets viewlet = [v for v in viewlets if v.__name__ == viewlet_name] return viewlet
def test_viewlet_cookiecuttr_disabled(self): """ looking up and updating the manager should list our viewlet But when disabled it should be empty. """ # our viewlet is registered for a browser layer. Browser layers # are applied to the request during traversal in the publisher. We # need to do the same thing manually here request = self.app.REQUEST context = self.portal alsoProvides(request, ICookieCuttr) view = View(context, request) # finally, you need the name of the manager you want to find manager_name = 'plone.htmlhead' # viewlet managers are found by Multi-Adapter lookup manager = queryMultiAdapter((context, request, view), IViewletManager, manager_name, default=None) self.failUnless(manager) # calling update() on a manager causes it to set up its viewlets manager.update() # now our viewlet should be in the list of viewlets for the manager # we can verify this by looking for a viewlet with the name we used # to register the viewlet in zcml my_viewlet = [ v for v in manager.viewlets if v.__name__ == 'collective.cookiecuttr' ] self.failUnlessEqual(len(my_viewlet), 1) self.failUnlessEqual(my_viewlet[0].render(), '') # The analytics viewlet should be there and show its normal contents. analytics = self.get_analytics_viewlet_contents(context, request, view) self.assertEqual(analytics, self.webstats_js)
def _get_viewlet(self): request = self.portal.REQUEST context = self.portal.questions view = View(context, request) viewlet = QuestionsListViewlet(context, request, view, None) return viewlet
def get_viewlet_manager(self, context, name="plone.portalfooter"): request = self.request view = View(context, request) manager = getMultiAdapter((context, request, view), IViewletManager, name) return manager
def get_viewlet_manager(self, context, name='plone.abovecontent'): request = self.request view = View(context, request) manager = getMultiAdapter((context, request, view), IViewletManager, name) return manager