Example #1
0
 def manage_afterAdd(self, item, container):
     if item is self and self.getPortalType() == 'Web Section':
         handle = self.meta_type + '/' + self.getId()
         BeforeTraverse.registerBeforeTraverse(item,
                                               WebSectionTraversalHook(),
                                               handle)
     super(WebSection, self).manage_afterAdd(item, container)
Example #2
0
 def manage_afterAdd(self, item, container):
     if item is self:
         handle = self.meta_type + '/' + self.getId()
         BeforeTraverse.registerBeforeTraverse(
             item,
             self._getTraversalHookClass()(), handle)
     super(WebSection, self).manage_afterAdd(item, container)
Example #3
0
    def manage_afterAdd(self, item, container):
        if item is self:
            container.__allow_groups__ = aq_base(self)

            handle = self.meta_type + '/' + self.getId()
            container = container.this()
            nc = BeforeTraverse.NameCaller(self.getId())
            BeforeTraverse.registerBeforeTraverse(container, nc, handle)
Example #4
0
    def manage_afterAdd(self, item, container):
        if item is self:
            container.__allow_groups__ = aq_base(self)

            handle = self.meta_type + '/' + self.getId()
            container = container.this()
            nc = BeforeTraverse.NameCaller(self.getId())
            BeforeTraverse.registerBeforeTraverse(container, nc, handle)
Example #5
0
 def _edit(self, **kw):
     # migrate beforeTraverse hook if missing
     if getattr(self, '__before_traverse__',
                None) is None and self.getPortalType() == 'Web Site':
         handle = self.meta_type + '/' + self.getId()
         BeforeTraverse.registerBeforeTraverse(self, WebSiteTraversalHook(),
                                               handle)
     super(WebSite, self)._edit(**kw)
Example #6
0
    def manage_beforeDelete(self, item, container):
        if item is self:
            try:
                del container.__allow_groups__
            except:
                pass

            handle = self.meta_type + '/' + self.getId()
            BeforeTraverse.unregisterBeforeTraverse(container, handle)
Example #7
0
 def _cleanupBeforeTraverseHooks(self):
   # unregister all before traversal hooks that do not belong to us.
   my_handle = self.meta_type + '/' + self.getId()
   handle_to_unregister_list = []
   for (priority, handle), hook in self.__before_traverse__.items():
     if isinstance(hook, self._getTraversalHookClass()) and handle != my_handle:
       handle_to_unregister_list.append(handle)
   for handle in handle_to_unregister_list:
     BeforeTraverse.unregisterBeforeTraverse(self, handle)
Example #8
0
    def manage_beforeDelete(self, item, container):
        if item is self:
            try:
                del container.__allow_groups__
            except:
                pass

            handle = self.meta_type + '/' + self.getId()
            BeforeTraverse.unregisterBeforeTraverse(container, handle)
Example #9
0
 def _cleanupBeforeTraverseHooks(self):
   # unregister all before traversal hooks that do not belong to us.
   my_handle = self.meta_type + '/' + self.getId()
   handle_to_unregister_list = []
   for (priority, handle), hook in self.__before_traverse__.items():
     if isinstance(hook, self._getTraversalHookClass()) and handle != my_handle:
       handle_to_unregister_list.append(handle)
   for handle in handle_to_unregister_list:
     BeforeTraverse.unregisterBeforeTraverse(self, handle)
Example #10
0
    def manage_afterAdd(self, item, container):
        if item is self:
            id = self.id
            if callable(id):
                id = id()

            # We want the original object, not stuff in between
            container = container.this()
            hook = BeforeTraverse.NameCaller(id)
            BeforeTraverse.registerBeforeTraverse(container, hook, self.meta_type, self.priority)
 def _update(self, portal):
     traversers = portal.__before_traverse__
     for priority, name in traversers.keys():
         if portal.getId() in name:
             self.log.debug('Fix not needed')
             return
     name_caller = BeforeTraverse.NameCaller(portal.getId())
     app_handle = '%s/%s' % (portal.meta_type, portal.getId())
     BeforeTraverse.registerBeforeTraverse(portal, name_caller, app_handle)
     self.log.debug('Fix applied!')
     return True
Example #12
0
 def _update(self, portal):
     traversers = portal.__before_traverse__
     for priority, name in traversers.keys():
         if portal.getId() in name:
             self.log.debug('Fix not needed')
             return
     name_caller = BeforeTraverse.NameCaller(portal.getId())
     app_handle = '%s/%s' % (portal.meta_type, portal.getId())
     BeforeTraverse.registerBeforeTraverse(portal, name_caller, app_handle)
     self.log.debug('Fix applied!')
     return True
Example #13
0
    def manage_afterAdd(self, item, container):
        if item is self:
            id = self.id
            if callable(id): id = id()

            # We want the original object, not stuff in between
            container = container.this()
            hook = BeforeTraverse.NameCaller(id)
            BeforeTraverse.registerBeforeTraverse(container, hook,
                                                  self.meta_type,
                                                  self.priority)
Example #14
0
    def manage_afterAdd(self, item, container):
        if item is self:
            if BeforeTraverse.queryBeforeTraverse(container, self.meta_type):
                raise BadRequest, ("This container already has a %s" % self.meta_type)
            id = self.id
            if callable(id):
                id = id()

            # We want the original object, not stuff in between
            container = container.this()
            hook = BeforeTraverse.NameCaller(id)
            BeforeTraverse.registerBeforeTraverse(container, hook, self.meta_type, self.priority)
Example #15
0
 def _edit(self, **kw):
   # XXX it is unclear if we should keep this behavior in other potential subclasses.
   # Probably yes.
   if self.getPortalType() in ('Web Section', 'Web Site'):
     if getattr(self, '__before_traverse__', None) is None:
       # migrate beforeTraverse hook if missing
       handle = self.meta_type + '/' + self.getId()
       BeforeTraverse.registerBeforeTraverse(self, self._getTraversalHookClass()(), handle)
     else:
       # cleanup beforeTraverse hooks that may exist after this document was cloned.
       self._cleanupBeforeTraverseHooks()
   super(WebSection, self)._edit(**kw)
Example #16
0
 def _edit(self, **kw):
   # XXX it is unclear if we should keep this behavior in other potential subclasses.
   # Probably yes.
   if self.getPortalType() in ('Web Section', 'Web Site'):
     if getattr(self, '__before_traverse__', None) is None:
       # migrate beforeTraverse hook if missing
       handle = self.meta_type + '/' + self.getId()
       BeforeTraverse.registerBeforeTraverse(self, self._getTraversalHookClass()(), handle)
     else:
       # cleanup beforeTraverse hooks that may exist after this document was cloned.
       self._cleanupBeforeTraverseHooks()
   super(WebSection, self)._edit(**kw)
Example #17
0
    def test_json_request_on_object_with_multihook(self):
        doc1 = self.portal[self.portal.invokeFactory('Document', id='doc1')]

        # Register a function to be called before traversal
        def btr_test(container, request):
            request._btr_test_called = 1
        doc1.btr_test = btr_test
        nc = BeforeTraverse.NameCaller('btr_test')
        BeforeTraverse.registerBeforeTraverse(doc1, nc, 'Document/btr_test')

        obj = self.traverse(path='/plone/doc1')
        self.assertTrue(isinstance(obj, Service), 'Not a service')
        self.assertEquals(1, self.request._btr_test_called)
Example #18
0
    def test_json_request_on_object_with_multihook(self):
        doc1 = self.portal[self.portal.invokeFactory('Document', id='doc1')]

        # Register a function to be called before traversal
        def btr_test(container, request):
            request._btr_test_called = 1
        doc1.btr_test = btr_test
        nc = BeforeTraverse.NameCaller('btr_test')
        BeforeTraverse.registerBeforeTraverse(doc1, nc, 'Document/btr_test')

        obj = self.traverse(path='/plone/doc1')
        self.assertTrue(isinstance(obj, Service), 'Not a service')
        self.assertEquals(1, self.request._btr_test_called)
Example #19
0
    def manage_afterAdd(self, item, container):
        if item is self:
            if BeforeTraverse.queryBeforeTraverse(container, self.meta_type):
                raise BadRequest, ('This container already has a %s' %
                                   self.meta_type)
            id = self.id
            if callable(id): id = id()

            # We want the original object, not stuff in between
            container = container.this()
            hook = BeforeTraverse.NameCaller(id)
            BeforeTraverse.registerBeforeTraverse(container, hook,
                                                  self.meta_type,
                                                  self.priority)
Example #20
0
    def test_app_layer_enabled_directly(self):
        folder = api.content.create(container=self.portal,
                                    type='Folder',
                                    title='testfolder')
        api.content.transition(folder, 'publish')
        alsoProvides(folder, IMockFolder)
        folder.app_layers = (IMockLayer, )
        BeforeTraverse.registerBeforeTraverse(folder, enable_app_layer(),
                                              'enable_app_layer')
        transaction.commit()

        browser = Browser(self.app)
        browser.open("%s/@@browser_layers" % folder.absolute_url())
        self.assertTrue(
            'ploneintranet.layout.tests.utils.IMockLayer' in browser.contents)
Example #21
0
    def test_app_layer_enabled_directly(self):
        folder = api.content.create(container=self.portal,
                                    type='Folder',
                                    title='testfolder')
        api.content.transition(folder, 'publish')
        directlyProvides(folder, IMockFolder)
        folder.app_layers = (IMockLayer,)
        BeforeTraverse.registerBeforeTraverse(folder,
                                              enable_app_layer(),
                                              'enable_app_layer')
        transaction.commit()

        browser = Browser(self.app)
        browser.open("%s/@@browser_layers" % folder.absolute_url())
        self.assertTrue('ploneintranet.layout.tests.utils.IMockLayer'
                        in browser.contents)
Example #22
0
def movedNySite(ob, event):
    """ A NySite was moved """
    if IObjectAddedEvent.providedBy(event):

        #Hadled by addedNySite
        return
    elif IObjectRemovedEvent.providedBy(event):

        #Hadled by removedNySite
        return
    else:
        old_handle = ob.meta_type + '/' + event.oldName
        BeforeTraverse.unregisterBeforeTraverse(ob, old_handle)
        handle = ob.meta_type + '/' + event.newName
        nc = BeforeTraverse.NameCaller(event.newName)
        BeforeTraverse.registerBeforeTraverse(ob, nc, handle)
Example #23
0
def movedNySite(ob, event):
    """ A NySite was moved """
    if IObjectAddedEvent.providedBy(event):

        #Hadled by addedNySite
        return
    elif IObjectRemovedEvent.providedBy(event):

        #Hadled by removedNySite
        return
    else:
        old_handle = ob.meta_type + '/' + event.oldName
        BeforeTraverse.unregisterBeforeTraverse(ob, old_handle)
        handle = ob.meta_type + '/' + event.newName
        nc = BeforeTraverse.NameCaller(event.newName)
        BeforeTraverse.registerBeforeTraverse(ob, nc, handle)
Example #24
0
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):
        if event.oldParent is not None:
            # unregister before traverse hook
            handle = ob.meta_type + '/' + ob.getId()
            BeforeTraverse.unregisterBeforeTraverse(event.oldParent, handle)
Example #25
0
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):
        if event.oldParent is not None:
            # unregister before traverse hook
            handle = ob.meta_type + '/' + ob.getId()
            BeforeTraverse.unregisterBeforeTraverse(event.oldParent, handle)
Example #26
0
    def manage_afterAdd(self, item, container):
        """ after add event """
        if item is self:
            handle = self.meta_type + '/' + self.getId()
            nc = BeforeTraverse.NameCaller(self.getId())
            BeforeTraverse.registerBeforeTraverse(container, nc, handle)
        self.loadDefaultRoles()
        try:
            self.createRepository()
            style_css = open(join(DOCMANAGER_PRODUCT_PATH,'zpt','DocManager','DocManager_style.zpt'))
            content = style_css.read()
            style_css.close()
            manage_addPageTemplate(self, id=DOCMANAGER_CSS, title='', text=content)

            style_css = open(join(DOCMANAGER_PRODUCT_PATH,'zpt','DocManager','DocManager_template.zpt'))
            content = style_css.read()
            style_css.close()
            manage_addPageTemplate(self, id=DOCMANAGER_TEMPLATE, title='', text=content)

            Folder.inheritedAttribute('manage_afterAdd')(self, item, container)
        except:
            pass
Example #27
0
def addedNySite(ob, event):
    """ A NySite was added """
    handle = ob.meta_type + '/' + ob.getId()
    nc = BeforeTraverse.NameCaller(ob.getId())
    BeforeTraverse.registerBeforeTraverse(ob, nc, handle)
Example #28
0
 def manage_beforeDelete(self, item, container):
     if item is self:
         handle = self.meta_type + '/' + self.getId()
         BeforeTraverse.unregisterBeforeTraverse(item, handle)
     super(WebSection, self).manage_beforeDelete(item, container)
Example #29
0
 def manage_afterAdd(self, item, container):
   if item is self and self.getPortalType() == 'Web Section':
     handle = self.meta_type + '/' + self.getId()
     BeforeTraverse.registerBeforeTraverse(item, WebSectionTraversalHook(), handle)
   super(WebSection, self).manage_afterAdd(item, container)
Example #30
0
 def _edit(self, **kw):
   # migrate beforeTraverse hook if missing
   if getattr(self, '__before_traverse__', None) is None and self.getPortalType() == 'Web Section':
     handle = self.meta_type + '/' + self.getId()
     BeforeTraverse.registerBeforeTraverse(self, WebSectionTraversalHook(), handle)
   super(WebSection, self)._edit(**kw)
Example #31
0
 def manage_afterAdd(self, item, container):
     if item is self:
         handle = self.meta_type + '/' + self.id
         container = container.this()
         nc = BeforeTraverse.NameCaller(self.id)
         BeforeTraverse.registerBeforeTraverse(container, nc, handle)
Example #32
0
 def manage_beforeDelete(self, item, container):
   if item is self and self.getPortalType() == 'Web Section':
     handle = self.meta_type + '/' + self.getId()
     BeforeTraverse.unregisterBeforeTraverse(item, handle)
   super(WebSection, self).manage_beforeDelete(item, container)
Example #33
0
def removedNySite(ob, event):
    """ A NySite was removed """
    handle = ob.meta_type + '/' + ob.getId()
    BeforeTraverse.unregisterBeforeTraverse(ob, handle)
Example #34
0
def removedNySite(ob, event):
    """ A NySite was removed """
    handle = ob.meta_type + '/' + ob.getId()
    BeforeTraverse.unregisterBeforeTraverse(ob, handle)
 def manage_beforeDelete(self, item, container):
     if item is self:
         handle = self.meta_type + '/' + self.getId()
         BeforeTraverse.unregisterBeforeTraverse(container, handle)
Example #36
0
 def manage_afterAdd(self, item, container):
   if item is self:
     handle = self.meta_type + '/' + self.getId()
     BeforeTraverse.registerBeforeTraverse(item, WebSiteTraversalHook(), handle)
   WebSection.manage_afterAdd(self, item, container)
Example #37
0
 def manage_beforeDelete(self, item, container):
     if item is self:
         BeforeTraverse.unregisterBeforeTraverse(container, self.meta_type)
Example #38
0
 def manage_beforeDelete(self, item, container):
     """ This method is called, when the object is deleted. """
     if item is self:
         handle = self.meta_type + '/' + self.getId()
         BeforeTraverse.unregisterBeforeTraverse(container, handle)
     Folder.inheritedAttribute('manage_beforeDelete')(self, item, container)
Example #39
0
 def manage_afterAdd(self, item, container):
     if item is self:
         handle = self.meta_type + '/' + self.id
         container = container.this()
         nc = BeforeTraverse.NameCaller(self.id)
         BeforeTraverse.registerBeforeTraverse(container, nc, handle)
Example #40
0
 def manage_beforeDelete(self, item, container):
     if item is self:
         BeforeTraverse.unregisterBeforeTraverse(container, self.meta_type)
Example #41
0
 def manage_afterAdd(self, item, container):
   if item is self:
     handle = self.meta_type + '/' + self.getId()
     BeforeTraverse.registerBeforeTraverse(item, self._getTraversalHookClass()(), handle)
   super(WebSection, self).manage_afterAdd(item, container)
Example #42
0
def addedNySite(ob, event):
    """ A NySite was added """
    handle = ob.meta_type + '/' + ob.getId()
    nc = BeforeTraverse.NameCaller(ob.getId())
    BeforeTraverse.registerBeforeTraverse(ob, nc, handle)
Example #43
0
 def manage_afterAdd(self, item, container):
     if item is self:
         handle = self.meta_type + '/' + self.getId()
         BeforeTraverse.registerBeforeTraverse(item, WebSiteTraversalHook(),
                                               handle)
     WebSection.manage_afterAdd(self, item, container)