コード例 #1
0
 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)
コード例 #2
0
ファイル: Localizer.py プロジェクト: eea/ALiSS_agents
 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)
コード例 #3
0
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)
コード例 #4
0
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()
コード例 #5
0
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)
コード例 #6
0
ファイル: Localizer.py プロジェクト: hforge/Localizer
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)
コード例 #7
0
ファイル: tests.py プロジェクト: Vinsurya/Plone
 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)
コード例 #8
0
ファイル: localsite.py プロジェクト: wpjunior/proled
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)
コード例 #9
0
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)
コード例 #10
0
    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
コード例 #11
0
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)
コード例 #12
0
    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
コード例 #13
0
    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
コード例 #14
0
    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
コード例 #15
0
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())
コード例 #16
0
ファイル: AccessRule.py プロジェクト: bendavis78/zope
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'])
コード例 #17
0
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'])
コード例 #18
0
 def manage_beforeDelete(self, item, container):
     if item is self:
         unregisterBeforeTraverse(container, self.meta_type)
コード例 #19
0
 def unregisterTraversalHook(self):
     parent = aq_parent(aq_inner(self))
     name = TRAVERSAL_APPHANDLE
     if self.hasTraversalHook(parent):
         unregisterBeforeTraverse(parent, name)
コード例 #20
0
 def unregisterTraversalHook(self):
     parent = aq_parent(aq_inner(self))
     name = TRAVERSAL_APPHANDLE
     if self.hasTraversalHook(parent):
         unregisterBeforeTraverse(parent, name)
コード例 #21
0
ファイル: Localizer.py プロジェクト: eea/ALiSS_agents
 def manage_beforeDelete(self, item, container):
     if item is self:
         unregisterBeforeTraverse(container, self.meta_type)