def manage_hook(self, hook=0): """ """ if hook != self.hooked(): if hook: hook = NameCaller(self.id) registerBeforeTraverse(aq_parent(self), hook, self.meta_type) else: unregisterBeforeTraverse(aq_parent(self), self.meta_type)
def manage_hook(self, hook=0): """ """ if hook != self.hooked(): if hook: hook = NameCaller(self.id) registerBeforeTraverse(self.aq_parent, hook, self.meta_type) else: unregisterBeforeTraverse(self.aq_parent, self.meta_type)
def disableAccessEventHook(obj, hook_name): """Remove __before_traverse__ hook for Redirect Hook """ # We want the original object, not stuff in between, and no acquisition obj = aq_base(obj) unregisterBeforeTraverse(obj, hook_name) if hasattr(obj, hook_name): delattr(obj, hook_name)
def main(root): sdm = root._getOb('session_data_manager', None) if sdm is not None: sdm.updateTraversalData(requestSessionName='SESSION') unregisterBeforeTraverse(root, 'sessioncookie') root.sessioncookie_installed = False print('zope2.sessioncookie hook uninstalled!') transaction.commit()
def Localizer_moved(object, event): container = event.oldParent if container is not None: unregisterBeforeTraverse(container, object.meta_type) container = event.newParent if container is not None: id = object.id container = container.this() hook = NameCaller(id) registerBeforeTraverse(container, hook, object.meta_type)
def disableSite(self, obj, iface=ISite): # We need our own disableSite method as the CMF portal implements # ISite directly, so we cannot remove it, like the disableSite method # in Five.component would have done from ZPublisher.BeforeTraverse import unregisterBeforeTraverse from Products.Five.component import HOOK_NAME obj = aq_base(obj) if not iface.providedBy(obj): raise TypeError('Object must be a site.') unregisterBeforeTraverse(obj, HOOK_NAME) if hasattr(obj, HOOK_NAME): delattr(obj, HOOK_NAME)
def disableLocalSiteHook(obj): """Remove __before_traverse__ hook for Local Site """ # We want the original object, not stuff in between, and no acquisition obj = aq_base(obj) if not ISite.providedBy(obj): raise TypeError, 'Must provide ISite' unregisterBeforeTraverse(obj, HOOK_NAME) if hasattr(obj, HOOK_NAME): delattr(obj, HOOK_NAME) directlyProvides(obj, directlyProvidedBy(obj) - ISite)
def upgrade(self, root): # If it's a Five site manager disable it first. The annoying # part might be that the code might already have been removed # from Zope ... setattr(root, '__initialization__', True) if ISite.providedBy(root): sm = root.getSiteManager() if ((IFiveSiteManager is not None and IFiveSiteManager.providedBy(sm)) or isinstance(sm, ZODB.broken.Broken)): setSite(None) setHooks() unregisterBeforeTraverse(aq_base(root), '__local_site_hook__') if hasattr(aq_base(root), '__local_site_hook__'): delattr(aq_base(root), '__local_site_hook__') zope.interface.noLongerProvides(root, ISite) root.setSiteManager(None) else: # Cleanup broken utilities for registration in list(sm.registeredUtilities()): if isinstance(registration.component, ZODB.broken.Broken): sm.unregisterUtility( registration.component, registration.provided) # Activate local site, add an intid service. ism = interfaces.ISiteManager(root) if not ism.is_site(): ism.make_site() setSite(root) setHooks() # Delete unused Silva Document service for s in ['service_doc_previewer', 'service_nlist_previewer', 'service_sub_previewer',]: if hasattr(root, s): root.manage_delObjects([s,]) # Update service_files settings service_files = root.service_files if hasattr(aq_base(service_files), '_filesystem_storage_enabled'): service_files.storage = BlobFile delattr(service_files , '_filesystem_storage_enabled') elif service_files.storage is not BlobFile: # For the upgrade service_files.storage = BlobFile # Disable quota verification (but not accounting if this # enabled) during the migration, so the file migration can # safely happens. root.service_extensions._quota_verify = False return root
def disableSite(obj, iface=ISite): """Remove __before_traverse__ hook for Local Site """ # We want the original object, not stuff in between, and no acquisition obj = aq_base(obj) if not iface.providedBy(obj): raise TypeError('Object must be a site.') unregisterBeforeTraverse(obj, HOOK_NAME) if hasattr(obj, HOOK_NAME): delattr(obj, HOOK_NAME) zope.interface.noLongerProvides(obj, iface)
def updateTraversalData(self, requestSessionName=None): # Note this can't be called directly at add -- manage_afterAdd will # work though. parent = self.aq_inner.aq_parent if getattr(self,'_hasTraversalHook', None): unregisterBeforeTraverse(parent, 'BeakerSessionDataManager') del self._hasTraversalHook self._requestSessionName = None if requestSessionName: hook = SessionDataManagerTraverser(requestSessionName, self.id) registerBeforeTraverse(parent, hook, 'BeakerSessionDataManager', 50) self._hasTraversalHook = 1 self._requestSessionName = requestSessionName
def updateTraversalData(self, requestSessionName=None): # Note this cant be called directly at add -- manage_afterAdd will # work though. parent = self.aq_inner.aq_parent if getattr(self, '_hasTraversalHook', None): unregisterBeforeTraverse(parent, 'SessionDataManager') del self._hasTraversalHook self._requestSessionName = None if requestSessionName: hook = SessionDataManagerTraverser(requestSessionName, self.id) registerBeforeTraverse(parent, hook, 'SessionDataManager', 50) self._hasTraversalHook = 1 self._requestSessionName = requestSessionName
def updateTraversalData(self, requestSessionName=None): """.""" parent = aq_parent(aq_inner(self)) if getattr(self, '_hasTraversalHook', None): unregisterBeforeTraverse(parent, 'BeakerSessionDataManager') del self._hasTraversalHook self._requestSessionName = None if requestSessionName: hook = SessionDataManagerTraverser(requestSessionName, self.id) registerBeforeTraverse(parent, hook, 'BeakerSessionDataManager', 50) self._hasTraversalHook = 1 self._requestSessionName = requestSessionName
def remove_hook(context): """Remove local site hook with before traverse event. """ base_object = aq_base(context) if not hasattr(base_object, HOOK_NAME): return logger.info("Unregistering before traverse hook at %s", context.absolute_url()) unregisterBeforeTraverse(base_object, HOOK_NAME) # Now we should be able to remove the local site hook. But this # might not always be the best idea. Others might be using the # local site hook as well. Let's at least make it configurable: if config.REMOVE_LOCAL_SITE_HOOK: logger.info("Removing local site hook at %s", context.absolute_url()) delattr(base_object, HOOK_NAME) else: logger.info("Keeping local site hook at %s", context.absolute_url())
def manage_addAccessRule(self, method_id=None, REQUEST=None, **ignored): """Point a __before_traverse__ entry at the specified method""" # We want the original object, not stuff in between, and no acquisition self = self.this() self = getattr(self, 'aq_base', self) priority = (1, 'AccessRule') if method_id is None or (REQUEST and REQUEST.form.has_key('none')): rules = unregisterBeforeTraverse(self, 'AccessRule') if rules: try: del getattr(self, rules[0].name).icon except: pass if REQUEST: return MessageDialog(title='No Access Rule', message='This object now has no Access Rule', action='%s/manage_main' % REQUEST['URL1']) elif method_id and hasattr(self, method_id): rules = unregisterBeforeTraverse(self, 'AccessRule') if rules: try: del getattr(self, rules[0].name).icon except: pass hook = AccessRule(method_id) registerBeforeTraverse(self, hook, 'AccessRule', 1) try: getattr(self, method_id).icon = 'misc_/SiteAccess/AccessRule.gif' except: pass if REQUEST: return MessageDialog( title='Access Rule Set', message='"%s" is now the Access Rule for this object' % escape(method_id), action='%s/manage_main' % REQUEST['URL1']) else: if REQUEST: return MessageDialog( title='Invalid Method Id', message='"%s" is not the Id of a method of this object' % escape(method_id), action='%s/manage_main' % REQUEST['URL1'])
def manage_addAccessRule(self, method_id=None, REQUEST=None, **ignored): """Point a __before_traverse__ entry at the specified method""" # We want the original object, not stuff in between, and no acquisition self = self.this() self = getattr(self, 'aq_base', self) priority = (1, 'AccessRule') if method_id is None or (REQUEST and REQUEST.form.has_key('none')): rules = unregisterBeforeTraverse(self, 'AccessRule') if rules: try: del getattr(self, rules[0].name).icon except: pass if REQUEST: return MessageDialog(title='No Access Rule', message='This object now has no Access Rule', action='%s/manage_main' % REQUEST['URL1']) elif method_id and hasattr(self, method_id): rules = unregisterBeforeTraverse(self, 'AccessRule') if rules: try: del getattr(self, rules[0].name).icon except: pass hook = AccessRule(method_id) registerBeforeTraverse(self, hook, 'AccessRule', 1) try: getattr(self, method_id).icon = 'misc_/SiteAccess/AccessRule.gif' except: pass if REQUEST: return MessageDialog(title='Access Rule Set', message='"%s" is now the Access Rule for this object' % escape(method_id), action='%s/manage_main' % REQUEST['URL1']) else: if REQUEST: return MessageDialog(title='Invalid Method Id', message='"%s" is not the Id of a method of this object' % escape(method_id), action='%s/manage_main' % REQUEST['URL1'])
def manage_beforeDelete(self, item, container): if item is self: unregisterBeforeTraverse(container, self.meta_type)
def unregisterTraversalHook(self): parent = aq_parent(aq_inner(self)) name = TRAVERSAL_APPHANDLE if self.hasTraversalHook(parent): unregisterBeforeTraverse(parent, name)