def registerMarker(marker, event): site = findSite(event.newParent) if site: sm = site.getSiteManager() marker.updateIdentifier() for iface_type in REGISTERED_TYPES: sm.registerUtility(marker, iface_type, marker.__identifier__)
def unregister_marker(marker, event): site = findSite(event.oldParent) for item in marker.markedObjects(): IMarkManager(item).remove_marker(marker.__identifier__) if site: sm = site.getSiteManager() for iface_type in REGISTERED_TYPES: sm.unregisterUtility(marker, iface_type, marker.__identifier__)
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