def dumpPortalViewCustomization(context): result = [] components = getSiteManager(context) localregs = [reg for reg in components.registeredAdapters() if (len(reg.required) in (2, 4, 5) and reg.required[1].isOrExtends(IBrowserRequest) and ITTWViewTemplate.providedBy(reg.factory))] container = getUtility(IViewTemplateContainer) # import pdb;pdb.set_trace() for lreg in localregs: # ttw_id = generateIdFromRegistration(lreg) ttw_id = lreg.factory.__name__ if ttw_id not in container.objectIds(): continue ttw = getattr(container, ttw_id) ttw_info = {'for_name' : interfaceName(lreg.required[0]), 'type_name' : interfaceName(lreg.required[-1]), 'view_name' : lreg.name, 'kwargs' : {'text' : ttw._text, 'content_type' : ttw.content_type, 'encoding' : ttw.output_encoding, }} result.append(ttw_info) return result
def templateViewRegistrationInfos(regs, mangle=True): for reg in regs: if ITTWViewTemplate.providedBy(reg.factory): zptfile = None zcmlfile = None name = reg.name or reg.factory.name customized = reg.factory.getId() # TODO: can we get an absolute url? else: attr, pt = findViewletTemplate(reg.factory) if attr is None: # skip, if the factory has no template... continue zptfile = pt.filename zcmlfile = getattr(reg.info, 'file', None) if mangle: zptfile = mangleAbsoluteFilename(zptfile) zcmlfile = zcmlfile and mangleAbsoluteFilename(zcmlfile) name = reg.name or basename(zptfile) customized = None required = [interfaceName(r) for r in reg.required] required_str = ','.join(required) customize_url = '@@customizezpt.html?required=%s&view_name=%s' % ( required_str, name) yield { 'viewname': name, 'required': required_str, 'for': required[0], 'type': required[1], 'zptfile': zptfile, 'zcmlfile': zcmlfile or 'n.a.', 'customized': customized, 'customize_url': customize_url, }
def templateViewRegistrationInfos(regs, mangle=True): for reg in regs: if ITTWViewTemplate.providedBy(reg.factory): zptfile = None zcmlfile = None name = reg.name or reg.factory.name customized = reg.factory.getId( ) # TODO: can we get an absolute url? else: attr, pt = findViewletTemplate(reg.factory) if attr is None: # skip, if the factory has no template... continue zptfile = pt.filename zcmlfile = getattr(reg.info, 'file', None) if mangle: zptfile = mangleAbsoluteFilename(zptfile) zcmlfile = zcmlfile and mangleAbsoluteFilename(zcmlfile) name = reg.name or basename(zptfile) customized = None required = [interfaceName(r) for r in reg.required] required_str = ','.join(required) customize_url = '@@customizezpt.html?required=%s&view_name=%s' % ( required_str, name) yield { 'viewname': name, 'required': required_str, 'for': required[0], 'type': required[1], 'zptfile': zptfile, 'zcmlfile': zcmlfile or 'n.a.', 'customized': customized, 'customize_url': customize_url, }
def getLocalRegistrations(self): layers = getAllUtilitiesRegisteredFor(ILocalBrowserLayerType) components = getSiteManager(self.context) for reg in components.registeredAdapters(): if (len(reg.required) in (2, 4, 5) and (reg.required[1].isOrExtends(IBrowserRequest) or reg.required[1] in layers) and ITTWViewTemplate.providedBy(reg.factory)): yield reg
def getViews(): results = [] for reg in templateViewRegistrations(): if ITTWViewTemplate.providedBy(reg.factory): continue else: attr, pt = findViewletTemplate(reg.factory) if attr is None: # skip, if the factory has no template... continue results.append(pt) return results
def iter_viewlet_registrations(self): gsm = getGlobalSiteManager() sm = getSiteManager() layer_precedence = self.layer_precedence() for reg in itertools.chain(gsm.registeredAdapters(), sm.registeredAdapters()): if len(reg.required) != 4: continue if reg.required[1] not in layer_precedence: continue if IViewlet.implementedBy(reg.factory) or ITTWViewTemplate.providedBy(reg.factory): yield reg
def iter_view_registrations(self): gsm = getGlobalSiteManager() sm = getSiteManager() layer_precedence = self.layer_precedence() for reg in itertools.chain(gsm.registeredAdapters(), sm.registeredAdapters()): if len(reg.required) != 2: continue if reg.required[1] not in layer_precedence: continue if getattr(reg.factory, '__name__', '').startswith('SimpleViewClass') \ or ITTWViewTemplate.providedBy(reg.factory): yield reg
def __iter__(self): """ Returns an iterator enumerating the resources of this type. """ pvc = getToolByName(getSite(), 'portal_view_customizations') layer_precedence = self.layer_precedence() by_layer_precedence_and_ttwness = lambda x: (layer_precedence.index(x.required[1]), int(not ITTWViewTemplate.providedBy(x.factory))) regs = sorted(self.iter_view_registrations(), key=by_layer_precedence_and_ttwness) for info in templateViewRegistrationInfos(regs, mangle=False): required = info['required'].split(',') res = ViewResourceRegistration() res.name = info['viewname'] res.context = context = required[0] if context == 'zope.interface.Interface': context = '*' res.description = translate(_('View for X', default = u'View for ${context}', mapping = {u'context': context})) res.layer = required[1] res.actions = [] res.tags = ['template'] res.path = None if info['customized']: res.tags.append('customized') obj = getattr(pvc, info['customized']) res.path = '/'.join(obj.getPhysicalPath()) res.text = obj._text res.info = translate(_('In the database', default = u'In the database: ${path}', mapping = {'path': res.path})) res.actions.append(('Edit', obj.absolute_url() + '/manage_main')) remove_url = pvc.absolute_url() + '/manage_delObjects?ids=' + info['customized'] res.actions.append(('Remove', remove_url)) else: res.path = info['zptfile'] res.info = translate(_(u"On the filesystem", default=u"On the filesystem: ${path}", mapping={u"path" : res.path})) view_url = pvc.absolute_url() + '/@@customizezpt.html?required=%s&view_name=%s' % (info['required'], info['viewname']) res.actions.append(('View', view_url)) name = info['viewname'].lower() if name.endswith('.css'): res.tags.append('stylesheet') elif name.endswith('.js'): res.tags.append('javascript') elif name.endswith('.kss'): res.tags.append('kss') elif name.endswith('.jpg') or name.endswith('.gif') or name.endswith('.png'): res.tags.append('image') yield res
def __iter__(self): """ Returns an iterator enumerating the resources of this type. """ pvc = getToolByName(getSite(), 'portal_view_customizations') layer_precedence = self.layer_precedence() by_layer_precedence_and_ttwness = lambda x: (layer_precedence.index(x.required[1]), int(not ITTWViewTemplate.providedBy(x.factory))) regs = sorted(self.iter_viewlet_registrations(), key=by_layer_precedence_and_ttwness) for info in templateViewRegistrationInfos(regs, mangle=False): required = info['required'].split(',') res = ViewletResourceRegistration() res.name = info['viewname'] res.context = required[0], required[3] if required[0] == 'zope.interface.Interface': res.description = 'Viewlet for *' else: res.description = u'Viewlet for %s' % required[0] res.description += ' in the %s manager' % required[3] res.layer = required[1] res.actions = [] res.path = None res.customized = bool(info['customized']) res.tags = ['viewlet'] if info['customized']: res.tags.append('customized') obj = getattr(pvc, info['customized']) res.text = obj._text res.path = '/'.join(obj.getPhysicalPath()) res.info = translate(_(u"In the database", default=u"In the database: ${path}", mapping={u"path" : res.path})) res.actions.append((PMF(u'Edit'), obj.absolute_url() + '/manage_main')) remove_url = pvc.absolute_url() + '/manage_delObjects?ids=' + info['customized'] res.actions.append((PMF(u'Remove'), remove_url)) else: res.info = translate(_('On the filesystem', default = u'On the filesystem: ${path}', mapping = {'path': info['zptfile']})) res.path = info['zptfile'] view_url = pvc.absolute_url() + '/@@customizezpt.html?required=%s&view_name=%s' % (info['required'], info['viewname']) res.actions.append((PMF(u'View'), view_url)) yield res