예제 #1
0
 def testDontShowAllParents(self):
     strategy = NavtreeStrategyBase()
     strategy.showAllParents = False
     query = {'portal_type' : 'Folder'}
     context = self.portal.folder1.doc11
     tree = buildFolderTree(self.portal, query=query, obj=context, strategy=strategy)['children']
     rootPath = '/'.join(self.portal.getPhysicalPath())
     self.assertEqual(len(tree), 2)
     self.assertEqual(tree[0]['item'].getPath(), rootPath + '/folder1')
     self.assertEqual(len(tree[0]['children']), 0)
     self.assertEqual(tree[1]['item'].getPath(), rootPath + '/folder2')
     self.assertEqual(len(tree[1]['children']), 1)
     self.assertEqual(tree[1]['children'][0]['item'].getPath(), rootPath + '/folder2/folder21')
예제 #2
0
 def testShowAllParentsWithParentNotInCatalog(self):
     strategy = NavtreeStrategyBase()
     strategy.showAllParents = True
     self.portal.folder1.unindexObject()
     query = {'portal_type': 'Folder'}
     context = self.portal.folder1.doc11
     tree = buildFolderTree(self.portal, query=query, obj=context,
                            strategy=strategy)['children']
     rootPath = '/'.join(self.portal.getPhysicalPath())
     # XXX: Ideally, this shouldn't happen, we should get a dummy node, but
     # there's no way to do that with the catalog
     self.assertEqual(len(tree), 1)
     self.assertEqual(tree[0]['item'].getPath(), rootPath + '/folder2')
예제 #3
0
파일: testNavTree.py 프로젝트: dtgit/dtedu
 def testDontShowAllParents(self):
     strategy = NavtreeStrategyBase()
     strategy.showAllParents = False
     query = {'portal_type' : 'Folder'}
     context = self.portal.folder1.doc11
     tree = buildFolderTree(self.portal, query=query, obj=context, strategy=strategy)['children']
     rootPath = '/'.join(self.portal.getPhysicalPath())
     self.assertEqual(len(tree), 2)
     self.assertEqual(tree[0]['item'].getPath(), rootPath + '/folder1')
     self.assertEqual(len(tree[0]['children']), 0)
     self.assertEqual(tree[1]['item'].getPath(), rootPath + '/folder2')
     self.assertEqual(len(tree[1]['children']), 1)
     self.assertEqual(tree[1]['children'][0]['item'].getPath(), rootPath + '/folder2/folder21')
예제 #4
0
 def testShowAllParentsWithParentNotInCatalog(self):
     strategy = NavtreeStrategyBase()
     strategy.showAllParents = True
     wftool = getToolByName(self.portal, 'portal_workflow')
     self.portal.folder1.unindexObject()
     query = {'portal_type' : 'Folder'}
     context = self.portal.folder1.doc11
     tree = buildFolderTree(self.portal, query=query, obj=context, strategy=strategy)['children']
     rootPath = '/'.join(self.portal.getPhysicalPath())
     # XXX: Ideally, this shouldn't happen, we should get a dummy node, but
     # there's no way to do that with the catalog
     self.assertEqual(len(tree), 1)
     self.assertEqual(tree[0]['item'].getPath(), rootPath + '/folder2')
예제 #5
0
파일: testNavTree.py 프로젝트: dtgit/dtedu
 def testShowAllParentsOverridesNonFolderishObjectNotExpanded(self):
     strategy = NavtreeStrategyBase()
     strategy.showAllParents = True
     self.setRoles(['Manager'])
     f = DummyNonStructuralFolder('ns_folder')
     self.portal._setObject('ns_folder', f)
     ns_folder = self.portal.ns_folder
     self.portal.portal_catalog.indexObject(self.portal.ns_folder)
     ns_folder.invokeFactory('Document', 'doc')
     self.setRoles(['Member'])
     tree = buildFolderTree(self.portal, self.portal.ns_folder.doc, strategy=strategy)['children']
     rootPath = '/'.join(self.portal.getPhysicalPath())
     self.assertEqual(tree[-1]['item'].getPath(), rootPath + '/ns_folder')
     self.assertEqual(len(tree[-1]['children']), 1)
     self.assertEqual(tree[-1]['children'][0]['item'].getPath(), rootPath + '/ns_folder/doc')
예제 #6
0
 def testShowAllParentsOverridesNonFolderishObjectNotExpanded(self):
     strategy = NavtreeStrategyBase()
     strategy.showAllParents = True
     self.setRoles(['Manager'])
     f = DummyNonStructuralFolder('ns_folder')
     self.portal._setObject('ns_folder', f)
     ns_folder = self.portal.ns_folder
     self.portal.portal_catalog.indexObject(self.portal.ns_folder)
     ns_folder.invokeFactory('Document', 'doc')
     self.setRoles(['Member'])
     tree = buildFolderTree(self.portal, self.portal.ns_folder.doc, strategy=strategy)['children']
     rootPath = '/'.join(self.portal.getPhysicalPath())
     self.assertEqual(tree[-1]['item'].getPath(), rootPath + '/ns_folder')
     self.assertEqual(len(tree[-1]['children']), 1)
     self.assertEqual(tree[-1]['children'][0]['item'].getPath(), rootPath + '/ns_folder/doc')
예제 #7
0
    def getCourseItemsInOrder(self):
        """
            Create a flattened out list of portal_catalog queried items in their natural depth first navigation order.
            @param root: Content item which acts as a navigation root
            @param query: Dictionary of portal_catalog query parameters
            @return: List of catalog brains
        """
        root = self
        possible_types = [
            'Kurs', 'Kursabschluss', 'Lerneinheit', 'Document', 'Aufgabe',
            'Audiovideo', 'Checkliste', 'Skill'
        ]
        query = {'portal_type': possible_types}

        # Navigation tree base portal_catalog query parameters
        applied_query = {
            'path': '/'.join(root.getPhysicalPath()),
            'sort_on': 'getObjPositionInParent'
        }

        # Apply caller's filters
        applied_query.update(query)

        # Set the navigation tree build strategy
        # - use navigation portlet strategy as base
        #strategy = DefaultNavtreeStrategy(root)
        strategy = NavtreeStrategyBase()
        strategy.rootPath = '/'.join(root.getPhysicalPath())
        strategy.showAllParents = False
        strategy.bottomLevel = 999
        # This will yield out tree of nested dicts of
        # item brains with retrofitted navigational data
        tree = buildFolderTree(root, root, query, strategy=strategy)

        items = []

        def flatten(children):
            """ Recursively flatten the tree """
            for c in children:
                # Copy catalog brain object into the result
                items.append(c["item"])
                children = c.get("children", None)
                if children:
                    flatten(children)

        flatten(tree["children"])
        return items
예제 #8
0
파일: testNavTree.py 프로젝트: dtgit/dtedu
 def testShowAllParentsWithRestrictedParent(self):
     strategy = NavtreeStrategyBase()
     strategy.showAllParents = True
     wftool = getToolByName(self.portal, 'portal_workflow')
     wftool.doActionFor(self.portal.folder1, 'hide')
     self.portal.folder1.reindexObject()
     query = {'portal_type' : 'Folder'}
     context = self.portal.folder1.doc11
     tree = buildFolderTree(self.portal, query=query, obj=context, strategy=strategy)['children']
     rootPath = '/'.join(self.portal.getPhysicalPath())
     self.assertEqual(len(tree), 2)
     self.assertEqual(tree[0]['item'].getPath(), rootPath + '/folder1')
     self.assertEqual(len(tree[0]['children']), 1)
     self.assertEqual(tree[0]['children'][0]['item'].getPath(), rootPath + '/folder1/doc11')
     self.assertEqual(tree[1]['item'].getPath(), rootPath + '/folder2')
     self.assertEqual(len(tree[1]['children']), 1)
     self.assertEqual(tree[1]['children'][0]['item'].getPath(), rootPath + '/folder2/folder21')
예제 #9
0
 def testShowAllParentsWithRestrictedParent(self):
     strategy = NavtreeStrategyBase()
     strategy.showAllParents = True
     wftool = getToolByName(self.portal, 'portal_workflow')
     wftool.doActionFor(self.portal.folder1, 'hide')
     self.portal.folder1.reindexObject()
     query = {'portal_type' : 'Folder'}
     context = self.portal.folder1.doc11
     tree = buildFolderTree(self.portal, query=query, obj=context, strategy=strategy)['children']
     rootPath = '/'.join(self.portal.getPhysicalPath())
     self.assertEqual(len(tree), 2)
     self.assertEqual(tree[0]['item'].getPath(), rootPath + '/folder1')
     self.assertEqual(len(tree[0]['children']), 1)
     self.assertEqual(tree[0]['children'][0]['item'].getPath(), rootPath + '/folder1/doc11')
     self.assertEqual(tree[1]['item'].getPath(), rootPath + '/folder2')
     self.assertEqual(len(tree[1]['children']), 1)
     self.assertEqual(tree[1]['children'][0]['item'].getPath(), rootPath + '/folder2/folder21')