Exemplo n.º 1
0
def remove_marker_interfaces(object, interfaces):
    ''' Remove given marker interfaces from a given object.
    '''
    from Products.Five.utilities.interfaces import IMarkerInterfaces
    adapted_to_marker = IMarkerInterfaces(object)
    remove = adapted_to_marker.dottedToInterfaces(interfaces)
    adapted_to_marker.update(remove=remove)

    return True
Exemplo n.º 2
0
def add_marker_interfaces(object, interfaces):
    ''' Add given marker interfaces to a given object.
    '''
    from Products.Five.utilities.interfaces import IMarkerInterfaces
    adapted_to_marker = IMarkerInterfaces(object)
    add = adapted_to_marker.dottedToInterfaces(interfaces)
    adapted_to_marker.update(add=add)

    return True
Exemplo n.º 3
0
    def _initMarkers(self, node):
        markers = []
        adapted = IMarkerInterfaces(self.context)

        for child in node.childNodes:
            if child.nodeName != 'marker':
                continue
            markers.append(str(child.getAttribute('name')))

        adapted.update(adapted.dottedToInterfaces(markers))
Exemplo n.º 4
0
    def _extractMarkers(self):
        fragment = self._doc.createDocumentFragment()
        adapted = IMarkerInterfaces(self.context)

        for marker_id in adapted.getDirectlyProvidedNames():
            node = self._doc.createElement('marker')
            node.setAttribute('name', marker_id)
            fragment.appendChild(node)

        return fragment
Exemplo n.º 5
0
    def object_provides(self):
        """ Context object_provides
        """
        if not self.adapted:
            self.adapted = IMarkerInterfaces(self.context)

        ifaces = self.adapted.getDirectlyProvidedNames()
        ifaces.extend(self.adapted.getInterfaceNames())

        return ifaces
Exemplo n.º 6
0
    def __call__(self, deact=0):
        context = aq_inner(self.context)
        adapted = IMarkerInterfaces(context)
        if not deact:
            adapted.update(add=[IBlog], remove=[])
            self.prepare_blog()
            message = _('Blog enabled correctly')
            notify(BlogEnabled(context))
            IStatusMessage(self.request).add(message)
        else:
            adapted.update(add=[], remove=[IBlog])
            notify(BlogDisabled(context))
            message = _('Blog disabled correctly')
            IStatusMessage(self.request).add(message)

        return self.request.response.redirect(context.absolute_url())
Exemplo n.º 7
0
    def del_marker(obj, interfaces):
        '''Remove marker-interfaces from an object

:param object obj: The object to remove the marker-interface from.
:param list interfaces: A list of interfaces (as strings) to delete from
                        the object.
:returns: ``None``

Group-types are usually implemented as marker interfaces on a group-folder.
This metehod removes (deltes) the marker interfaces from the object.

For example::

        iFaces = ['gs.group.type.closed.interfaces.IGSClosedGroup']
        self.del_marker(self.group, iFaces)
'''
        adaptedToMarker = IMarkerInterfaces(obj)
        remove = adaptedToMarker.dottedToInterfaces(interfaces)
        adaptedToMarker.update(remove=remove)
Exemplo n.º 8
0
    def add_marker(obj, interfaces):
        '''Add marker-interfaces to an object

:param object obj: The object to add the marker-interface to.
:param list interfaces: A list of interfaces (as strings) to add to the
                        object.
:returns: ``None``

Group-types are usually implemented as marker interfaces on a group-folder.
This metehod adds the marker interfaces to the object. For example::

        iFaces = ['gs.group.type.closed.interfaces.IGSClosedGroup']
        self.add_marker(self.group, iFaces)

It should be assumed that the previous group-settings have been removed by
an earlier call to :meth:`gs.group.type.set.UnsetABC.unset`.
'''
        adaptedToMarker = IMarkerInterfaces(obj)
        add = adaptedToMarker.dottedToInterfaces(interfaces)
        adaptedToMarker.update(add=add)
Exemplo n.º 9
0
 def __init__(self, context, request):
     super(InterfacesView, self).__init__(context, request)
     self.adapted = IMarkerInterfaces(context)
     self.context_url = self.context.absolute_url()
Exemplo n.º 10
0
 def __init__(self, context, request):
     self.context = context
     self.request = request
     self.adapted = IMarkerInterfaces(context)
     self.context_url = self.context.absolute_url()
Exemplo n.º 11
0
 def availableInterfaces(self):
     items = [(x.lower(), x) for x \
         in IMarkerInterfaces(self.context).getAvailableInterfaceNames()]
     items.sort()
     return [x[1] for x in items]
Exemplo n.º 12
0
 def __init__(self, object):
     self.object = object
     self.adapted = IMarkerInterfaces(self.object)
Exemplo n.º 13
0
    def render(self):
        cat = getToolByName(self.context, 'portal_catalog')
        query = dict(portal_type='Folder', Language='en')
        res = cat(query)
        log.info('Total no. of folders found: {0}'.format(len(res)))
        for r in res:
            if r.getPath().split('/')[2] != 'en':
                log.warning(
                    "Found a folder with lang EN not under /en: {0}".format(
                        r.getPath()))
                continue
            obj = r.getObject()
            if not ITranslatable.providedBy(obj):
                log.warning(
                    'Found a folder that is not translatable, WTF: {0}'.format(
                        r.getPath()))
                continue
            ordering = obj.getOrdering()
            order = ordering.idsInOrder()
            tm = ITranslationManager(obj)
            log.info('Handling folder {0}.'.format('/'.join(
                obj.getPhysicalPath())))
            for lang, trans in tm.get_translations().items():
                if lang == 'en':
                    continue
                # Copy "Exclude from navigation", section images and related sites
                trans.exclude_from_nav = obj.exclude_from_nav
                IRelatedSites(trans).related_sites_links = IRelatedSites(
                    obj).related_sites_links
                ISectionImage(trans).section_image = ISectionImage(
                    obj).section_image
                # Copy over marker interfaces
                ifaces_to_add = IMarkerInterfaces(
                    obj).getDirectlyProvidedNames()
                if len(ifaces_to_add):
                    t_ifaces = IMarkerInterfaces(trans)
                    add = t_ifaces.dottedToInterfaces(ifaces_to_add)
                    t_ifaces.update(add=add, remove=list())
                # handle the default page settings
                prop = 'default_page'
                propval = aq_base(obj).getProperty(prop, None)
                if propval:
                    # get translation of default-page, if it exists (since the id might be different!)
                    default_page = getattr(obj, propval, None)
                    t_default_page = default_page and ITranslationManager(
                        default_page).get_translation(lang)
                    if not t_default_page:
                        continue
                    # check if marker interfaces need to be copied
                    dp_ifaces_to_add = IMarkerInterfaces(
                        default_page).getDirectlyProvidedNames()
                    if len(dp_ifaces_to_add):
                        t_dp_ifaces = IMarkerInterfaces(t_default_page)
                        add = t_dp_ifaces.dottedToInterfaces(dp_ifaces_to_add)
                        t_dp_ifaces.update(add=add, remove=list())
                    if aq_base(trans).hasProperty(prop):
                        trans._delProperty(prop)
                    trans._setProperty(id=prop,
                                       value=t_default_page.id,
                                       type="string")
                # now set the correct order
                t_ordering = trans.getOrdering()
                t_order = t_ordering.idsInOrder()
                for i in range(len(order)):
                    if order[i] in t_order:
                        t_ordering.moveObjectToPosition(order[i],
                                                        i,
                                                        suppress_events=True)
                if t_order != t_ordering.idsInOrder():
                    trans.reindexObject()

        log.info('Now, fix FOP languages')
        results = cat(portal_type="osha.hwccontent.focalpoint", Language='all')
        fopcnt = 0
        for res in results:
            fop = res.getObject()
            if fop.Language() != '':
                fop.setLanguage('')
                fop.reindexObject()
                fopcnt += 1
        log.info('Reset the language on {0} FOPs'.format(fopcnt))
        return "ok"