def _entry(self, reg, sitename): """Build a ViewInfo from the registration info. """ if ITemplateNotCustomizable.implementedBy(reg.factory): return None entry = queryAdapterOnClass(reg.factory, interfaces.IViewInfo) if entry is None: entry = queryAdapter(reg.factory, interfaces.IViewInfo) if entry is None: if isAFiveTemplate(reg.factory): entry = FiveViewInfo(reg.factory) if not (entry is None): entry.origin = sitename entry.registration = reg return entry
def customize(self, where, customized_for=None, customized_layer=None): if customized_for is None: customized_for = self.registration.required[0] if customized_layer is None: customized_layer = self.registration.required[1] template_id = str(self.generateId()) viewclass = self._view() if ITemplateNotCustomizable.implementedBy(viewclass): raise ValueError, "This view don't want to be customized." permission = self.permission() service = getUtility(interfaces.ICustomizationService) site = findSite(service) if ICustomizedTemplate.providedBy(self.context): if self.origin == u'/'.join(site.getPhysicalPath()): raise ValueError( u"This template have been already customized " u"in the same directory.") new_template = TTWViewTemplate(template_id, self.code, view=viewclass, permission=permission) service._setObject(template_id, new_template) new_template = getattr(service, template_id) required = list(self.registration.required) required[0] = customized_for required[1] = customized_layer manager = site.getSiteManager() manager.registerAdapter(new_template, required=tuple(required), provided=self.registration.provided, name=self.registration.name) return new_template