A Django app that provides generic per-object-permissions for Django's auth app and helpers to create custom permission checks.
Find a file
Wes Winham 8ea429d448 Merge pull request #24 from gthb/issue18
Fix CSRF failure posting permission change form
2014-02-10 13:24:52 -05:00
authority Fix CSRF failure posting permission change form 2014-02-10 18:03:24 +00:00
docs Fix FlatPage class name 2014-01-06 10:19:52 +01:00
example fixing invalid syntax error 2014-01-29 16:18:38 -06:00
migrations Added SQL files to migrate permission model from 0.2 to 0.3 2009-07-23 22:42:12 +02:00
.gitignore Updates to handle custom user model change from Django 1.5 2013-06-11 17:26:41 -05:00
.hgignore Moved authority app from src/ to root directory 2010-01-07 18:00:41 +01:00
.travis.yml Update .travis.yml 2013-12-20 19:12:49 +01:00
AUTHORS Updated the authors. 2013-12-20 14:31:41 -05:00
bootstrap.py initial checkin with buildout and some other default files 2009-06-08 11:58:38 +02:00
buildout.cfg refs #12: removed legacy apps 2013-03-18 17:32:38 -04:00
LICENSE Added setup.py and LICENSE 2009-06-08 12:06:14 +02:00
MANIFEST.in Added README.rst to manifest template. 2013-09-10 11:52:18 +02:00
README.rst Updated the changelog. 2013-12-20 14:31:52 -05:00
setup.cfg Prepare for 0.4 release. 2010-01-15 22:41:42 +01:00
setup.py Bumped to version 0.8 2013-12-20 14:32:01 -05:00

================
django-authority
================

This is a Django app for per-object-permissions that includes a bunch of
helpers to create custom permission checks.

The main website for django-authority is
`django-authority.readthedocs.org`_. You can also install the
`in-development version`_ of django-authority with
``pip install django-authority==dev`` or ``easy_install django-authority==dev``.

.. _`django-authority.readthedocs.org`: http://django-authority.readthedocs.org/
.. _in-development version: https://github.com/jezdez/django-authority/archive/master.zip#egg=django-authority-dev

Example
=======

To get the example project running do:

- Bootstrap the buildout by running::

    python bootstrap.py

- Get the required packages by running::

    bin/buildout

- Sync the database::

    bin/django-trunk syncdb

- Run the development server and visit the admin at http://127.0.0.1:8000/admin/::

    bin/django-trunk runserver

Now create a flatage and open it to see some of the templatetags in action.
Don't hesitate to use the admin to edit the permission objects.

Full docs coming soon.

Please use https://github.com/jezdez/django-authority/issues/ for issues and bug reports.

Documentation
=============

The documenation is currently in development. You can create a nice looking
html version using the setup.py::

    python setup.py build_sphinx

Changelog:
==========

0.8 (2013-12-20):
-----------------

* Added support for Django 1.6

0.7 (2013-07-03):
-----------------

* No longer doing dependent sub-queries. It will be faster to do two small
  queries instead of one with a dependent sub-query in the general case.

0.6 (2013-06-13):
-----------------

* Added support for custom user models (Django 1.5 only).

0.5 (2013-03-18):
-----------------

* It is now possible to minimize the number of queries when using
  django-authority by caching the results of the Permission query. This can be
  done by adding ``AUTHORITY_USE_SMART_CACHE = True`` to your settings.py
* Confirmed support (via travis ci) for all combinations of Python 2.6,
  Python2.7 and Django 1.3, Django 1.4, Django 1.5. Added Python 3.3 support
  for Django 1.5


0.4 (2010-01-15):
-----------------

* Fixed an issue with the UserPermissionForm not being able to override the
  widget of the user field.

* Added ability to override form class in ``add_permission`` view.

* Added easy way to assign permissions via a permission instance, e.g.::

    from django.contrib.auth.models import User
    from mysite.articles.permissions import ArticlePermission

    bob = User.objects.get(username='bob')
    article_permission = ArticlePermission(bob)
    article_permission.assign(content_object=article)


0.3 (2009-07-28):
-----------------

* This version adds multiple fields to the Permission model and is
  therefore a **backwards incompatible** update.

  This was required to add a feature that allows users to request,
  withdraw, deny and approve permissions. Request and approval date
  are now saved, as well as an ``approved`` property. An admin action has
  been added for bulk approval.

  To migrate your existing data you can use the SQL files included in
  the source (`migrations/`_), currently available for MySQL, Postgres
  and SQLite.

* The templatetags have also been refactored to be easier to customize
  which required a change in the template tag signature:

  Old::

    {% permission_form flatpage %}
    {% permission_form flatpage "flatpage_permission.top_secret" %}
    {% permission_form OBJ PERMISSION_LABEL.CHECK_NAME %}

  New::

    {% permission_form for flatpage %}
    {% permission_form for flatpage using "flatpage_permission.top_secret" %}
    {% permission_form for OBJ using PERMISSION_LABEL.CHECK_NAME [with TEMPLATE] %}

  New templatetags:

  * ``permission_request_form``
  * ``get_permission_request``
  * ``get_permission_requests``
  * ``permission_request_approve_link``
  * ``permission_request_delete_link``
  * ``request_url_for_obj``

* The ``add_permission`` view is now accessible with GET requests and
  allows to request permissions, but also add them (only for users with
  the 'authority.add_permission' Django permission).

.. _`migrations/`: https://github.com/jezdez/django-authority/tree/master/migrations