{ "info": { "author": "CFPB", "author_email": "tech@cfpb.gov", "bugtrack_url": null, "classifiers": [ "Framework :: Django", "Framework :: Django :: 1.11", "Framework :: Django :: 2.0", "Framework :: Django :: 2.1", "Framework :: Django :: 2.2", "Framework :: Wagtail", "Framework :: Wagtail :: 1", "Framework :: Wagtail :: 2", "License :: CC0 1.0 Universal (CC0 1.0) Public Domain Dedication", "License :: Public Domain", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "# Wagtail-TreeModelAdmin\n\n[![Build Status](https://travis-ci.org/cfpb/wagtail-treemodeladmin.svg?branch=master)](https://travis-ci.org/cfpb/wagtail-treemodeladmin)\n[![Coverage Status](https://coveralls.io/repos/github/cfpb/wagtail-treemodeladmin/badge.svg?branch=master)](https://coveralls.io/github/cfpb/wagtail-treemodeladmin?branch=master)\n\n![TreeModelAdmin illustration with the books and authors example below](treemodeladmin.gif)\n\nWagtail-TreeModelAdmin is an extension for Wagtail's [ModelAdmin](http://docs.wagtail.io/en/latest/reference/contrib/modeladmin/) that allows for a page explorer-like navigation of Django model relationships within the Wagtail admin.\n\n- [Dependencies](#dependencies)\n- [Installation](#installation)\n- [Concepts](#concepts)\n- [Usage](#usage)\n - [Quickstart](#quickstart)\n- [API](#api)\n- [Getting help](#getting-help)\n- [Getting involved](#getting-involved)\n- [Licensing](#licensing)\n- [Credits and references](#credits-and-references)\n\n## Dependencies\n\n- Python 2.7+, 3.6+\n- Django 1.11+, 2.0+\n- Wagtail 1.13+, 2.0+\n\n## Installation\n\n1. Install wagtail-treemodeladmin:\n\n```shell\npip install wagtail-treemodeladmin\n```\n\n2. Add `treemodeladmin` (and `wagtail.contrib.modeladmin` if it's not already) as an installed app in your Django `settings.py`:\n\n ```python\n INSTALLED_APPS = (\n ...\n 'wagtail.contrib.modeladmin',\n 'treemodeladmin',\n ...\n )\n```\n\n## Concepts\n\nWagtail-TreeModelAdmin allows for a Wagtail page explorer-like navigation of Django one-to-many relationships within the Wagtail admin. In doing this, it conceptualizes the Django [`ForeignKey`](https://docs.djangoproject.com/en/2.0/ref/models/fields/#django.db.models.ForeignKey) relationship as one of parents-to-children. The parent is the destination `to` of the `ForeignKey` relationship, the child is the source of the relationship. \n\nWagtail-TreeModelAdmin is an extension of [Wagtail's ModelAdmin](http://docs.wagtail.io/en/latest/reference/contrib/modeladmin/index.html). It is intended to be used exactly like `ModelAdmin`.\n\n## Usage\n\n### Quickstart\n\nTo use Wagtail-TreeModelAdmin you first need to define some models that will be exposed in the Wagtail Admin.\n\n```python\n# libraryapp/models.py\n\nfrom django.db import models\n\n\nclass Author(models.Model):\n name = models.CharField(max_length=255)\n\nclass Book(models.Model):\n author = models.ForeignKey(Author, on_delete=models.PROTECT)\n title = models.CharField(max_length=255)\n```\n\nThen create the `TreeModelAdmin` subclasses and register the root the tree using `modeladmin_register`:\n\n```python\n# libraryapp/wagtail_hooks.py\nfrom wagtail.contrib.modeladmin.options import modeladmin_register\n\nfrom treemodeladmin.options import TreeModelAdmin\n\nfrom libraryapp.models import Author, Book\n\n\nclass BookModelAdmin(TreeModelAdmin):\n model = Book\n parent_field = 'author'\n\n\n@modeladmin_register\nclass AuthorModelAdmin(TreeModelAdmin):\n menu_label = 'Library'\n menu_icon = 'list-ul'\n model = Author\n child_field = 'book_set'\n child_model_admin = BookModelAdmin\n```\n\nThen visit the Wagtail admin. `Library` will be in the menu, and will give you a list of authors, and each author will have a link that will take you to their books.\n\n## API\n\nWagtail-TreeModelAdmin uses three new attributes on ModelAdmin subclasses to express parent/child relationships:\n\n- `parent_field`: The name of the Django [`ForeignKey`](https://docs.djangoproject.com/en/2.0/ref/models/fields/#django.db.models.ForeignKey) on a child model.\n- `child_field`: The [`related_name`](https://docs.djangoproject.com/en/2.0/ref/models/fields/#django.db.models.ForeignKey.related_name) on a Django `ForeignKey`. \n- `child_model_admin`\n\nAny `TreeModelAdmin` subclass can specify both parent and child relationships. The root of the tree (either the `TreeModelAdmin` included in a `ModelAdminGroup` or the `@modeladmin_register`ed `TreeModelAdmin` subclass) should only include `child_*` fields.\n\n## Getting help\n\nPlease add issues to the [issue tracker](https://github.com/cfpb/wagtail-treemodeladmin/issues).\n\n## Getting involved\n\nGeneral instructions on _how_ to contribute can be found in [CONTRIBUTING](CONTRIBUTING.md).\n\n## Licensing\n\n1. [TERMS](TERMS.md)\n2. [LICENSE](LICENSE)\n3. [CFPB Source Code Policy](https://github.com/cfpb/source-code-policy/)\n\n## Credits and references\n\n1. Forked from [cfgov-refresh](https://github.com/cfpb/cfgov-refresh)\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/cfpb/wagtail-treemodeladmin", "keywords": "", "license": "CC0", "maintainer": "", "maintainer_email": "", "name": "wagtail-treemodeladmin", "package_url": "https://pypi.org/project/wagtail-treemodeladmin/", "platform": "", "project_url": "https://pypi.org/project/wagtail-treemodeladmin/", "project_urls": { "Homepage": "https://github.com/cfpb/wagtail-treemodeladmin" }, "release_url": "https://pypi.org/project/wagtail-treemodeladmin/1.0.5/", "requires_dist": [ "Django (<2.3,>=1.11)", "wagtail (<2.6,>=1.13)", "mock (>=2.0.0) ; extra == 'testing'", "coverage (>=3.7.0) ; extra == 'testing'" ], "requires_python": "", "summary": "TreeModelAdmin for Wagtail", "version": "1.0.5" }, "last_serial": 5230554, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "724e536694d72296cf6a5c83a6344189", "sha256": "4c01ad7eb6c09f077eafbea196c13b59748900f6effb79d2a4fc04a001808e29" }, "downloads": -1, "filename": "wagtail_treemodeladmin-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "724e536694d72296cf6a5c83a6344189", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 19332, "upload_time": "2018-05-24T15:19:57", "url": "https://files.pythonhosted.org/packages/65/c0/9c47083e4bd41084d5d998b929c202dddd6e6006cbd4cf73b3a197e608c6/wagtail_treemodeladmin-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d51803987dd942faa02915909d986e54", "sha256": "030da9af8c9ab12fa712b50d5360b56dede26f402cba64008f717725bfa2a86f" }, "downloads": -1, "filename": "wagtail-treemodeladmin-1.0.0.tar.gz", "has_sig": false, "md5_digest": "d51803987dd942faa02915909d986e54", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 214637, "upload_time": "2018-05-24T15:19:59", "url": "https://files.pythonhosted.org/packages/30/70/23e73408d56f5ddad6d72fa5039a53544ee9f0ddb1bcc3b66aee8a27daa3/wagtail-treemodeladmin-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "ba54c97a3e4da1d59ed5ebb5b241b9e9", "sha256": "038d7810eca26b2d518384d6a4d17ed018bb4924133d946045e0b0c2edbea4e8" }, "downloads": -1, "filename": "wagtail_treemodeladmin-1.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ba54c97a3e4da1d59ed5ebb5b241b9e9", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 19716, "upload_time": "2018-05-24T17:05:02", "url": "https://files.pythonhosted.org/packages/94/37/619a1dffe484729ae8e32db9763e668e1a157c830fb95a7ec05cd58d928c/wagtail_treemodeladmin-1.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9be5f58b23b2f6543f497dee923ab002", "sha256": "43f67cd0001fcf52501681369cc4ce080b8701c235eff399b6b96baf9511e7d8" }, "downloads": -1, "filename": "wagtail-treemodeladmin-1.0.1.tar.gz", "has_sig": false, "md5_digest": "9be5f58b23b2f6543f497dee923ab002", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 364094, "upload_time": "2018-05-24T17:05:05", "url": "https://files.pythonhosted.org/packages/87/a5/796695497ad92618e9659ed4c5ead6782da0f99f54a3bacca8768414a57d/wagtail-treemodeladmin-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "0307b04eae4364374fd9e2544402e527", "sha256": "81c39731f28927a84523a48ae1882a82d6be20cfa7e82624c88f727cf99c5eb3" }, "downloads": -1, "filename": "wagtail_treemodeladmin-1.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0307b04eae4364374fd9e2544402e527", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 17128, "upload_time": "2018-05-25T14:18:21", "url": "https://files.pythonhosted.org/packages/67/9b/41824938dbd54076319530117564b394418b80b1d54e8002c90003baa3d6/wagtail_treemodeladmin-1.0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1aa998aa632991ed38731fc217a1f977", "sha256": "cc26cb2cbe19f33f6bbbb1db7882d09412ea6c070c2011690b36e7cf6cfe8bdb" }, "downloads": -1, "filename": "wagtail-treemodeladmin-1.0.2.tar.gz", "has_sig": false, "md5_digest": "1aa998aa632991ed38731fc217a1f977", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13900, "upload_time": "2018-05-25T14:18:22", "url": "https://files.pythonhosted.org/packages/77/90/6925c53d821993068fd69c82d6ac6f217edb552920708482552e5f2e91e3/wagtail-treemodeladmin-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "5f717e923953181807434d363dcd80f9", "sha256": "2dd7ce5982b001aab594b545c174d1b9501f25b299ecf193d82af59e01c4fdee" }, "downloads": -1, "filename": "wagtail_treemodeladmin-1.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5f717e923953181807434d363dcd80f9", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 17265, "upload_time": "2018-06-12T21:17:25", "url": "https://files.pythonhosted.org/packages/f5/57/d9090fc75243456aeb0ebf1710b3517c3c0b7630333acc0e227de9287f9e/wagtail_treemodeladmin-1.0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7505541ded2f447c100ef95bbfc797ac", "sha256": "7931bf8f3571e8323b3d5b252a8079ab52fd5dae6024ef675a4816f51e9bef63" }, "downloads": -1, "filename": "wagtail-treemodeladmin-1.0.3.tar.gz", "has_sig": false, "md5_digest": "7505541ded2f447c100ef95bbfc797ac", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14014, "upload_time": "2018-06-12T21:17:26", "url": "https://files.pythonhosted.org/packages/86/78/4cb95370dad0f408c18fd8820a7cae53cc4734d3e208ef3b15fa37f95280/wagtail-treemodeladmin-1.0.3.tar.gz" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "4306d9e1a06b5f403662bf18afa3b49d", "sha256": "2672dde3298738431177d84854299e80fe5aa91f9e6052bbf0e27743a69219a3" }, "downloads": -1, "filename": "wagtail_treemodeladmin-1.0.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4306d9e1a06b5f403662bf18afa3b49d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 20348, "upload_time": "2018-10-09T12:57:43", "url": "https://files.pythonhosted.org/packages/0e/6e/37db5cc2a96d0e3dbce39e467de0f94118cec24ebc35013fbaa127d7c1ce/wagtail_treemodeladmin-1.0.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bb3f33e1124b66d122eb4981df729a9b", "sha256": "bdce3ef685fc7d26770f9601c906e60164a9614d704971b3c4c05b2d79436e3b" }, "downloads": -1, "filename": "wagtail-treemodeladmin-1.0.4.tar.gz", "has_sig": false, "md5_digest": "bb3f33e1124b66d122eb4981df729a9b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14211, "upload_time": "2018-10-09T12:57:45", "url": "https://files.pythonhosted.org/packages/61/7b/783f5d75a7776c1fbe5de267dc05f33976c5d15f7e4a43db8cf98f0f742f/wagtail-treemodeladmin-1.0.4.tar.gz" } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "f753669a2958230644a88313429e256a", "sha256": "3d24577bf36930d5eb92c9df4459c677b9a9cb3154210c205709368b74cbd6a9" }, "downloads": -1, "filename": "wagtail_treemodeladmin-1.0.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f753669a2958230644a88313429e256a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 20355, "upload_time": "2019-05-06T03:46:14", "url": "https://files.pythonhosted.org/packages/e3/70/8e22667d65b5a3941d37f500a36277e62131eea71c5a7e0fb5dd61bc6fcc/wagtail_treemodeladmin-1.0.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ff63536836d2913ea03a1bc453b5b2a3", "sha256": "dea51af63206e42276d96653cb979df6117f06eaae0786afc283384ad8f8bb92" }, "downloads": -1, "filename": "wagtail-treemodeladmin-1.0.5.tar.gz", "has_sig": false, "md5_digest": "ff63536836d2913ea03a1bc453b5b2a3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15892, "upload_time": "2019-05-06T03:46:16", "url": "https://files.pythonhosted.org/packages/27/58/34ba9e7c869b1eff2f12f56b91ca846fdfdc98a0b7152889242cd99f1fa3/wagtail-treemodeladmin-1.0.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f753669a2958230644a88313429e256a", "sha256": "3d24577bf36930d5eb92c9df4459c677b9a9cb3154210c205709368b74cbd6a9" }, "downloads": -1, "filename": "wagtail_treemodeladmin-1.0.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f753669a2958230644a88313429e256a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 20355, "upload_time": "2019-05-06T03:46:14", "url": "https://files.pythonhosted.org/packages/e3/70/8e22667d65b5a3941d37f500a36277e62131eea71c5a7e0fb5dd61bc6fcc/wagtail_treemodeladmin-1.0.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ff63536836d2913ea03a1bc453b5b2a3", "sha256": "dea51af63206e42276d96653cb979df6117f06eaae0786afc283384ad8f8bb92" }, "downloads": -1, "filename": "wagtail-treemodeladmin-1.0.5.tar.gz", "has_sig": false, "md5_digest": "ff63536836d2913ea03a1bc453b5b2a3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15892, "upload_time": "2019-05-06T03:46:16", "url": "https://files.pythonhosted.org/packages/27/58/34ba9e7c869b1eff2f12f56b91ca846fdfdc98a0b7152889242cd99f1fa3/wagtail-treemodeladmin-1.0.5.tar.gz" } ] }