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
Install the package with pip:
pip install serious-django-permissions
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. This enables you to do permission checks like user.has_perm(SomePermission):
AUTHENTICATION_BACKENDS = [ ... 'serious_django_permissions.PermissionModelBackend', ]
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.2.post2.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 35d2b4f91a04c46413af0929eb66676c7adcd5bba9f61c73ec80375fb7b0b814 |
|
MD5 | ef937ff917c43adb7289d0dcce9a66de |
|
BLAKE2b-256 | 22e27179a73902fab2486d9473d45720e7b5e0e59198901907f6ef211bdfef61 |