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
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)
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)
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)
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)