def iter_portlet_registrations(self): gsm = getGlobalSiteManager() sm = getSiteManager() layer_precedence = self.layer_precedence() for reg in itertools.chain(gsm.registeredAdapters(), sm.registeredAdapters()): if len(reg.required) != 5: continue if reg.required[1] not in layer_precedence: continue if IPortletRenderer.implementedBy(reg.factory) or ITTWViewTemplate.providedBy(reg.factory): yield reg
def getViewClassFromRegistration(reg): # The view class is generally auto-generated, we usually want # the first base class, though if the view only has one base # (generally object or BrowserView) we return the full class # and hope that it can be pickled if IPortletRenderer.implementedBy(reg.factory): return reg.factory klass = reg.factory base = klass.__bases__[0] if base is BrowserView or base is object: return klass return base
def templateViewRegistrations(): regs = [] for reg in getViews(IBrowserRequest): factory = reg.factory while hasattr(factory, 'factory'): factory = factory.factory # TODO: this should really be dealt with using # a marker interface on the view factory name = getattr(factory, '__name__', '') if name.startswith('SimpleViewClass') or \ name.startswith('SimpleViewletClass') or \ name.endswith('Viewlet') or \ IViewlet.implementedBy(factory) or \ IPortletRenderer.implementedBy(factory): attr, pt = findViewletTemplate(factory) if pt: reg.ptname = basename(pt.filename) else: reg.ptname = None regs.append(reg) return regs