Test coverage for vnccollab.theme.browser.homepage
vnccollab/ | | covered 69% (1245 of 4098 uncovered) |
theme/ | | covered 69% (1245 of 4098 uncovered) |
browser/ | | covered 74% (507 of 1985 uncovered) |
homepage.py | | covered 90% (8 of 80 uncovered) |
1: from Acquisition import aq_inner
1: from ZODB.POSException import ConflictError
1: from zope.component import getUtility
1: from zope.interface import Interface, implements, alsoProvides
1: from plone.memoize.view import memoize
1: from plone.portlets.interfaces import IPortletManager, \
IPortletAssignmentSettings
1: from plone.portlets.constants import GROUP_CATEGORY
1: from plone.portlets.manager import PortletManagerRenderer, logger
1: from plone.portlets.utils import hashPortletInfo
1: from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
1: from Products.CMFCore.utils import getToolByName
1: from ..config import HP_NEWS_LIMIT
1: from .dashboard import DashboardView
2: class IHomePageView(Interface):
1: """Homepage Default View"""
2: class IAnonymousHomePageView(IHomePageView):
1: """Marker interface for anonymous homepage version"""
2: class HomePageColumnsRenderer(PortletManagerRenderer):
1: @memoize
def _lazyLoadPortlets(self, manager):
4: items = []
# below assignments attribute should be assigned by parent code
5: for p in self.filter(self.assignments):
1: renderer = self._dataToPortlet(p['assignment'].data)
1: info = p.copy()
1: info['manager'] = self.manager.__name__
1: info['renderer'] = renderer
1: hashPortletInfo(info)
# Record metadata on the renderer
1: renderer.__portlet_metadata__ = info.copy()
1: del renderer.__portlet_metadata__['renderer']
1: try:
1: isAvailable = renderer.available
>>>>>> except ConflictError:
>>>>>> raise
>>>>>> except Exception, e:
>>>>>> isAvailable = False
>>>>>> logger.exception(
>>>>>> "Error while determining renderer availability of portlet "
"(%r %r %r): %s" % (
>>>>>> p['category'], p['key'], p['name'], str(e)))
1: info['available'] = isAvailable
1: items.append(info)
4: return items
2: class HomePageView(DashboardView):
1: implements(IHomePageView)
1: _welcome_template = ViewPageTemplateFile('templates/homepage_view.pt')
1: _dashboard_template = ViewPageTemplateFile('templates/dashboard.pt')
1: def getNews(self):
2: catalog = getToolByName(self.context, 'portal_catalog')
2: return catalog(portal_type="News Item", sort_on='created',
2: sort_order='reverse',
2: sort_limit=HP_NEWS_LIMIT)[:HP_NEWS_LIMIT]
1: def __call__(self):
4: if self.is_anonymous():
2: alsoProvides(self, IAnonymousHomePageView)
4: return self.render()
1: def render(self):
4: if self.is_anonymous():
2: return self._welcome_template()
else:
2: return self._dashboard_template()
1: def getColumn(self, name, group='AnonymousUsers'):
8: column = getUtility(IPortletManager, name=name)
8: category = column[GROUP_CATEGORY]
8: mapping = category.get(group, None)
8: if mapping is None:
4: return u''
4: context = aq_inner(self.context)
4: assignments = []
5: for assignment in mapping.values():
1: settings = IPortletAssignmentSettings(assignment)
1: if not settings.get('visible', True):
>>>>>> continue
1: assignments.append({'category': GROUP_CATEGORY,
1: 'key': group,
1: 'name': assignment.__name__,
1: 'assignment': assignment
})
4: renderer = HomePageColumnsRenderer(context, self.request, self, column)
4: renderer.assignments = assignments
4: renderer.update()
4: return renderer.render()
1: def is_anonymous(self):
8: mt = getToolByName(self.context, 'portal_membership')
8: return mt.isAnonymousUser()