pax_global_header 0000666 0000000 0000000 00000000064 15145612052 0014513 g ustar 00root root 0000000 0000000 52 comment=0a554030413ab8c39b8f353adca375b927c5fe10
django-treebeard-django-treebeard-0a55403/ 0000775 0000000 0000000 00000000000 15145612052 0020346 5 ustar 00root root 0000000 0000000 django-treebeard-django-treebeard-0a55403/.coveragerc 0000664 0000000 0000000 00000000621 15145612052 0022466 0 ustar 00root root 0000000 0000000 [run]
branch = True
source = treebeard
parallel = True
data_file = .tests/coverage
[paths]
source =
./
*\workspace\django-treebeard\tox_db\*\tox_django\*\tox_python\*\os\windows/
*/jobs/django-treebeard/workspace/TOX_DB/*/TOX_DJANGO/*/TOX_PYTHON/*/os/osx/
*/workspace/django-treebeard/TOX_DB/*/TOX_DJANGO/*/TOX_PYTHON/*/os/linux/
[report]
omit =
*/tests/*
*/numconv.py
precision = 2
django-treebeard-django-treebeard-0a55403/.github/ 0000775 0000000 0000000 00000000000 15145612052 0021706 5 ustar 00root root 0000000 0000000 django-treebeard-django-treebeard-0a55403/.github/workflows/ 0000775 0000000 0000000 00000000000 15145612052 0023743 5 ustar 00root root 0000000 0000000 django-treebeard-django-treebeard-0a55403/.github/workflows/publish.yml 0000664 0000000 0000000 00000001361 15145612052 0026135 0 ustar 00root root 0000000 0000000 name: Publish django-treebeard
on:
push:
tags:
- '*'
jobs:
publish:
name: "Publish release"
runs-on: "ubuntu-latest"
environment:
name: deploy
steps:
- uses: actions/checkout@v5
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install build --user
- name: Build 🐍 Python 📦 Package
run: python -m build --sdist --wheel --outdir dist/
- name: Publish 🐍 Python 📦 Package to PyPI
if: startsWith(github.ref, 'refs/tags')
uses: pypa/gh-action-pypi-publish@v1.13.0
with:
password: ${{ secrets.PYPI_API_TOKEN_TREEBEARD }}
django-treebeard-django-treebeard-0a55403/.github/workflows/test.yml 0000664 0000000 0000000 00000013372 15145612052 0025453 0 ustar 00root root 0000000 0000000 name: Test django-treebeard
on:
push:
branches:
- master
pull_request:
branches:
- master
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
lint-python:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
with:
ref: ${{ github.ref }}
- uses: astral-sh/ruff-action@v3
with:
version: "0.14.x"
- run: ruff check --fix
- run: ruff format --check --diff
test-sqlite:
name: SQlite, Python ${{ matrix.python-version }}, Django ${{ matrix.django-version }}
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
python-version: [3.12, 3.14]
django-version: [52, 60]
steps:
- uses: actions/checkout@v5
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
- name: Install dependencies
run: pip install tox
- name: Run tests
run: tox -e "py-dj${{ matrix.django-version }}-sqlite"
test-postgres:
name: Postgres, Python ${{ matrix.python-version }}, Django ${{ matrix.django-version }}
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
python-version: [3.12, 3.14]
django-version: [52, 60]
services:
postgres:
image: postgres:15
ports:
- 5432/tcp
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
env:
POSTGRES_USER: root
POSTGRES_PASSWORD: treebeard
POSTGRES_DB: treebeard
steps:
- uses: actions/checkout@v5
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
- name: Install dependencies
run: pip install tox
- name: Run tests
env:
DATABASE_USER_POSTGRES: root
DATABASE_PASSWORD: treebeard
DATABASE_HOST: 127.0.0.1
DATABASE_PORT_POSTGRES: ${{ job.services.postgres.ports[5432] }} # get randomly assigned published port
# Postgres covers the entire codebase, so we enforce a coverage check
run: tox -e "py-dj${{ matrix.django-version }}-postgres" -- --cov-fail-under 96
test-mysql:
name: MySQL, Python ${{ matrix.python-version }}, Django ${{ matrix.django-version }}
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
python-version: [3.12, 3.14]
django-version: [52, 60]
services:
mysql:
image: mysql:9.5
options: --health-cmd="mysqladmin ping" --health-interval 10s --health-timeout 5s --health-retries 5
env:
MYSQL_ROOT_PASSWORD: treebeard
ports:
- 3306/tcp
steps:
- uses: actions/checkout@v5
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
- name: Install dependencies
run: pip install tox
- name: Run tests
env:
DATABASE_USER_MYSQL: root
DATABASE_PASSWORD: treebeard
DATABASE_HOST: 127.0.0.1
DATABASE_PORT_MYSQL: ${{ job.services.mysql.ports[3306] }} # get randomly assigned published port
run: tox -e "py-dj${{ matrix.django-version }}-mysql"
test-mariadb:
name: MariaDB, Python ${{ matrix.python-version }}, Django ${{ matrix.django-version }}
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
python-version: [3.12, 3.14]
django-version: [52, 60]
services:
mysql:
image: mariadb:10.6
options: --health-cmd="healthcheck.sh --connect" --health-interval 10s --health-timeout 5s --health-retries 5
env:
MYSQL_ROOT_PASSWORD: treebeard
ports:
- 3306/tcp
steps:
- uses: actions/checkout@v5
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
- name: Install dependencies
run: pip install tox
- name: Run tests
env:
DATABASE_USER_MYSQL: root
DATABASE_PASSWORD: treebeard
DATABASE_HOST: 127.0.0.1
DATABASE_PORT_MYSQL: ${{ job.services.mysql.ports[3306] }} # get randomly assigned published port
run: tox -e "py-dj${{ matrix.django-version }}-mysql"
test-mssql:
name: MSSQL, Python ${{ matrix.python-version }}, Django ${{ matrix.django-version }}
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
python-version: [3.12, 3.14]
django-version: [52] # mssql-django doesn't yet support Django 6
services:
mssql:
image: mcr.microsoft.com/mssql/server:2019-latest
env:
SA_PASSWORD: Password12!
ACCEPT_EULA: 'Y'
ports:
- 1433/tcp
steps:
- uses: actions/checkout@v5
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
- name: Install dependencies
run: pip install tox
- name: Install ODBC driver for MSSQL
run: |
curl -sSL -O https://packages.microsoft.com/config/ubuntu/$(grep VERSION_ID /etc/os-release | cut -d '"' -f 2)/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install msodbcsql18 mssql-tools18 -y
- name: Run tests
env:
DATABASE_PORT_MSSQL: ${{ job.services.mssql.ports[1433] }} # get randomly assigned published port
run: tox -e "py-dj${{ matrix.django-version }}-mssql" django-treebeard-django-treebeard-0a55403/.gitignore 0000664 0000000 0000000 00000000445 15145612052 0022341 0 ustar 00root root 0000000 0000000 .DS_Store
.buildinfo
.tests
*.pyc
*.orig
*.swp
.coverage
build
dist
_build
MANIFEST
.project
.pydevproject
.settings
htmlcov
.tox
*.egg-info
.cache
.idea
.ropeproject
*.coverage
*~
*.sqlite
*coverage.xml
*egg-info*
docs/build
test-reports
bin/
include/
lib/
distribute*
share/
venv/
.DS_store
django-treebeard-django-treebeard-0a55403/.pre-commit-config.yaml 0000664 0000000 0000000 00000000325 15145612052 0024627 0 ustar 00root root 0000000 0000000 repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
# Ruff version.
rev: v0.14.0
hooks:
# Run the linter.
- id: ruff-check
args: [ --fix ]
# Run the formatter.
- id: ruff-format django-treebeard-django-treebeard-0a55403/.readthedocs.yaml 0000664 0000000 0000000 00000000314 15145612052 0023573 0 ustar 00root root 0000000 0000000 version: 2
build:
os: ubuntu-24.04
tools:
python: "3.12"
apt_packages:
- graphviz
sphinx:
configuration: docs/source/conf.py
python:
install:
- requirements: docs/requirements.txt django-treebeard-django-treebeard-0a55403/AUTHORS 0000664 0000000 0000000 00000001034 15145612052 0021414 0 ustar 00root root 0000000 0000000 Treebeard was created in 2008 by Gustavo Picon.
Contributions made by:
* Aureal
* Jean-Matthieu Barbier
* Jesus del Carpio
* chembervint
* Matt Hoskins
* Rob Hudson
* Alexey Kinyov
* Martin Koistinen
* omad
* Oregon Center for Applied Science
* Alejandro Peralta
* Jaap Roes
* Alexei Vlasov
* moberley
* czare1
* Fernando Gutierrez (xbito)
* Jens Diemer
* Jacob Rief
* Maik Hoepfel
* Samir Shah
* Johannes Wilm
* Awais Qureshi
* Julian Wachholz
django-treebeard-django-treebeard-0a55403/CHANGES.md 0000664 0000000 0000000 00000032021 15145612052 0021736 0 ustar 00root root 0000000 0000000 Release 5.0.5 (Feb 19, 2026)
------------------------------
Treebeard 5.0.5 is a bugfix release.
* Reverted change to lock root nodes when adding a new root, which had unwanted performance implications.
Release 5.0.4 (Feb 19, 2026)
------------------------------
Treebeard 5.0.4 is a bugfix release.
* Fixed `TypeError` when adding root nodes for MP and LT trees with `node_order_by` set.
Release 5.0.3 (Feb 18, 2026)
------------------------------
Treebeard 5.0.3 is a bugfix release.
* Added row locks to prevent potential race conditions when concurrently calling `add_child()` on the same node,
or when concurrently adding root nodes.
Release 5.0.2 (Feb 13, 2026)
------------------------------
Treebeard 5.0.2 is a bugfix release.
* MP and NS nodes are refreshed from the database after a move, for a better developer experience.
Previously it was left to the developer to refresh manually if they needed to use the node,
and this was the source of numerous issues.
* Fixed handling of reverse ordering in `node_order_by`.
* Fixed handling of inherited models in `TreeAdmin`.
* Fixed adding root nodes for inherited models.
* Handled null values of fields specified in `node_order_by` more gracefully: ignore the field
for the purpose of ordering and log a warning to indicate that the value likely needs to be
provided manually.
* Modified `dump_bulk()` methods to use a queryset iterator to avoid loading large datasets into memory.
* Fixed import error with Django 6 if `pyscopg` was not installed.
Release 5.0.1 (Feb 11, 2026)
----------------------------
Treebeard 5.0.1 is a bugfix release.
* Fixed count aggregations not working on MariaDB.
Release 5.0.0 (Feb 11, 2026)
----------------------------
Treebeard 5.0 is a major release with a number of significant changes:
* All operations that previously used raw SQL queries were rewritten to use the Django ORM.
This provides better security, portability across backends, and compability for multiple database setups.
* An experimental implementation using PostgreSQL Ltree was added.
Backward incompatible changes:
* Internal fields used by Treebeard's `MoveNodeForm` have been renamed from
`_position` to `treebeard_position` and `_ref_node_id` to `treebeard_ref_node`.
* Changed initialisation signatures for the internal `MP_AddChildHandler` and `MP_AddSiblingHandler`
to avoid collisions with model field names. Both constructors now expect a mapping of model
creation arguments as a single parameter, instead of keywords arguments passed to the constructor.
* `MoveNodeForm` has been refactored to use a `ModelChoiceField` for selecting the relative node. This field
can be used by projects, e.g., for foreign keys in the Django admin.
* Removed the `Node.get_database_vendor()` helper function which is no longer used.
* The deprecated `destructive` argument was removed from `MP_Node.fix_tree()` use `fix_paths` instead.
Other changes:
* Added support for Python 3.14.
* Added support for Django 6.0.
* Dropped support for Django 4.2 and 5.1.
* All node create and update operations are now run in a transaction to mitigate against race conditions.
* Added a `parent` argument to `MP_Node.fix_tree` to allow fixing only a portion of a tree.
Release 4.8.0 (Dec 3, 2025)
----------------------------
* Add support for Django 5.2, and Python 3.13.
* Drop support for Django 4.1 and 5.0.
* Refactor Django admin integration to be simpler, and more resilient to upstream changes.
* Add `include_self` option to `get_descendants` method.
* Fix KeyError in MP_Node.dump_bulk if ordering differs from depth, path.
* Exclude tests from packaged wheel distribution of django-treebeard
Release 4.7.1 (Jan 31, 2024)
----------------------------
* Fix: Allow usage of CSRF_COOKIE_HTTPONLY setting.
* Add support for Django-5.0.
Release 4.7 (Apr 7, 2023)
----------------------------
* Drop support for Django 4.0.
* Add support for Django 4.2.
Release 4.6.1 (Feb 5, 2023)
----------------------------
* Fix unescaped string representation of `AL_Node` models in the Django admin.
Thanks to goodguyandy for reporting the issue.
* Optimise `MP_Node.get_descendants` to avoid database queries when called on a leaf node.
Release 4.6 (Jan 2, 2023)
----------------------------
* Drop support for Django 3.1 and lower.
* Add support for Django 4.0 and 4.1.
* Drop support for Python 3.7 and lower.
* Add support for Python 3.10 and Python 3.11.
* Change the return value of `delete()` for all node classes to be consistent with Django,
and return a tuple of the number of objects deleted and a dictionary with the number of
deletions per object type.
* Change the `delete()` methods for all node classes to accept arbitrary positional and
keyword arguments which are passed to the parent method.
* Set `alters_data` and `queryset_only` attributes on the `delete()` methods for all node classes
to prevent them being used in an unwanted context (e.g., in Django templates).
* Drop dependency on jQuery UI in the admin.
Release 4.5.1 (Feb 22, 2021)
----------------------------
* Removed unnecessary default in MP's depth field.
Release 4.5 (Feb 17, 2021)
--------------------------
* Add support for custom primary key fields with custom names.
* Add support for Python 3.9.
* Add support for MSSQL 2019.
* Add Code of conduct
* Removed outdated Sqlite workaround code
* Remove last remains of Python 2.7 code
* Use Pytest-django and fixtures for testing
Release 4.4 (Jan 13, 2021)
----------------------------
* Implement a non-destructive path-fixing algorithm for `MP_Node.fix_tree`.
* Ensure `post_save` is triggered *after* the parent node is updated in `MP_AddChildHandler`.
* Fix static URL generation to use `static` template tag instead of constructing the URL manually.
* Declare support for Django 2.2, 3.0 and 3.1.
* Drop support for Django 2.1 and lower.
* Drop support for Python 2.7 and Python 3.5.
* Increase performance for `MoveNodeForm` when using large trees.
Release 4.3.1 (Dec 25, 2019)
----------------------------
* Added check to avoid unnecessary database query for `MP_Node.get_ancestors()`
if the node is a root node.
* Drop support for Python-3.4.
* Play more nicely with other form classes, that implement `__init__(self, *args, **kwargs)`,
e.g. django-parler's `TranslatableModelForm`, where `kwargs.get('instance')` is `None`
when called from here.
* Sorting on path on necessary queries, fixes some issues and stabilizes the whole MP section.
* Add German translation strings.
Release 4.3 (Apr 16, 2018)
--------------------------
* Support for Django-2.0
Release 4.2.2 (Mar 11, 2018)
----------------------------
* Bugfix issues #97: UnboundLocalError raised on treebeard admin
Release 4.2.1 (Mar 9, 2018)
----------------------------
* Bugfix issues #90: admin change list view and jsi18n load for Django-1.11
Release 4.2.0 (Dec 8, 2017)
----------------------------
* Support for Django-2.0
Release 4.1.2 (Jun 22, 2017)
----------------------------
* Fixed MANIFEST.in for Debian packaging.
Release 4.1.1 (May 24, 2017)
----------------------------
* Removed deprecated templatetag inclusion
* Added support for Python-3.6
* Added support for MS-SQL
Release 4.1.0 (Nov 24, 2016)
----------------------------
* Add support for Django-1.10
* Drop support for Django-1.7
* Moved Repository from Bitbucket to GitHub
* Moved documentation to https://django-treebeard.readthedocs.io/
* Moved continuous integration to https://travis-ci.org/django-treebeard/django-treebeard
Release 4.0.1 (May 1, 2016)
---------------------------
* Escape input in forms (Martin Koistinen / Divio)
* Clarification on model detail pages (Michael Huang)
Release 4.0 (Dec 28, 2015)
--------------------------
* Added support for 3.5 and Django 1.7, 1.8 and 1.9
* Django 1.6 is no longer supported.
* Remove deprecated backports needed for now unsupported Django versions
* Fixed a bug with queryset deletion not handling inheritance correctly.
* Assorted documentation fixes
Release 3.0 (Jan 18, 2015)
--------------------------
* Limited tests (and hence support) to Python 2.7+/3.4+ and Django 1.6+
* Removed usage of deprecated Django functions.
* Fixed documentation issues.
* Fixed issues in MoveNodeForm
* Added get_annotated_list_qs and max_depth for get_annotated_list
Release 2.0 (April 2, 2014)
---------------------------
* Stable release.
Release 2.0rc2 (March, 2014)
----------------------------
* Support models that use multi-table inheritance (Matt Wescott)
* Tree methods called on proxy models should consistently return instances
of that proxy model (Matt Wescott)
Release 2.0rc1 (February, 2014)
-------------------------------
* Fixed unicode related issue in the template tags.
* Major documentation cleanup.
* More warnings on the use of managers.
* Faster MP's is_root() method.
Release 2.0b2 (December, 2013)
------------------------------
* Dropped support for Python 2.5
Release 2.0b1 (May 29, 2013)
----------------------------
This is a beta release.
* Added support for Django 1.5 and Python 3.X
* Updated docs: the library supports python 2.5+ and Django 1.4+. Dropped
support for older versions
* Revamped admin interface for MP and NS trees, supporting drag&drop to reorder
nodes. Work on this patch was sponsored by the
`Oregon Center for Applied Science`_, inspired by `FeinCMS`_ developed by
`Jesús del Carpio`_ with tests from `Fernando Gutierrez`_. Thanks ORCAS!
* Updated setup.py to use distribute/setuptools instead of distutils
* Now using pytest for testing
* Small optimization to ns_tree.is_root
* Moved treebeard.tests to it's own directory (instead of tests.py)
* Added the runtests.py test runner
* Added tox support
* Fixed drag&drop bug in the admin
* Fixed a bug when moving MP_Nodes
* Using .pk instead of .id when accessing nodes.
* Removed the Benchmark (tbbench) and example (tbexample) apps.
* Fixed url parts join issues in the admin.
* Fixed: Now installing the static resources
* Fixed ManyToMany form field save handling
* In the admin, the node is now saved when moving so it can trigger handlers
and/or signals.
* Improved translation files, including javascript.
* Renamed Node.get_database_engine() to Node.get_database_vendor(). As the name
implies, it returns the database vendor instead of the engine used. Treebeard
will get the value from Django, but you can subclass the method if needed.
Release 1.61 (Jul 24, 2010)
---------------------------
* Added admin i18n. Included translations: es, ru
* Fixed a bug when trying to introspect the database engine used in Django 1.2+
while using new style db settings (DATABASES). Added
Node.get_database_engine to deal with this.
Release 1.60 (Apr 18, 2010)
---------------------------
* Added get_annotated_list
* Complete revamp of the documentation. It's now divided in sections for easier
reading, and the package includes .rst files instead of the html build.
* Added raw id fields support in the admin
* Fixed setup.py to make it work in 2.4 again
* The correct ordering in NS/MP trees is now enforced in the queryset.
* Cleaned up code, removed some unnecessary statements.
* Tests refactoring, to make it easier to spot the model being tested.
* Fixed support of trees using proxied models. It was broken due to a bug in
Django.
* Fixed a bug in add_child when adding nodes to a non-leaf in sorted MP.
* There are now 648 unit tests. Test coverage is 96%
* This will be the last version compatible with Django 1.0. There will be a
a 1.6.X branch maintained for urgent bug fixes, but the main development will
focus on recent Django versions.
Release 1.52 (Dec 18, 2009)
---------------------------
* Really fixed the installation of templates.
Release 1.51 (Dec 16, 2009)
---------------------------
* Forgot to include treebeard/tempates/\*.html in MANIFEST.in
Release 1.5 (Dec 15, 2009)
--------------------------
New features added
~~~~~~~~~~~~~~~~~~
* Forms
- Added MoveNodeForm
* Django Admin
- Added TreeAdmin
* MP_Node
- Added 2 new checks in MP_Node.find_problems():
4. a list of ids of nodes with the wrong depth value for
their path
5. a list of ids nodes that report a wrong number of children
- Added a new (safer and faster but less comprehensive) MP_Node.fix_tree()
approach.
* Documentation
- Added warnings in the documentation when subclassing MP_Node or NS_Node
and adding a new Meta.
- HTML documentation is now included in the package.
- CHANGES file and section in the docs.
* Other changes:
- script to build documentation
- updated numconv.py
Bugs fixed
~~~~~~~~~~
* Added table quoting to all the sql queries that bypass the ORM.
Solves bug in postgres when the table isn't created by syncdb.
* Removing unused method NS_Node._find_next_node
* Fixed MP_Node.get_tree to include the given parent when given a leaf node
Release 1.1 (Nov 20, 2008)
--------------------------
Bugs fixed
~~~~~~~~~~
* Added exceptions.py
Release 1.0 (Nov 19, 2008)
--------------------------
* First public release.
.. _Oregon Center for Applied Science: http://www.orcasinc.com/
.. _FeinCMS: http://www.feincms.org
.. _Jesús del Carpio: http://www.isgeek.net
.. _Fernando Gutierrez: http://xbito.pe
django-treebeard-django-treebeard-0a55403/CODE_OF_CONDUCT.md 0000664 0000000 0000000 00000006425 15145612052 0023154 0 ustar 00root root 0000000 0000000 # Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, sex characteristics, gender identity and expression,
level of experience, education, socio-economic status, nationality, personal
appearance, race, religion, or sexual identity and orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment
include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at treebeard@tabo.pe. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
[homepage]: https://www.contributor-covenant.org
For answers to common questions about this code of conduct, see
https://www.contributor-covenant.org/faq
django-treebeard-django-treebeard-0a55403/LICENSE 0000664 0000000 0000000 00000026137 15145612052 0021364 0 ustar 00root root 0000000 0000000
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
django-treebeard-django-treebeard-0a55403/MANIFEST.in 0000664 0000000 0000000 00000000453 15145612052 0022106 0 ustar 00root root 0000000 0000000 include CHANGES LICENSE README.rst UPDATING MANIFEST.in
recursive-include treebeard *.py
recursive-include treebeard/static *
recursive-include treebeard/templates *
recursive-include treebeard/locale *
recursive-include docs Makefile README.md make.bat *.py *.png *.rst
recursive-include tests *.py django-treebeard-django-treebeard-0a55403/README.md 0000664 0000000 0000000 00000002747 15145612052 0021637 0 ustar 00root root 0000000 0000000 # django-treebeard
**django-treebeard** is a library that implements efficient tree implementations for the Django Web Framework.
It was written by Gustavo Picón and licensed under the Apache License 2.0.
## Status
[](https://django-treebeard.readthedocs.io/en/latest/?badge=latest)
[]()
[]()

[](https://pypi.org/project/django-treebeard/)
## Features
django-treebeard is:
- **Flexible**: Includes 3 different tree implementations with the
same API:
1. Adjacency List
2. Materialized Path
3. Nested Sets
4. PostgreSQL ltree (experimental)
- **Fast**: Optimized non-naive tree operations
- **Easy**: Uses Django Model Inheritance with abstract classes to
define your own models.
- **Clean**: Testable and well tested code base. Code/branch test
coverage is above 96%.
You can find the documentation at
### Supported versions
**django-treebeard** officially supports
- Django 5.2 and higher
- Python 3.10 and higher
- PostgreSQL, MySQL, MSSQL, SQLite database back-ends.
django-treebeard-django-treebeard-0a55403/SECURITY.md 0000664 0000000 0000000 00000000511 15145612052 0022134 0 ustar 00root root 0000000 0000000 # Security Policy
## Reporting a Vulnerability
To report a vulnerability with this project, please submit details of the issue [using this form](https://forms.gle/gdcjc9yDcPyugVx97).
If you provide your contact information, a member of the team will acknlowledge your submission and let you know how it is being investigated.
django-treebeard-django-treebeard-0a55403/UPDATING 0000664 0000000 0000000 00000000742 15145612052 0021507 0 ustar 00root root 0000000 0000000 This file documents problems you may encounter when upgrading django-treebeard
(potential backward incompatible changes).
20081117:
Cleaned __init__.py, if you need Node you'll have to call it from it's
original location (treebeard.models.Node instead of treebeard.Node). Also
exceptions have been moved to treebeard.exceptions.
20100316:
Queryset ordering in NS/MP trees is now enforced by the library. Previous
ordering settings in META no longer work.
django-treebeard-django-treebeard-0a55403/docs/ 0000775 0000000 0000000 00000000000 15145612052 0021276 5 ustar 00root root 0000000 0000000 django-treebeard-django-treebeard-0a55403/docs/Makefile 0000664 0000000 0000000 00000016442 15145612052 0022745 0 ustar 00root root 0000000 0000000 # Makefile for Sphinx documentation
#
# You can set these variables from the command line.
SPHINXOPTS =
SPHINXBUILD = sphinx-build
PAPER =
BUILDDIR = build
# User-friendly check for sphinx-build
ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1)
$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/)
endif
# Internal variables.
PAPEROPT_a4 = -D latex_paper_size=a4
PAPEROPT_letter = -D latex_paper_size=letter
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
# the i18n builder cannot share the environment and doctrees with the others
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest coverage gettext
help:
@echo "Please use \`make ' where is one of"
@echo " html to make standalone HTML files"
@echo " dirhtml to make HTML files named index.html in directories"
@echo " singlehtml to make a single large HTML file"
@echo " pickle to make pickle files"
@echo " json to make JSON files"
@echo " htmlhelp to make HTML files and a HTML help project"
@echo " qthelp to make HTML files and a qthelp project"
@echo " applehelp to make an Apple Help Book"
@echo " devhelp to make HTML files and a Devhelp project"
@echo " epub to make an epub"
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
@echo " latexpdf to make LaTeX files and run them through pdflatex"
@echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
@echo " text to make text files"
@echo " man to make manual pages"
@echo " texinfo to make Texinfo files"
@echo " info to make Texinfo files and run them through makeinfo"
@echo " gettext to make PO message catalogs"
@echo " changes to make an overview of all changed/added/deprecated items"
@echo " xml to make Docutils-native XML files"
@echo " pseudoxml to make pseudoxml-XML files for display purposes"
@echo " linkcheck to check all external links for integrity"
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
@echo " coverage to run coverage check of the documentation (if enabled)"
clean:
rm -rf $(BUILDDIR)/*
html:
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
dirhtml:
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
singlehtml:
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
@echo
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
pickle:
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
@echo
@echo "Build finished; now you can process the pickle files."
json:
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
@echo
@echo "Build finished; now you can process the JSON files."
htmlhelp:
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
@echo
@echo "Build finished; now you can run HTML Help Workshop with the" \
".hhp project file in $(BUILDDIR)/htmlhelp."
qthelp:
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
@echo
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/django-treebeard.qhcp"
@echo "To view the help file:"
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/django-treebeard.qhc"
applehelp:
$(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp
@echo
@echo "Build finished. The help book is in $(BUILDDIR)/applehelp."
@echo "N.B. You won't be able to view it unless you put it in" \
"~/Library/Documentation/Help or install it in your application" \
"bundle."
devhelp:
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
@echo
@echo "Build finished."
@echo "To view the help file:"
@echo "# mkdir -p $$HOME/.local/share/devhelp/django-treebeard"
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/django-treebeard"
@echo "# devhelp"
epub:
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
@echo
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
latex:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
@echo "Run \`make' in that directory to run these through (pdf)latex" \
"(use \`make latexpdf' here to do that automatically)."
latexpdf:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through pdflatex..."
$(MAKE) -C $(BUILDDIR)/latex all-pdf
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
latexpdfja:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through platex and dvipdfmx..."
$(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
text:
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
@echo
@echo "Build finished. The text files are in $(BUILDDIR)/text."
man:
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
@echo
@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
texinfo:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
@echo
@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
@echo "Run \`make' in that directory to run these through makeinfo" \
"(use \`make info' here to do that automatically)."
info:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
@echo "Running Texinfo files through makeinfo..."
make -C $(BUILDDIR)/texinfo info
@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
gettext:
$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
@echo
@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
changes:
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
@echo
@echo "The overview file is in $(BUILDDIR)/changes."
linkcheck:
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
@echo
@echo "Link check complete; look for any errors in the above output " \
"or in $(BUILDDIR)/linkcheck/output.txt."
doctest:
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
@echo "Testing of doctests in the sources finished, look at the " \
"results in $(BUILDDIR)/doctest/output.txt."
coverage:
$(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage
@echo "Testing of coverage in the sources finished, look at the " \
"results in $(BUILDDIR)/coverage/python.txt."
xml:
$(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
@echo
@echo "Build finished. The XML files are in $(BUILDDIR)/xml."
pseudoxml:
$(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
@echo
@echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."
django-treebeard-django-treebeard-0a55403/docs/README.md 0000664 0000000 0000000 00000001006 15145612052 0022552 0 ustar 00root root 0000000 0000000 This is the documentation source for django-treebeard.
You can read the documentation on:
http://django-treebeard.readthedocs.io/en/latest/
Or create the documentation yourself by compiling the ReStructured Text files:
If you want to build the docs you'll need the graphviz tool, if you are using a Mac and Brew
you can install it like this:
$ brew install graphviz
Then you'll need at least Django and Sphinx:
$ pip install Django
$ pip install Sphinx
To build the docs run:
```bash
$ cd docs/
$ make html
``` django-treebeard-django-treebeard-0a55403/docs/make.bat 0000664 0000000 0000000 00000016151 15145612052 0022707 0 ustar 00root root 0000000 0000000 @ECHO OFF
REM Command file for Sphinx documentation
if "%SPHINXBUILD%" == "" (
set SPHINXBUILD=sphinx-build
)
set BUILDDIR=build
set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% source
set I18NSPHINXOPTS=%SPHINXOPTS% source
if NOT "%PAPER%" == "" (
set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS%
set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS%
)
if "%1" == "" goto help
if "%1" == "help" (
:help
echo.Please use `make ^` where ^ is one of
echo. html to make standalone HTML files
echo. dirhtml to make HTML files named index.html in directories
echo. singlehtml to make a single large HTML file
echo. pickle to make pickle files
echo. json to make JSON files
echo. htmlhelp to make HTML files and a HTML help project
echo. qthelp to make HTML files and a qthelp project
echo. devhelp to make HTML files and a Devhelp project
echo. epub to make an epub
echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter
echo. text to make text files
echo. man to make manual pages
echo. texinfo to make Texinfo files
echo. gettext to make PO message catalogs
echo. changes to make an overview over all changed/added/deprecated items
echo. xml to make Docutils-native XML files
echo. pseudoxml to make pseudoxml-XML files for display purposes
echo. linkcheck to check all external links for integrity
echo. doctest to run all doctests embedded in the documentation if enabled
echo. coverage to run coverage check of the documentation if enabled
goto end
)
if "%1" == "clean" (
for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i
del /q /s %BUILDDIR%\*
goto end
)
REM Check if sphinx-build is available and fallback to Python version if any
%SPHINXBUILD% 2> nul
if errorlevel 9009 goto sphinx_python
goto sphinx_ok
:sphinx_python
set SPHINXBUILD=python -m sphinx.__init__
%SPHINXBUILD% 2> nul
if errorlevel 9009 (
echo.
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
echo.installed, then set the SPHINXBUILD environment variable to point
echo.to the full path of the 'sphinx-build' executable. Alternatively you
echo.may add the Sphinx directory to PATH.
echo.
echo.If you don't have Sphinx installed, grab it from
echo.http://sphinx-doc.org/
exit /b 1
)
:sphinx_ok
if "%1" == "html" (
%SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The HTML pages are in %BUILDDIR%/html.
goto end
)
if "%1" == "dirhtml" (
%SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml.
goto end
)
if "%1" == "singlehtml" (
%SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml.
goto end
)
if "%1" == "pickle" (
%SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle
if errorlevel 1 exit /b 1
echo.
echo.Build finished; now you can process the pickle files.
goto end
)
if "%1" == "json" (
%SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json
if errorlevel 1 exit /b 1
echo.
echo.Build finished; now you can process the JSON files.
goto end
)
if "%1" == "htmlhelp" (
%SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp
if errorlevel 1 exit /b 1
echo.
echo.Build finished; now you can run HTML Help Workshop with the ^
.hhp project file in %BUILDDIR%/htmlhelp.
goto end
)
if "%1" == "qthelp" (
%SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp
if errorlevel 1 exit /b 1
echo.
echo.Build finished; now you can run "qcollectiongenerator" with the ^
.qhcp project file in %BUILDDIR%/qthelp, like this:
echo.^> qcollectiongenerator %BUILDDIR%\qthelp\django-treebeard.qhcp
echo.To view the help file:
echo.^> assistant -collectionFile %BUILDDIR%\qthelp\django-treebeard.ghc
goto end
)
if "%1" == "devhelp" (
%SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp
if errorlevel 1 exit /b 1
echo.
echo.Build finished.
goto end
)
if "%1" == "epub" (
%SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The epub file is in %BUILDDIR%/epub.
goto end
)
if "%1" == "latex" (
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
if errorlevel 1 exit /b 1
echo.
echo.Build finished; the LaTeX files are in %BUILDDIR%/latex.
goto end
)
if "%1" == "latexpdf" (
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
cd %BUILDDIR%/latex
make all-pdf
cd %~dp0
echo.
echo.Build finished; the PDF files are in %BUILDDIR%/latex.
goto end
)
if "%1" == "latexpdfja" (
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
cd %BUILDDIR%/latex
make all-pdf-ja
cd %~dp0
echo.
echo.Build finished; the PDF files are in %BUILDDIR%/latex.
goto end
)
if "%1" == "text" (
%SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The text files are in %BUILDDIR%/text.
goto end
)
if "%1" == "man" (
%SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The manual pages are in %BUILDDIR%/man.
goto end
)
if "%1" == "texinfo" (
%SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo.
goto end
)
if "%1" == "gettext" (
%SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The message catalogs are in %BUILDDIR%/locale.
goto end
)
if "%1" == "changes" (
%SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes
if errorlevel 1 exit /b 1
echo.
echo.The overview file is in %BUILDDIR%/changes.
goto end
)
if "%1" == "linkcheck" (
%SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck
if errorlevel 1 exit /b 1
echo.
echo.Link check complete; look for any errors in the above output ^
or in %BUILDDIR%/linkcheck/output.txt.
goto end
)
if "%1" == "doctest" (
%SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest
if errorlevel 1 exit /b 1
echo.
echo.Testing of doctests in the sources finished, look at the ^
results in %BUILDDIR%/doctest/output.txt.
goto end
)
if "%1" == "coverage" (
%SPHINXBUILD% -b coverage %ALLSPHINXOPTS% %BUILDDIR%/coverage
if errorlevel 1 exit /b 1
echo.
echo.Testing of coverage in the sources finished, look at the ^
results in %BUILDDIR%/coverage/python.txt.
goto end
)
if "%1" == "xml" (
%SPHINXBUILD% -b xml %ALLSPHINXOPTS% %BUILDDIR%/xml
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The XML files are in %BUILDDIR%/xml.
goto end
)
if "%1" == "pseudoxml" (
%SPHINXBUILD% -b pseudoxml %ALLSPHINXOPTS% %BUILDDIR%/pseudoxml
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The pseudo-XML files are in %BUILDDIR%/pseudoxml.
goto end
)
:end
django-treebeard-django-treebeard-0a55403/docs/requirements.txt 0000664 0000000 0000000 00000000004 15145612052 0024554 0 ustar 00root root 0000000 0000000 -e . django-treebeard-django-treebeard-0a55403/docs/source/ 0000775 0000000 0000000 00000000000 15145612052 0022576 5 ustar 00root root 0000000 0000000 django-treebeard-django-treebeard-0a55403/docs/source/_ext/ 0000775 0000000 0000000 00000000000 15145612052 0023535 5 ustar 00root root 0000000 0000000 django-treebeard-django-treebeard-0a55403/docs/source/_ext/djangodocs.py 0000664 0000000 0000000 00000000360 15145612052 0026221 0 ustar 00root root 0000000 0000000 # taken from:
# http://reinout.vanrees.org/weblog/2012/12/01/django-intersphinx.html
def setup(app):
app.add_crossref_type(
directivename="setting",
rolename="setting",
indextemplate="pair: %s; setting",
)
django-treebeard-django-treebeard-0a55403/docs/source/_static/ 0000775 0000000 0000000 00000000000 15145612052 0024224 5 ustar 00root root 0000000 0000000 django-treebeard-django-treebeard-0a55403/docs/source/_static/treebeard-admin-advanced.png 0000664 0000000 0000000 00000343463 15145612052 0031535 0 ustar 00root root 0000000 0000000 PNG
IHDR a
AiCCPICC Profile H
wTSϽ7" %z ;HQIP&vDF)VdTG"cEb PQDEk 5ޚYg} PtX4X\XffGD=HƳ.d,P&s"7C$
E6<~&S2)212 "įl+ɘ&Y4Pޚ%ᣌ\%g|eTI (L 0_&l2E 9r9h xgIbטifSb1+MxL0oE%YmhYh~S=zU&ϞAYl/ $ZU m@O ޜl^'lsk.+7oʿ9V;?#I3eE妧KDd9i,UQ h