Test coverage for vnccollab.theme.browser.portlet_manager

vnccollab/      covered 69% (1245 of 4098 uncovered)
    theme/      covered 69% (1245 of 4098 uncovered)
        browser/      covered 74% (507 of 1985 uncovered)
            portlet_manager.py      covered 84% (11 of 70 uncovered)

    1: from AccessControl import getSecurityManager
       
    1: from zope.component import adapts
    1: from zope.interface import Interface
    1: from zope.publisher.interfaces.browser import IBrowserView
    1: from zope.annotation.interfaces import IAnnotations
       
    1: from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
    1: from Products.CMFCore.utils import getToolByName
       
    1: from plone.app.portlets.interfaces import IColumn, IDashboard
    1: from plone.memoize.instance import memoize
       
    1: from plone.portlets.interfaces import IPortletManager
    1: from plone.app.portlets import manager
    1: from plone.app.portlets.browser import editmanager
    1: from plone.app.portlets.browser.interfaces import IManageColumnPortletsView, \
           IManageContextualPortletsView, IManageDashboardPortletsView
       
    1: from vnccollab.theme.browser.interfaces import IThemeSpecific
    1: from vnccollab.theme.config import PORTLETS_STATES_ANNO_KEY
       
       
    2: class ColumnPortletManagerRenderer(manager.ColumnPortletManagerRenderer):
           """A renderer for the column portlets
    1:     """
    1:     adapts(Interface, IThemeSpecific, IBrowserView, IColumn)
    1:     template = ViewPageTemplateFile('templates/portlets-column.pt')
       
    1:     def portlet_states(self, hash):
>>>>>> return self._portlets_states().get(hash, {})
1: @memoize def _portlets_states(self): """Returns portlets states settings for currently logged in user."""
>>>>>> user = getSecurityManager().getUser()
>>>>>> if not user or getattr(user, 'name', '') == 'Anonymous User':
>>>>>> return {}
>>>>>> portal = getToolByName(self.context, 'portal_url').getPortalObject()
>>>>>> annotations = IAnnotations(portal)
>>>>>> users = annotations.get(PORTLETS_STATES_ANNO_KEY, None)
>>>>>> if users is None:
>>>>>> return {}
>>>>>> userid = getattr(user, '_id', user.getId())
>>>>>> return users.get(userid, {})
2: class DashboardPortletManagerRenderer(ColumnPortletManagerRenderer): """Render a column of the dashboard 1: """ 1: adapts(Interface, IThemeSpecific, IBrowserView, IDashboard) 1: template = ViewPageTemplateFile('templates/portlets-dashboard-column.pt') 2: class EditPortletManagerRenderer(editmanager.EditPortletManagerRenderer): 1: adapts(Interface, IThemeSpecific, IManageColumnPortletsView, 1: IPortletManager) 2: class ContextualEditPortletManagerRenderer( 1: editmanager.ContextualEditPortletManagerRenderer): 1: adapts(Interface, IThemeSpecific, IManageContextualPortletsView, 1: IPortletManager) 2: class DashboardEditPortletManagerRenderer( 1: editmanager.DashboardEditPortletManagerRenderer): 1: adapts(Interface, IThemeSpecific, IManageDashboardPortletsView, 1: IDashboard) 1: ANONYMOUS_KEY = 'AnonymousUsers' '''List of the names of the portlets that are allowed to be shown in @@manage-group-dashboard?key=AnonymousUsers. The name is the last part of the path in the <option> value. ''' allowed_portlets = [ 1: 'plone.portlet.static.Static', 1: 'portlets.Calendar', 1: 'portlets.Events', 1: 'portlets.News', 1: 'collective.plonetruegallery.gallery', 1: 'portlets.rss', 1: 'portlets.Recent', 1: 'portlets.Search', 1: 'vnccollab.theme.portlets.WorldClockPortlet', ] 1: def is_anonymous_group(self): '''true if we are viewing the dashboard for anonymous homepage.''' 12: return self.request.get('key', '') == self.ANONYMOUS_KEY 1: def addable_portlets(self): '''Overrides parent's portlets to show only a few, if it's for anonymous group.''' 12: portlets = editmanager.DashboardEditPortletManagerRenderer. \ 12: addable_portlets(self) 12: if self.is_anonymous_group(): 8: allowed = [] 176: for portlet in portlets: 168: name = portlet['addview'].split('/')[-1] 168: if name in self.allowed_portlets: 72: allowed.append(portlet) 8: return allowed else: 4: return portlets