示例#1
0
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__)
示例#2
0
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