A Django extension to define and use Groups and Permissions from a central place, per app.
Project description
https://github.com/serioeseGmbH/serious-django-permissions
serious-django-permissions is a Django extension that makes it possible to define Permissions in each app, and Groups in a central place. It makes these Permissions import-able and checkable via user.has_perm:
from some_app.permissions import ChangeSomethingPermission def change_something(something, user): if not user.has_perm(ChangeSomethingPermission): raise PermissionDenied("You can't change this something.) else: return something.change()
Both permissions and groups can then be created in the database with a single manage.py call (see Quick start below).
Quick start
Add “serious_django_permissions” to your INSTALLED_APPS setting like this:
INSTALLED_APPS = [ ... 'serious_django_permissions', ]
Add serious_django_permissions.PermissionModelBackend to your AUTHENTICATION_BACKENDS setting:
AUTHENTICATION_BACKENDS = [ ... 'serious_django_permissions.PermissionModelBackend', ]
This enables you to do permission checks like user.has_perm(SomePermission).
In each app that should define a permission, import serious_django_permissions.Permission and create subclasses of it.
The name of your subclasses must end in Permission, and each subclass must define a description attribute. For instance, let’s say you have the file myapp/permissions.py:
from serious_django_permissions import Permission class MyPermission(Permission): model = 'MyModel' # should be a model inside myapp.models, or not defined for global permissions. description = 'A description for this permission'
Run python manage.py create_permissions to create all defined permissions on the database level.
If you’d like to use the Groups feature as well:
Create a file named something like some_app/groups.py inside one of your apps, or in the folder where your settings live. An example:
from serious_django_permissions import Group from app_one.permissions import\ AppOnePermissionA, AppOnePermissionB from app_two.permissions import\ AppTwoPermission class GroupA(Group): permissions = [ AppOnePermissionA, AppTwoPermission ] class GroupB(Group): permissions = [ AppOnePermissionB, AppTwoPermission ]
Reference the defined groups file in your settings:
DEFAULT_GROUPS_MODULE = 'some_app.groups'
Run python manage.py create_groups to create all permissions and assign them to the groups.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Hashes for serious-django-permissions-0.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9ddf517a6dd71eb3336682e38e0e47b8f67da6a05a03fa2a7b060a10b4a3a874 |
|
MD5 | b66a0f7ec63f23276a419af13b16d669 |
|
BLAKE2b-256 | bd5a1611fe1129e0680a1018012923291bb358368e2516657f15a354b2c50cae |