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
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
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))
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
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
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())
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)
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)
def __init__(self, context, request): super(InterfacesView, self).__init__(context, request) self.adapted = IMarkerInterfaces(context) self.context_url = self.context.absolute_url()
def __init__(self, context, request): self.context = context self.request = request self.adapted = IMarkerInterfaces(context) self.context_url = self.context.absolute_url()
def availableInterfaces(self): items = [(x.lower(), x) for x \ in IMarkerInterfaces(self.context).getAvailableInterfaceNames()] items.sort() return [x[1] for x in items]
def __init__(self, object): self.object = object self.adapted = IMarkerInterfaces(self.object)
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"