Exemple #1
0
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
Exemple #2
0
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
Exemple #5
0
 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
Exemple #6
0
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
Exemple #7
0
 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
Exemple #8
0
 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
Exemple #9
0
    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
Exemple #10
0
    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