Beispiel #1
0
def test_model_tree_item():
    from sitetree.models import Tree, TreeItem

    tree1 = Tree(alias='test')
    tree1.save()

    item1 = TreeItem(tree=tree1, alias='only', title='only title')
    item1.save()

    assert str(item1) == item1.title

    item2 = TreeItem(tree=tree1, alias='other', parent=item1)
    item2.save()

    item3 = TreeItem(tree=tree1, parent=item1)
    item3.save()

    item3.sort_order = 100
    item3.parent = item3
    item3.save()

    assert item3.parent is None  # Can't be itself
    assert item3.sort_order == 100

    item3.sort_order = 0
    item3.save()

    assert item3.sort_order == item3.id  # Automatic ordering

    with pytest.raises(Exception):
        TreeItem(tree=tree1, alias='only').save()  # Unique alias within tree
Beispiel #2
0
    def test_no_recursive_parents(self):
        """Verify that treeitems cannot be their own parent."""
        tree = Tree(alias="mytree")
        tree.save()
        tree_item = TreeItem(title="i'm my own grandpa", tree=tree)
        # This item needs to be saved, otherwise it cannot be set
        # as a parent.
        tree_item.save()

        tree_item.parent = tree_item
        tree_item.save()
        self.assertNotEqual(tree_item, tree_item.parent)
Beispiel #3
0
    def test_no_recursive_parents(self):
        """Verify that treeitems cannot be their own parent."""
        tree = Tree(alias="mytree")
        tree.save()
        tree_item = TreeItem(title="i'm my own grandpa", tree=tree)
        # This item needs to be saved, otherwise it cannot be set
        # as a parent.
        tree_item.save()

        tree_item.parent = tree_item
        tree_item.save()
        self.assertNotEqual(tree_item, tree_item.parent)
Beispiel #4
0
        def attach_items(tree, items, parent=None):
            for item_dict in items:
                children = item_dict.pop('children', [])

                access_permissions = item_dict.pop('access_permissions', [])

                item = TreeItem(**item_dict)
                item.tree = tree
                item.parent = parent
                item.save()

                for permission in access_permissions:
                    item.access_permissions.add(Permission.objects.get(codename=permission))

                items_map['%s' % item.url] = item

                children and attach_items(tree, children, parent=item)
Beispiel #5
0
        def attach_items(tree, items, parent=None):
            for item_dict in items:
                children = item_dict.pop('children', [])

                access_permissions = item_dict.pop('access_permissions', [])

                item = TreeItem(**item_dict)
                item.tree = tree
                item.parent = parent
                item.save()

                for permission in access_permissions:
                    item.access_permissions.add(Permission.objects.get(codename=permission))

                items_map['%s' % item.url] = item

                children and attach_items(tree, children, parent=item)