def _setDefaultCataloging(self, value): """ Toggle whether '_reindexWorkflowVariables' actually touches the catalog (sometimes not desirable, e.g. when the workflow objects do this themselves only at particular points). """ self._default_cataloging = bool(value) security.declarePrivate('_reindexWorkflowVariables') def _reindexWorkflowVariables(self, ob): """ Reindex the variables that the workflow may have changed. Also reindexes the security. """ if not self._default_cataloging: return if hasattr(aq_base(ob), 'reindexObject'): # XXX We only need the keys here, no need to compute values. mapping = self.getCatalogVariablesFor(ob) or {} vars = mapping.keys() ob.reindexObject(idxs=vars) # Reindex security of subobjects. if hasattr(aq_base(ob), 'reindexObjectSecurity'): ob.reindexObjectSecurity() InitializeClass(WorkflowTool) registerToolInterface('portal_workflow', IWorkflowTool)
# We should not normally get here. return 'Logged out.' security.declarePublic('propertyLabel') def propertyLabel(self, id): """Return a label for the given property id """ for p in self._properties: if p['id'] == id: return p.get('label', id) return id Globals.InitializeClass(CookieCrumbler) registerToolInterface('cookie_authentication', ICookieCrumbler) def handleCookieCrumblerEvent(ob, event): """ Event subscriber for (un)registering a CC as a before traverse hook. """ if not ICookieCrumbler.providedBy(ob): return if IObjectMovedEvent.providedBy(event): if event.newParent is not None: # register before traverse hook handle = ob.meta_type + '/' + ob.getId() nc = BeforeTraverse.NameCaller(ob.getId()) BeforeTraverse.registerBeforeTraverse(event.newParent, nc, handle) elif IObjectWillBeMovedEvent.providedBy(event):
""" self._members[id] = aq_base(m) security.declarePrivate('deleteMemberData') def deleteMemberData(self, member_id): """ Delete member data of specified member. """ members = self._members if members.has_key(member_id): del members[member_id] return 1 else: return 0 InitializeClass(MemberDataTool) registerToolInterface('portal_memberdata', IMemberDataTool) class CleanupTemp: """Used to cleanup _v_temps at the end of the request.""" def __init__(self, tool): self._tool = tool def __del__(self): try: del self._tool._v_temps except (AttributeError, KeyError): # The object has already been deactivated. pass
security.declarePrivate('deleteMemberData') def deleteMemberData(self, member_id): """ Delete member data of specified member. """ members = self._members if members.has_key(member_id): del members[member_id] return 1 else: return 0 InitializeClass(MemberDataTool) registerToolInterface('portal_memberdata', IMemberDataTool) class CleanupTemp: """Used to cleanup _v_temps at the end of the request.""" def __init__(self, tool): self._tool = tool def __del__(self): try: del self._tool._v_temps except (AttributeError, KeyError): # The object has already been deactivated. pass
security.declarePrivate('unindexObject') def unindexObject(self, object): """Remove from catalog. """ url = self.__url(object) self.uncatalog_object(url) security.declarePrivate('reindexObject') def reindexObject(self, object, idxs=[], update_metadata=1, uid=None): """Update catalog after object data has changed. The optional idxs argument is a list of specific indexes to update (all of them by default). The update_metadata flag controls whether the object's metadata record is updated as well. If a non-None uid is passed, it will be used as the catalog uid for the object instead of its physical path. """ if uid is None: uid = self.__url(object) if idxs != []: # Filter out invalid indexes. valid_indexes = self._catalog.indexes.keys() idxs = [i for i in idxs if i in valid_indexes] self.catalog_object(object, uid, idxs, update_metadata) InitializeClass(CatalogTool) registerToolInterface('portal_catalog', ICatalogTool)
security.declareProtected(ManagePortal, 'addSkinSelection') def addSkinSelection(self, skinname, skinpath, test=0, make_default=0): ''' Adds a skin selection. ''' sels = self._getSelections() skinpath = str(skinpath) # Basic precaution to make sure the stuff we want to ignore in # DirectoryViews gets prevented from ending up in a skin path path_elems = [x.strip() for x in skinpath.split(',')] ignored = base_ignore + ignore for elem in path_elems[:]: if elem in ignored or ignore_re.match(elem): path_elems.remove(elem) skinpath = ','.join(path_elems) if test: self.testSkinPath(skinpath) sels[str(skinname)] = skinpath if make_default: self.default_skin = skinname InitializeClass(SkinsTool) registerToolInterface('portal_skins', ISkinsTool)
""" Toggle whether '_reindexWorkflowVariables' actually touches the catalog (sometimes not desirable, e.g. when the workflow objects do this themselves only at particular points). """ self._default_cataloging = bool(value) security.declarePrivate('_reindexWorkflowVariables') def _reindexWorkflowVariables(self, ob): """ Reindex the variables that the workflow may have changed. Also reindexes the security. """ if not self._default_cataloging: return if hasattr(aq_base(ob), 'reindexObject'): # XXX We only need the keys here, no need to compute values. mapping = self.getCatalogVariablesFor(ob) or {} vars = mapping.keys() ob.reindexObject(idxs=vars) # Reindex security of subobjects. if hasattr(aq_base(ob), 'reindexObjectSecurity'): ob.reindexObjectSecurity() InitializeClass(WorkflowTool) registerToolInterface('portal_workflow', IWorkflowTool)
security.declarePublic('getRelativeContentPath') def getRelativeContentPath(self, content): """ Get the path for an object, relative to the portal root. """ portal_path_length = len(self.getPortalObject().getPhysicalPath()) content_path = content.getPhysicalPath() return content_path[portal_path_length:] security.declarePublic('getRelativeContentURL') def getRelativeContentURL(self, content): """ Get the URL for an object, relative to the portal root. """ return '/'.join(self.getRelativeContentPath(content)) security.declarePublic('getRelativeUrl') getRelativeUrl = getRelativeContentURL security.declarePublic('getPortalPath') def getPortalPath(self): """ Get the portal object's URL without the server URL component. """ return '/'.join(self.getPortalObject().getPhysicalPath()) InitializeClass(URLTool) registerToolInterface('portal_url', IURLTool)
) return transactions security.declarePublic('undo') def undo(self, object, transaction_info): """ Undo the list of transactions passed in 'transaction_info', first verifying that the current user is allowed to undo them. """ # Belt and suspenders: make sure that the user is actually # allowed to undo the transation(s) in transaction_info. xids = {} # set of allowed transaction IDs allowed = self.listUndoableTransactionsFor( object ) for xid in map( lambda x: x['id'], allowed ): xids[xid] = 1 if type( transaction_info ) == type( '' ): transaction_info = [ transaction_info ] for tinfo in transaction_info: if not xids.get( tinfo, None ): raise AccessControl_Unauthorized object.manage_undo_transactions(transaction_info) InitializeClass(UndoTool) registerToolInterface('portal_undo', IUndoTool)
def listActions(self, info=None, object=None): """ List all the actions defined by a provider. """ actions = list( self._actions ) if object is None and info is not None: object = info.object if object is not None: type_info = self.getTypeInfo(object) if type_info is not None: actions.extend( type_info.listActions() ) return actions security.declareProtected(ManagePortal, 'listMethodAliasKeys') def listMethodAliasKeys(self): """ List all defined method alias names. """ _dict = {} for ti in self.listTypeInfo(): aliases = ti.getMethodAliases() for k, v in aliases.items(): _dict[k] = 1 rval = _dict.keys() rval.sort() return rval InitializeClass(TypesTool) registerToolInterface('portal_types', ITypesTool)
resp.expireCookie(self.request_varname, path=portal_path) security.declareProtected(ManagePortal, 'addSkinSelection') def addSkinSelection(self, skinname, skinpath, test=0, make_default=0): ''' Adds a skin selection. ''' sels = self._getSelections() skinpath = str(skinpath) # Basic precaution to make sure the stuff we want to ignore in # DirectoryViews gets prevented from ending up in a skin path path_elems = [x.strip() for x in skinpath.split(',')] ignored = base_ignore + ignore for elem in path_elems[:]: if elem in ignored or ignore_re.match(elem): path_elems.remove(elem) skinpath = ','.join(path_elems) if test: self.testSkinPath(skinpath) sels[str(skinname)] = skinpath if make_default: self.default_skin = skinname InitializeClass(SkinsTool) registerToolInterface('portal_skins', ISkinsTool)
""" List all the actions defined by a provider. """ actions = list(self._actions) if object is None and info is not None: object = info.object if object is not None: type_info = self.getTypeInfo(object) if type_info is not None: actions.extend(type_info.listActions()) return actions security.declareProtected(ManagePortal, 'listMethodAliasKeys') def listMethodAliasKeys(self): """ List all defined method alias names. """ _dict = {} for ti in self.listTypeInfo(): aliases = ti.getMethodAliases() for k, v in aliases.items(): _dict[k] = 1 rval = _dict.keys() rval.sort() return rval InitializeClass(TypesTool) registerToolInterface('portal_types', ITypesTool)
for provider_name in self.listActionProviders(): provider = getattr(self, provider_name) if IActionProvider.providedBy(provider) or \ z2IActionProvider.isImplementedBy(provider): actions.extend(provider.listActionInfos(object=object)) # Include actions from object. if object is not None: if IActionProvider.providedBy(object) or \ z2IActionProvider.isImplementedBy(object): actions.extend(object.listActionInfos(object=object)) # Reorganize the actions by category. filtered_actions = { 'user': [], 'folder': [], 'object': [], 'global': [], 'workflow': [], } for action in actions: catlist = filtered_actions.setdefault(action['category'], []) catlist.append(action) return filtered_actions InitializeClass(ActionsTool) registerToolInterface('portal_actions', IActionsTool)
# Include actions from specific tools. for provider_name in self.listActionProviders(): provider = getattr(self, provider_name) if IActionProvider.providedBy(provider) or \ z2IActionProvider.isImplementedBy(provider): actions.extend( provider.listActionInfos(object=object) ) # Include actions from object. if object is not None: if IActionProvider.providedBy(object) or \ z2IActionProvider.isImplementedBy(object): actions.extend( object.listActionInfos(object=object) ) # Reorganize the actions by category. filtered_actions={'user':[], 'folder':[], 'object':[], 'global':[], 'workflow':[], } for action in actions: catlist = filtered_actions.setdefault(action['category'], []) catlist.append(action) return filtered_actions InitializeClass(ActionsTool) registerToolInterface('portal_actions', IActionsTool)
if site is None: # fallback return aq_parent(aq_inner(self)) return site security.declarePublic('getRelativeContentPath') def getRelativeContentPath(self, content): """ Get the path for an object, relative to the portal root. """ portal_path_length = len( self.getPortalObject().getPhysicalPath() ) content_path = content.getPhysicalPath() return content_path[portal_path_length:] security.declarePublic('getRelativeContentURL') def getRelativeContentURL(self, content): """ Get the URL for an object, relative to the portal root. """ return '/'.join( self.getRelativeContentPath(content) ) security.declarePublic('getRelativeUrl') getRelativeUrl = getRelativeContentURL security.declarePublic('getPortalPath') def getPortalPath(self): """ Get the portal object's URL without the server URL component. """ return '/'.join( self.getPortalObject().getPhysicalPath() ) InitializeClass(URLTool) registerToolInterface('portal_url', IURLTool)
# def findTypeName( self, name, typ, body ): """ Perform a lookup over a collection of rules, returning the the name of the Type object corresponding to name/typ/body. Return None if no match found. """ for predicate_id in self.predicate_ids: pred, typeObjectName = self.predicates[ predicate_id ] if pred( name, typ, body ): return typeObjectName return None InitializeClass( ContentTypeRegistry ) registerToolInterface('content_type_registry', IContentTypeRegistry) def manage_addRegistry( self, REQUEST=None ): """ Add a CTR to self. """ CTRID = ContentTypeRegistry.id reg = ContentTypeRegistry() self._setObject( CTRID, reg ) reg = self._getOb( CTRID ) if REQUEST is not None: REQUEST[ 'RESPONSE' ].redirect( self.absolute_url() + '/manage_main' + '?manage_tabs_message=Registry+added.' )
# security.declarePrivate('ZCacheManager_getCache') def ZCacheManager_getCache(self): """ Retrieve a cache object """ cache = getattr(self, '_cache', None) if cache is None: self._cache = CPMCache() cache = self._cache return cache InitializeClass( CachingPolicyManager ) registerToolInterface('caching_policy_manager', ICachingPolicyManager) def handleCachingPolicyManagerEvent(ob, event): """ Event subscriber for (un)registering a CPM as CacheManager """ if not ICachingPolicyManager.providedBy(ob): return if IObjectMovedEvent.providedBy(event): if event.newParent is not None: ids = getVerifiedManagerIds(event.newParent) id = ob.getId() if id not in ids: setattr(event.newParent, ZCM_MANAGERS, ids + (id,))
def findTypeName(self, name, typ, body): """ Perform a lookup over a collection of rules, returning the the name of the Type object corresponding to name/typ/body. Return None if no match found. """ for predicate_id in self.predicate_ids: pred, typeObjectName = self.predicates[predicate_id] if pred(name, typ, body): return typeObjectName return None InitializeClass(ContentTypeRegistry) registerToolInterface('content_type_registry', IContentTypeRegistry) def manage_addRegistry(self, REQUEST=None): """ Add a CTR to self. """ CTRID = ContentTypeRegistry.id reg = ContentTypeRegistry() self._setObject(CTRID, reg) reg = self._getOb(CTRID) if REQUEST is not None: REQUEST['RESPONSE'].redirect(self.absolute_url() + '/manage_main' + '?manage_tabs_message=Registry+added.')