Search.setIndex({"docnames": ["admin", "al_tree", "api", "caveats", "changes", "exceptions", "forms", "index", "install", "mp_tree", "ns_tree", "tests", "tutorial"], "filenames": ["admin.rst", "al_tree.rst", "api.rst", "caveats.rst", "changes.rst", "exceptions.rst", "forms.rst", "index.rst", "install.rst", "mp_tree.rst", "ns_tree.rst", "tests.rst", "tutorial.rst"], "titles": ["Admin", "Adjacency List trees", "API", "Known Caveats", "Changelog", "Exceptions", "Forms", "django-treebeard", "Installation", "Materialized Path trees", "Nested Sets trees", "Running the Test Suite", "Tutorial"], "terms": {"class": [0, 1, 2, 3, 6, 7, 8, 9, 10, 12], "treebeard": [0, 1, 2, 3, 5, 6, 8, 9, 10, 11, 12], "treeadmin": [0, 7, 8], "admin_sit": 0, "base": [0, 1, 2, 3, 6, 7, 9, 10], "modeladmin": 0, "django": [0, 1, 2, 3, 6, 8, 9, 10, 11, 12], "exampl": [0, 1, 2, 6, 9, 10, 12], "from": [0, 1, 2, 3, 8, 9, 12], "contrib": 0, "import": [0, 12], "form": [0, 7], "movenodeform_factori": [0, 6, 7], "myproject": 0, "mynod": [0, 2, 6], "myadmin": 0, "site": 0, "regist": 0, "admin_factori": [0, 7], "form_class": 0, "dynam": [0, 6], "build": [0, 6], "subclass": [0, 1, 2, 3, 6, 9, 10], "given": [0, 2, 9, 10], "paramet": [0, 1, 2, 6, 9], "return": [0, 1, 2, 6, 9, 10, 12], "A": [0, 2, 6, 9, 10], "The": [0, 1, 2, 6, 9], "featur": [0, 11], "depend": [0, 6], "tree": [0, 2, 3, 6, 7, 12], "type": [0, 3, 6], "materi": [0, 2, 7, 12], "path": [0, 2, 5, 7, 8, 12], "nest": [0, 2, 7, 9], "set": [0, 1, 2, 7, 8, 11], "have": [0, 1, 2, 3, 8, 9, 10], "an": [0, 1, 2, 5, 9, 10], "ajax": 0, "feincm": 0, "includ": [0, 2, 7, 8, 9, 10, 11], "like": [0, 2, 9, 11], "drag": 0, "drop": 0, "attract": 0, "adjac": [0, 2, 7], "list": [0, 2, 7, 9, 10], "If": [0, 1, 2, 3, 8, 9, 10, 11], "": [0, 1, 2, 3, 5, 6, 7, 8, 9, 12], "field": [0, 1, 3, 6, 9, 10], "valu": [0, 1, 2, 5, 9], "ar": [0, 2, 3, 8, 9, 10, 11], "modifi": [0, 9, 12], "i": [0, 1, 2, 3, 5, 6, 7, 9, 10, 11], "necessari": 0, "add": [0, 2, 5, 6, 8, 9], "_posit": 0, "_ref_node_id": 0, "otherwis": 0, "possibl": [0, 9], "creat": [0, 1, 2, 3, 9, 10, 12], "instanc": [0, 2, 6, 7, 9], "list_displai": 0, "titl": 0, "bodi": 0, "is_edit": 0, "timestamp": 0, "thi": [1, 2, 3, 6, 8, 9, 10, 11, 12], "simpl": [1, 9], "implement": [1, 7, 9, 10], "tradit": 1, "model": [1, 2, 6, 7, 9, 10, 12], "store": [1, 2, 9], "relat": [1, 2, 3], "databas": [1, 2, 5, 9, 11], "In": [1, 9, 12], "everi": [1, 2, 9, 12], "node": [1, 2, 3, 5, 6, 7, 9, 10, 12], "parent": [1, 2, 6, 7, 9, 10], "kei": [1, 2, 9], "null": 1, "root": [1, 2, 9, 10, 12], "sinc": [1, 3, 6, 9], "must": [1, 2, 9], "order": [1, 2, 9, 10], "predict": [1, 9], "wai": [1, 8, 9, 11], "without": [1, 2, 9], "node_order_bi": [1, 2, 5, 7, 9, 10, 12], "attribut": [1, 2, 5, 9, 10], "extra": [1, 2, 9], "rel": [1, 2, 6, 9], "posit": [1, 2, 5, 6, 9], "between": [1, 9], "sibl": [1, 2, 6, 9], "sib_ord": [1, 6, 7], "ha": [1, 2, 3, 9, 10], "advantag": [1, 9], "fast": [1, 7, 9], "write": [1, 2, 3, 10, 12], "cost": [1, 9, 10], "slow": [1, 9], "read": [1, 2, 3, 6, 9, 10, 12], "you": [1, 2, 3, 8, 9, 10, 11, 12], "more": [1, 5, 8, 9], "than": [1, 9], "us": [1, 2, 3, 6, 7, 8, 9, 10, 11, 12], "mp_node": [1, 2, 7, 9, 12], "instead": [1, 2, 6, 8, 9], "As": [1, 9, 10], "all": [1, 2, 9, 10, 11], "pleas": [1, 2, 6, 9, 10], "awar": [1, 2, 9, 10], "known": [1, 2, 7, 9, 10, 12], "caveat": [1, 2, 7, 9, 10, 12], "al_tre": [1, 2, 6], "al_nod": [1, 2, 6, 7], "db": [1, 2, 9, 10, 12], "arg": [1, 2, 9, 10], "kwarg": [1, 2, 6, 9, 10], "abstract": [1, 7, 9, 10], "your": [1, 2, 3, 7, 8, 9, 10, 12], "own": [1, 2, 7, 8, 9, 10], "need": [1, 3, 5, 6, 8, 9, 10, 11], "defin": [1, 2, 7, 8, 9, 10], "manag": [1, 7, 9, 10, 12], "ll": [1, 3, 9, 10, 12], "al_nodemanag": [1, 7], "when": [1, 2, 3, 5, 9, 10, 11], "enabl": [1, 2, 9, 10], "oper": [1, 2, 3, 5, 7, 9, 10, 12], "assum": [1, 9, 10], "field1": [1, 9, 10], "field2": [1, 9, 10], "field3": [1, 9, 10], "foreignkei": [1, 2], "itself": [1, 2], "sadli": 1, "isn": 1, "t": [1, 2, 3, 8, 9, 12], "inherit": [1, 2, 7, 9], "correctli": [1, 9], "abc": [1, 2], "1": [1, 2, 7, 8, 9, 10, 11, 12], "0": [1, 2, 7, 9, 11, 12], "just": [1, 8, 11, 12], "copi": [1, 7], "past": 1, "line": 1, "self": [1, 9, 12], "related_nam": 1, "children_set": 1, "true": [1, 2, 9, 12], "db_index": 1, "positiveintegerfield": [1, 9, 10], "mandatori": 1, "onli": [1, 2, 9, 10, 11], "don": [1, 3, 9, 12], "can": [1, 2, 5, 6, 8, 9, 11, 12], "al_testnod": 1, "desc": [1, 2], "charfield": [1, 9, 12], "max_length": [1, 9, 12], "255": [1, 9], "al_testnodesort": 1, "val1": 1, "val2": 1, "integerfield": [1, 9], "api": [1, 7, 9, 12], "refer": [1, 6, 9, 12], "info": [1, 2, 5, 9, 12], "method": [1, 2, 9, 10], "avail": [1, 9], "follow": [1, 9], "section": [1, 8, 9], "particular": [1, 9], "argument": [1, 2, 9], "except": [1, 2, 7, 9], "get_depth": [1, 2, 7], "updat": [1, 2, 3, 9, 11, 12], "fals": [1, 2, 6, 9, 12], "depth": [1, 2, 7, 9, 10], "level": [1, 2, 12], "cach": [1, 2], "result": [1, 2], "object": [1, 2, 3, 9, 12], "help": [1, 2], "loop": [1, 2], "see": [1, 5, 8, 9, 10, 12], "custom": [1, 7, 9, 10], "librari": [2, 7, 9], "mp_tree": [2, 9, 12], "ns_tree": [2, 10], "ns_node": [2, 7, 10], "classmethod": [2, 9, 10], "add_root": [2, 7, 9, 12], "new": [2, 3, 9], "rightmost": 2, "want": [2, 11], "insert": [2, 9], "specif": 2, "add_sibl": [2, 7, 9, 12], "alreadi": [2, 5], "exist": 2, "creation": 2, "data": [2, 6, 12], "pass": [2, 5], "construct": 2, "yet": 2, "save": [2, 5, 7, 9], "It": [2, 6, 11], "d": 2, "rais": [2, 5, 9], "nodealreadysav": [2, 5, 7], "numval": [2, 9], "strval": [2, 9], "abcd": 2, "Or": 2, "new_nod": 2, "add_child": [2, 7, 9, 12], "child": [2, 6, 9], "po": [2, 5, 9], "none": [2, 6, 9, 10], "current": [2, 6, 9], "where": [2, 5, 6, 9], "one": [2, 5, 9, 11], "first": [2, 6, 9, 12], "leftmost": 2, "left": 2, "take": [2, 11], "place": 2, "which": [2, 5, 9, 11], "move": [2, 3, 5, 6, 7, 9], "right": [2, 9], "last": 2, "sort": [2, 6], "accord": [2, 9], "invalidposit": [2, 5, 7], "invalid": [2, 5], "parm": 2, "wasn": 2, "missingnodeorderbi": [2, 5, 7], "miss": [2, 5], "delet": [2, 7, 9, 10], "remov": [2, 3], "descend": [2, 5, 9], "call": 2, "our": 2, "queryset": [2, 9, 10], "handl": [2, 6, 9], "children": [2, 9, 12], "mainten": [2, 3, 9, 10], "get_tre": [2, 7, 9, 10], "df": [2, 9, 10], "entir": [2, 9], "get_ancestor": [2, 7], "contain": 2, "ancestor": 2, "start": [2, 3, 9], "some": [2, 3, 8, 9, 12], "mai": 2, "get_children": [2, 7], "get_children_count": [2, 7], "number": [2, 9], "get_descend": [2, 7], "doesn": 2, "get_descendant_count": [2, 7], "get_first_child": [2, 7], "get_last_child": [2, 7], "get_first_s": [2, 7], "wa": 2, "get_last_s": [2, 7], "get_prev_s": [2, 7], "previou": [2, 3], "get_next_s": [2, 7], "next": [2, 9], "get_par": [2, 7], "get_root": [2, 7], "get_sibl": [2, 7], "is_child_of": [2, 7], "anoth": [2, 9], "els": 2, "check": [2, 9], "node2": 2, "is_descendant_of": [2, 7], "is_sibling_of": [2, 7], "is_root": [2, 7], "is_leaf": [2, 7], "leaf": 2, "target": [2, 6, 9], "invalidmovetodescend": [2, 5, 7], "try": [2, 5, 8], "pathoverflow": [2, 5, 7, 9], "make": [2, 9], "room": [2, 9], "under": [2, 7], "prev": 2, "force_insert": 2, "force_upd": 2, "update_field": 2, "overrid": [2, 7], "control": 2, "process": 2, "insist": 2, "sql": [2, 3, 9, 10], "equival": [2, 6], "non": [2, 7], "backend": 2, "respect": 2, "normal": [2, 9], "thei": [2, 12], "should": 2, "get_first_root_nod": [2, 7], "empti": 2, "mynodemodel": [2, 9], "get_last_root_nod": [2, 7], "get_root_nod": [2, 7], "load_bulk": [2, 7, 9], "bulk_data": 2, "keep_id": 2, "load": 2, "dictionari": 2, "structur": [2, 9, 12], "2": [2, 3, 7, 8, 9, 11, 12], "each": [2, 3, 9], "recurs": 2, "receiv": 2, "specifi": 2, "same": [2, 7, 11], "primari": [2, 3], "Will": 2, "error": [2, 3], "ad": [2, 3, 5, 9], "id": [2, 9, 12], "ani": 2, "intern": [2, 3], "ignor": 2, "befor": [2, 6], "won": [2, 9], "anyth": 2, "doesnotexist": 2, "done": 2, "becaus": [2, 3, 9, 12], "dump_data": 2, "integ": 2, "dump": 2, "preced": 2, "over": 2, "21": 2, "22": 2, "23": 2, "231": 2, "24": 2, "3": [2, 3, 7, 8, 9, 11, 12], "4": [2, 3, 9, 11, 12], "41": 2, "dump_bulk": [2, 7, 9, 12], "branch": [2, 7], "python": [2, 8, 11, 12], "whose": 2, "pk": [2, 12], "default": [2, 6, 7, 9, 10, 11], "describ": [2, 9, 10], "detail": [2, 3, 7, 12], "node_obj": 2, "find_problem": [2, 7, 9], "problem": [2, 3, 9], "fix_tre": [2, 7, 9], "solv": [2, 9], "appear": [2, 9], "transact": [2, 9], "piec": [2, 9], "code": [2, 7, 9, 12], "break": [2, 9], "leav": [2, 9], "inconsist": [2, 3, 9], "state": [2, 9], "get_descendants_group_count": [2, 7], "helper": 2, "veri": [2, 9, 10], "common": [2, 3], "case": [2, 9], "get": [2, 8, 9, 12], "group": 2, "NOT": 2, "descendants_count": 2, "root_nod": 2, "mymodel": 2, "print": 2, "repli": 2, "comment": 2, "author": 2, "get_annotated_list": [2, 7, 12], "max_depth": 2, "annot": 2, "option": [2, 8, 11], "limit": [2, 9], "annotated_list": 2, "With": 2, "open": [2, 12], "close": [2, 12], "ab": 2, "aba": 2, "abb": 2, "ac": 2, "templat": [2, 8], "item": 2, "ul": 2, "li": 2, "endif": 2, "endfor": 2, "contribut": 2, "origin": 2, "alexei": 2, "kinyov": 2, "idea": 2, "borrow": 2, "mptt": 2, "version": [2, 3, 8, 11], "55": 2, "get_annotated_list_q": [2, 7, 12], "q": 2, "get_database_vendor": [2, 7], "action": 2, "support": [2, 3, 9, 11], "vendor": 2, "perform": [2, 9], "select": 2, "postgresql": [2, 9, 11], "mysql": [2, 9, 11], "sqlite": [2, 11], "61": 2, "orm": 3, "being": 3, "bypass": 3, "memori": [3, 12], "plan": [3, 9], "after": [3, 6, 9, 12], "modif": 3, "reload": 3, "One": 3, "most": [3, 8, 9, 12], "sourc": 3, "bug": 3, "report": [3, 9], "reli": 3, "correct": 3, "member": 3, "WILL": 3, "To": [3, 9], "avoid": 3, "document": 3, "5": [3, 9, 12], "we": [3, 12], "made": 3, "chang": [3, 6, 9, 10, 11], "name": [3, 12], "expos": 3, "been": 3, "fix": [3, 9], "dev": 3, "even": [3, 9], "older": 3, "instruct": 3, "appli": [3, 12], "attempt": [5, 9], "alphabet": [5, 7, 9], "movenodeform": [6, 7], "file": [6, 8], "auto_id": 6, "id_": 6, "prefix": 6, "initi": 6, "error_class": 6, "util": 6, "errorlist": 6, "label_suffix": 6, "empty_permit": 6, "modelform": 6, "unsort": 6, "two": [6, 9], "These": 6, "For": [6, 8, 9], "directli": [6, 9], "discourag": 6, "special": 6, "care": 6, "exclud": 6, "recommend": [6, 9, 11], "function": 6, "formfield_callback": 6, "widget": 6, "proper": 6, "meta": 6, "By": [6, 11], "full": [6, 9], "modelform_factori": 6, "mynodeform": 6, "effici": [7, 9, 10], "web": 7, "framework": 7, "8": [7, 9, 11], "written": 7, "gustavo": 7, "pic\u00f3n": 7, "licens": 7, "apach": 7, "flexibl": 7, "differ": 7, "optim": [7, 9], "naiv": 7, "easi": 7, "clean": 7, "testabl": 7, "well": 7, "test": [7, 9], "coverag": 7, "abov": 7, "96": 7, "instal": [7, 11], "prerequisit": 7, "pip": [7, 11], "easy_instal": 7, "setup": 7, "py": [7, 9, 12], "deb": 7, "packag": 7, "configur": [7, 9], "tutori": 7, "raw": [7, 9, 12], "queri": [7, 9, 10, 12], "changelog": 7, "steplen": [7, 9], "numchild": [7, 9], "mp_nodemanag": [7, 9], "mp_nodequeryset": [7, 9], "lft": [7, 10], "rgt": [7, 10], "tree_id": [7, 10], "ns_nodemanag": [7, 10], "ns_nodequeryset": [7, 10], "admin": 7, "interfac": 7, "advanc": 7, "basic": [7, 12], "page": [7, 8], "run": [7, 8, 9], "suit": 7, "pytest": 7, "tox": 7, "index": [7, 9], "modul": 7, "search": 7, "least": 8, "6": [8, 9, 12], "later": 8, "sever": 8, "re": [8, 9], "sure": 8, "releas": 8, "pypi": 8, "reason": 8, "risk": [8, 9], "alwai": [8, 9], "unzip": 8, "download": 8, "unpack": 8, "both": 8, "debian": 8, "ubuntu": 8, "so": [8, 9], "apt": 8, "aptitud": 8, "rememb": 8, "linux": 8, "distribut": 8, "usual": 8, "recent": 8, "installed_app": 8, "go": 8, "template_dir": 8, "also": [8, 9, 10], "context_processor": 8, "request": 8, "http": 8, "doc": 8, "djangoproject": 8, "com": 8, "en": 8, "11": [8, 11], "ref": 8, "upgrad": 8, "how": 8, "within": 8, "core": 8, "vadim": 9, "tropashko": 9, "design": 9, "pattern": 9, "probabl": 9, "fastest": 9, "work": 9, "oracl": 9, "connect": 9, "BY": 9, "sproc": 9, "trigger": 9, "interv": 9, "approach": 9, "denorm": 9, "foreign": 9, "prevent": 9, "step": 9, "width": 9, "separ": 9, "faster": 9, "charact": 9, "address": 9, "encod": 9, "littl": 9, "worri": 9, "other": 9, "heavi": 9, "claus": 9, "002003": 9, "think": 9, "too": 9, "what": 9, "do": 9, "consid": 9, "corrupt": 9, "handler": [9, 10], "sortednod": 9, "length": 9, "allow": 9, "maximum": 9, "1679615": 9, "per": 9, "increas": 9, "larg": 9, "60m": 9, "note": 9, "while": 9, "decreas": 9, "max": 9, "63": 9, "convers": 9, "string": 9, "0123456789abcdefghijklmnopqrstuvwxyz": 9, "portabl": 9, "mean": [9, 11], "collat": 9, "know": 9, "disabl": 9, "tell": 9, "enviro": 9, "treebeard_test_alphabet": 9, "variabl": [9, 11], "k": 9, "test_alphabet": 9, "o": 9, "x": 9, "maverick": 9, "good": 9, "readabl": 9, "three": 9, "17": 9, "9a": 9, "z": 9, "36": 9, "9": 9, "za": 9, "62": 9, "sqlite3": [9, 11], "better": 9, "densiti": 9, "column": 9, "ascii": 9, "printabl": 9, "0x20": 9, "0x7e": 9, "varchar": 9, "deeper": 9, "redeclar": 9, "1024": 9, "uniqu": 9, "safe": 9, "utf": 9, "unicod": 9, "iso8859": 9, "etc": 9, "keep": 9, "smaller": 9, "small": 9, "size": 9, "innodb": 9, "765": 9, "byte": 9, "would": 9, "numconv": 9, "popul": 9, "via": 9, "obj": 9, "cl": 9, "__class__": 9, "metod": 9, "occur": 9, "incomplet": 9, "tupl": 9, "five": 9, "found": 9, "wrong": 9, "orphan": 9, "exhibit": 9, "stop": 9, "find": 9, "continu": 9, "automat": 9, "destruct": 9, "fix_path": 9, "incorrect": 9, "due": 9, "lack": 9, "hole": 9, "lot": [9, 11], "affect": 9, "enforc": 9, "boolean": 9, "slower": 9, "complex": 9, "broken": 9, "deprec": 9, "alia": 9, "hint": [9, 10], "joe": 10, "celko": 10, "hierarchi": 10, "smarti": 10, "high": 10, "comprehens": 11, "highli": 11, "send": 11, "patch": 11, "Then": 11, "plugin": 11, "ram": 11, "environ": 11, "database_us": 11, "database_password": 11, "database_host": 11, "database_user_postgr": 11, "database_port_postgr": 11, "database_user_mysql": 11, "database_port_mysql": 11, "engin": 11, "product": 11, "permut": 11, "mssql": 11, "long": 11, "time": 11, "few": 11, "e": 11, "py39": 11, "dj32": 11, "postgr": 11, "categori": 12, "30": 12, "def": 12, "__str__": 12, "format": 12, "migrat": 12, "makemigr": 12, "let": 12, "treebeard_tutori": 12, "lambda": 12, "node_id": 12, "comput": 12, "hardwar": 12, "hard": 12, "drive": 12, "ssd": 12, "desktop": 12, "laptop": 12, "server": 12, "why": 12, "retriev": 12, "again": 12, "entri": 12, "u": 12, "7": 12, "filter": 12, "name__icontain": 12}, "objects": {"treebeard": [[0, 0, 0, "-", "admin"], [1, 0, 0, "-", "al_tree"], [5, 0, 0, "-", "exceptions"], [6, 0, 0, "-", "forms"], [2, 0, 0, "-", "models"], [9, 0, 0, "-", "mp_tree"], [10, 0, 0, "-", "ns_tree"]], "treebeard.admin": [[0, 1, 1, "", "TreeAdmin"], [0, 2, 1, "", "admin_factory"]], "treebeard.al_tree": [[1, 1, 1, "", "AL_Node"], [1, 1, 1, "", "AL_NodeManager"]], "treebeard.al_tree.AL_Node": [[1, 3, 1, "", "get_depth"], [1, 4, 1, "", "node_order_by"], [1, 4, 1, "", "parent"], [1, 4, 1, "", "sib_order"]], "treebeard.exceptions": [[5, 5, 1, "", "InvalidMoveToDescendant"], [5, 5, 1, "", "InvalidPosition"], [5, 5, 1, "", "MissingNodeOrderBy"], [5, 5, 1, "", "NodeAlreadySaved"], [5, 5, 1, "", "PathOverflow"]], "treebeard.forms": [[6, 1, 1, "", "MoveNodeForm"], [6, 2, 1, "", "movenodeform_factory"]], "treebeard.models": [[2, 1, 1, "", "Node"]], "treebeard.models.Node": [[2, 3, 1, "", "add_child"], [2, 3, 1, "", "add_root"], [2, 3, 1, "", "add_sibling"], [2, 3, 1, "", "delete"], [2, 3, 1, "", "dump_bulk"], [2, 3, 1, "", "find_problems"], [2, 3, 1, "", "fix_tree"], [2, 3, 1, "", "get_ancestors"], [2, 3, 1, "", "get_annotated_list"], [2, 3, 1, "", "get_annotated_list_qs"], [2, 3, 1, "", "get_children"], [2, 3, 1, "", "get_children_count"], [2, 3, 1, "", "get_database_vendor"], [2, 3, 1, "", "get_depth"], [2, 3, 1, "", "get_descendant_count"], [2, 3, 1, "", "get_descendants"], [2, 3, 1, "", "get_descendants_group_count"], [2, 3, 1, "", "get_first_child"], [2, 3, 1, "", "get_first_root_node"], [2, 3, 1, "", "get_first_sibling"], [2, 3, 1, "", "get_last_child"], [2, 3, 1, "", "get_last_root_node"], [2, 3, 1, "", "get_last_sibling"], [2, 3, 1, "", "get_next_sibling"], [2, 3, 1, "", "get_parent"], [2, 3, 1, "", "get_prev_sibling"], [2, 3, 1, "", "get_root"], [2, 3, 1, "", "get_root_nodes"], [2, 3, 1, "", "get_siblings"], [2, 3, 1, "", "get_tree"], [2, 3, 1, "", "is_child_of"], [2, 3, 1, "", "is_descendant_of"], [2, 3, 1, "", "is_leaf"], [2, 3, 1, "", "is_root"], [2, 3, 1, "", "is_sibling_of"], [2, 3, 1, "", "load_bulk"], [2, 3, 1, "", "move"], [2, 3, 1, "", "save"]], "treebeard.mp_tree": [[9, 1, 1, "", "MP_Node"], [9, 1, 1, "", "MP_NodeManager"], [9, 1, 1, "", "MP_NodeQuerySet"]], "treebeard.mp_tree.MP_Node": [[9, 3, 1, "", "add_child"], [9, 3, 1, "", "add_root"], [9, 3, 1, "", "add_sibling"], [9, 4, 1, "", "alphabet"], [9, 4, 1, "", "depth"], [9, 3, 1, "", "find_problems"], [9, 3, 1, "", "fix_tree"], [9, 3, 1, "", "get_tree"], [9, 3, 1, "", "move"], [9, 4, 1, "", "node_order_by"], [9, 4, 1, "", "numchild"], [9, 4, 1, "", "path"], [9, 4, 1, "", "steplen"]], "treebeard.ns_tree": [[10, 1, 1, "", "NS_Node"], [10, 1, 1, "", "NS_NodeManager"], [10, 1, 1, "", "NS_NodeQuerySet"]], "treebeard.ns_tree.NS_Node": [[10, 4, 1, "", "depth"], [10, 3, 1, "", "get_tree"], [10, 4, 1, "", "lft"], [10, 4, 1, "", "node_order_by"], [10, 4, 1, "", "rgt"], [10, 4, 1, "", "tree_id"]], "": [[11, 6, 1, "cmdoption-arg-DATABASE_HOST", "DATABASE_HOST"], [11, 6, 1, "cmdoption-arg-DATABASE_PASSWORD", "DATABASE_PASSWORD"], [11, 6, 1, "cmdoption-arg-DATABASE_PORT_MYSQL", "DATABASE_PORT_MYSQL"], [11, 6, 1, "cmdoption-arg-DATABASE_PORT_POSTGRES", "DATABASE_PORT_POSTGRES"], [11, 6, 1, "cmdoption-arg-DATABASE_USER", "DATABASE_USER"], [11, 6, 1, "cmdoption-arg-DATABASE_USER_MYSQL", "DATABASE_USER_MYSQL"], [11, 6, 1, "cmdoption-arg-DATABASE_USER_POSTGRES", "DATABASE_USER_POSTGRES"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:function", "3": "py:method", "4": "py:attribute", "5": "py:exception", "6": "std:cmdoption"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "function", "Python function"], "3": ["py", "method", "Python method"], "4": ["py", "attribute", "Python attribute"], "5": ["py", "exception", "Python exception"], "6": ["std", "cmdoption", "program option"]}, "titleterms": {"admin": 0, "api": [0, 2], "interfac": 0, "advanc": 0, "basic": 0, "model": [0, 3], "detail": 0, "page": 0, "adjac": 1, "list": 1, "tree": [1, 9, 10], "known": 3, "caveat": 3, "raw": 3, "queri": 3, "overrid": 3, "default": 3, "manag": 3, "custom": 3, "copi": 3, "instanc": 3, "changelog": 4, "except": 5, "form": 6, "django": 7, "treebeard": 7, "overview": 7, "refer": 7, "addit": 7, "featur": 7, "develop": 7, "indic": 7, "tabl": 7, "instal": 8, "prerequisit": 8, "pip": 8, "easy_instal": 8, "setup": 8, "py": 8, "deb": 8, "packag": 8, "configur": 8, "materi": 9, "path": 9, "nest": 10, "set": 10, "run": 11, "test": 11, "suit": 11, "pytest": 11, "tox": 11, "tutori": 12}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.todo": 2, "sphinx.ext.intersphinx": 1, "sphinx": 57}, "alltitles": {"Admin": [[0, "admin"]], "API": [[0, "module-treebeard.admin"], [2, "module-treebeard.models"]], "Interface": [[0, "interface"]], "Advanced Interface": [[0, "advanced-interface"]], "Basic Interface": [[0, "basic-interface"]], "Model Detail Pages": [[0, "model-detail-pages"]], "Adjacency List trees": [[1, "module-treebeard.al_tree"]], "Known Caveats": [[3, "known-caveats"]], "Raw Queries": [[3, "raw-queries"]], "Overriding the default manager": [[3, "overriding-the-default-manager"]], "Custom Managers": [[3, "custom-managers"]], "Copying model instances": [[3, "copying-model-instances"]], "Changelog": [[4, "changelog"]], "Exceptions": [[5, "module-treebeard.exceptions"]], "Forms": [[6, "module-treebeard.forms"]], "django-treebeard": [[7, "django-treebeard"]], "Overview": [[7, "overview"]], "Reference": [[7, "reference"]], "Additional features": [[7, "additional-features"]], "Development": [[7, "development"]], "Indices and tables": [[7, "indices-and-tables"]], "Installation": [[8, "installation"]], "Prerequisites": [[8, "prerequisites"]], "Installing": [[8, "installing"]], "pip (or easy_install)": [[8, "pip-or-easy-install"]], "setup.py": [[8, "setup-py"]], ".deb packages": [[8, "deb-packages"]], "Configuration": [[8, "configuration"]], "Materialized Path trees": [[9, "module-treebeard.mp_tree"]], "Nested Sets trees": [[10, "module-treebeard.ns_tree"]], "Running the Test Suite": [[11, "running-the-test-suite"]], "pytest": [[11, "pytest"]], "tox": [[11, "tox"]], "Tutorial": [[12, "tutorial"]]}, "indexentries": {"treeadmin (class in treebeard.admin)": [[0, "treebeard.admin.TreeAdmin"]], "admin_factory() (in module treebeard.admin)": [[0, "treebeard.admin.admin_factory"]], "module": [[0, "module-treebeard.admin"], [1, "module-treebeard.al_tree"], [2, "module-treebeard.models"], [5, "module-treebeard.exceptions"], [6, "module-treebeard.forms"], [9, "module-treebeard.mp_tree"], [10, "module-treebeard.ns_tree"]], "treebeard.admin": [[0, "module-treebeard.admin"]], "al_node (class in treebeard.al_tree)": [[1, "treebeard.al_tree.AL_Node"]], "al_nodemanager (class in treebeard.al_tree)": [[1, "treebeard.al_tree.AL_NodeManager"]], "get_depth() (treebeard.al_tree.al_node method)": [[1, "treebeard.al_tree.AL_Node.get_depth"]], "node_order_by (treebeard.al_tree.al_node attribute)": [[1, "treebeard.al_tree.AL_Node.node_order_by"]], "parent (treebeard.al_tree.al_node attribute)": [[1, "treebeard.al_tree.AL_Node.parent"]], "sib_order (treebeard.al_tree.al_node attribute)": [[1, "treebeard.al_tree.AL_Node.sib_order"]], "treebeard.al_tree": [[1, "module-treebeard.al_tree"]], "node (class in treebeard.models)": [[2, "treebeard.models.Node"]], "add_child() (treebeard.models.node method)": [[2, "treebeard.models.Node.add_child"]], "add_root() (treebeard.models.node class method)": [[2, "treebeard.models.Node.add_root"]], "add_sibling() (treebeard.models.node method)": [[2, "treebeard.models.Node.add_sibling"]], "delete() (treebeard.models.node method)": [[2, "treebeard.models.Node.delete"]], "dump_bulk() (treebeard.models.node class method)": [[2, "treebeard.models.Node.dump_bulk"]], "find_problems() (treebeard.models.node class method)": [[2, "treebeard.models.Node.find_problems"]], "fix_tree() (treebeard.models.node class method)": [[2, "treebeard.models.Node.fix_tree"]], "get_ancestors() (treebeard.models.node method)": [[2, "treebeard.models.Node.get_ancestors"]], "get_annotated_list() (treebeard.models.node class method)": [[2, "treebeard.models.Node.get_annotated_list"]], "get_annotated_list_qs() (treebeard.models.node class method)": [[2, "treebeard.models.Node.get_annotated_list_qs"]], "get_children() (treebeard.models.node method)": [[2, "treebeard.models.Node.get_children"]], "get_children_count() (treebeard.models.node method)": [[2, "treebeard.models.Node.get_children_count"]], "get_database_vendor() (treebeard.models.node class method)": [[2, "treebeard.models.Node.get_database_vendor"]], "get_depth() (treebeard.models.node method)": [[2, "treebeard.models.Node.get_depth"]], "get_descendant_count() (treebeard.models.node method)": [[2, "treebeard.models.Node.get_descendant_count"]], "get_descendants() (treebeard.models.node method)": [[2, "treebeard.models.Node.get_descendants"]], "get_descendants_group_count() (treebeard.models.node class method)": [[2, "treebeard.models.Node.get_descendants_group_count"]], "get_first_child() (treebeard.models.node method)": [[2, "treebeard.models.Node.get_first_child"]], "get_first_root_node() (treebeard.models.node class method)": [[2, "treebeard.models.Node.get_first_root_node"]], "get_first_sibling() (treebeard.models.node method)": [[2, "treebeard.models.Node.get_first_sibling"]], "get_last_child() (treebeard.models.node method)": [[2, "treebeard.models.Node.get_last_child"]], "get_last_root_node() (treebeard.models.node class method)": [[2, "treebeard.models.Node.get_last_root_node"]], "get_last_sibling() (treebeard.models.node method)": [[2, "treebeard.models.Node.get_last_sibling"]], "get_next_sibling() (treebeard.models.node method)": [[2, "treebeard.models.Node.get_next_sibling"]], "get_parent() (treebeard.models.node method)": [[2, "treebeard.models.Node.get_parent"]], "get_prev_sibling() (treebeard.models.node method)": [[2, "treebeard.models.Node.get_prev_sibling"]], "get_root() (treebeard.models.node method)": [[2, "treebeard.models.Node.get_root"]], "get_root_nodes() (treebeard.models.node class method)": [[2, "treebeard.models.Node.get_root_nodes"]], "get_siblings() (treebeard.models.node method)": [[2, "treebeard.models.Node.get_siblings"]], "get_tree() (treebeard.models.node class method)": [[2, "treebeard.models.Node.get_tree"]], "is_child_of() (treebeard.models.node method)": [[2, "treebeard.models.Node.is_child_of"]], "is_descendant_of() (treebeard.models.node method)": [[2, "treebeard.models.Node.is_descendant_of"]], "is_leaf() (treebeard.models.node method)": [[2, "treebeard.models.Node.is_leaf"]], "is_root() (treebeard.models.node method)": [[2, "treebeard.models.Node.is_root"]], "is_sibling_of() (treebeard.models.node method)": [[2, "treebeard.models.Node.is_sibling_of"]], "load_bulk() (treebeard.models.node class method)": [[2, "treebeard.models.Node.load_bulk"]], "move() (treebeard.models.node method)": [[2, "treebeard.models.Node.move"]], "save() (treebeard.models.node method)": [[2, "treebeard.models.Node.save"]], "treebeard.models": [[2, "module-treebeard.models"]], "invalidmovetodescendant": [[5, "treebeard.exceptions.InvalidMoveToDescendant"]], "invalidposition": [[5, "treebeard.exceptions.InvalidPosition"]], "missingnodeorderby": [[5, "treebeard.exceptions.MissingNodeOrderBy"]], "nodealreadysaved": [[5, "treebeard.exceptions.NodeAlreadySaved"]], "pathoverflow": [[5, "treebeard.exceptions.PathOverflow"]], "treebeard.exceptions": [[5, "module-treebeard.exceptions"]], "movenodeform (class in treebeard.forms)": [[6, "treebeard.forms.MoveNodeForm"]], "movenodeform_factory() (in module treebeard.forms)": [[6, "treebeard.forms.movenodeform_factory"]], "treebeard.forms": [[6, "module-treebeard.forms"]], "mp_node (class in treebeard.mp_tree)": [[9, "treebeard.mp_tree.MP_Node"]], "mp_nodemanager (class in treebeard.mp_tree)": [[9, "treebeard.mp_tree.MP_NodeManager"]], "mp_nodequeryset (class in treebeard.mp_tree)": [[9, "treebeard.mp_tree.MP_NodeQuerySet"]], "treebeard_test_alphabet": [[9, "index-0"]], "add_child() (treebeard.mp_tree.mp_node method)": [[9, "treebeard.mp_tree.MP_Node.add_child"]], "add_root() (treebeard.mp_tree.mp_node class method)": [[9, "treebeard.mp_tree.MP_Node.add_root"]], "add_sibling() (treebeard.mp_tree.mp_node method)": [[9, "treebeard.mp_tree.MP_Node.add_sibling"]], "alphabet (treebeard.mp_tree.mp_node attribute)": [[9, "treebeard.mp_tree.MP_Node.alphabet"]], "depth (treebeard.mp_tree.mp_node attribute)": [[9, "treebeard.mp_tree.MP_Node.depth"]], "environment variable": [[9, "index-0"]], "find_problems() (treebeard.mp_tree.mp_node class method)": [[9, "treebeard.mp_tree.MP_Node.find_problems"]], "fix_tree() (treebeard.mp_tree.mp_node class method)": [[9, "treebeard.mp_tree.MP_Node.fix_tree"]], "get_tree() (treebeard.mp_tree.mp_node class method)": [[9, "treebeard.mp_tree.MP_Node.get_tree"]], "move() (treebeard.mp_tree.mp_node method)": [[9, "treebeard.mp_tree.MP_Node.move"]], "node_order_by (treebeard.mp_tree.mp_node attribute)": [[9, "treebeard.mp_tree.MP_Node.node_order_by"]], "numchild (treebeard.mp_tree.mp_node attribute)": [[9, "treebeard.mp_tree.MP_Node.numchild"]], "path (treebeard.mp_tree.mp_node attribute)": [[9, "treebeard.mp_tree.MP_Node.path"]], "steplen (treebeard.mp_tree.mp_node attribute)": [[9, "treebeard.mp_tree.MP_Node.steplen"]], "treebeard.mp_tree": [[9, "module-treebeard.mp_tree"]], "ns_node (class in treebeard.ns_tree)": [[10, "treebeard.ns_tree.NS_Node"]], "ns_nodemanager (class in treebeard.ns_tree)": [[10, "treebeard.ns_tree.NS_NodeManager"]], "ns_nodequeryset (class in treebeard.ns_tree)": [[10, "treebeard.ns_tree.NS_NodeQuerySet"]], "depth (treebeard.ns_tree.ns_node attribute)": [[10, "treebeard.ns_tree.NS_Node.depth"]], "get_tree() (treebeard.ns_tree.ns_node class method)": [[10, "treebeard.ns_tree.NS_Node.get_tree"]], "lft (treebeard.ns_tree.ns_node attribute)": [[10, "treebeard.ns_tree.NS_Node.lft"]], "node_order_by (treebeard.ns_tree.ns_node attribute)": [[10, "treebeard.ns_tree.NS_Node.node_order_by"]], "rgt (treebeard.ns_tree.ns_node attribute)": [[10, "treebeard.ns_tree.NS_Node.rgt"]], "tree_id (treebeard.ns_tree.ns_node attribute)": [[10, "treebeard.ns_tree.NS_Node.tree_id"]], "treebeard.ns_tree": [[10, "module-treebeard.ns_tree"]], "database_host": [[11, "cmdoption-arg-DATABASE_HOST"]], "database_password": [[11, "cmdoption-arg-DATABASE_PASSWORD"]], "database_port_mysql": [[11, "cmdoption-arg-DATABASE_PORT_MYSQL"]], "database_port_postgres": [[11, "cmdoption-arg-DATABASE_PORT_POSTGRES"]], "database_user": [[11, "cmdoption-arg-DATABASE_USER"]], "database_user_mysql": [[11, "cmdoption-arg-DATABASE_USER_MYSQL"]], "database_user_postgres": [[11, "cmdoption-arg-DATABASE_USER_POSTGRES"]], "command line option": [[11, "cmdoption-arg-DATABASE_HOST"], [11, "cmdoption-arg-DATABASE_PASSWORD"], [11, "cmdoption-arg-DATABASE_PORT_MYSQL"], [11, "cmdoption-arg-DATABASE_PORT_POSTGRES"], [11, "cmdoption-arg-DATABASE_USER"], [11, "cmdoption-arg-DATABASE_USER_MYSQL"], [11, "cmdoption-arg-DATABASE_USER_POSTGRES"]]}})