utils Package

handlers Module

A utilities of permission handler

class permission.utils.handlers.PermissionHandlerRegistry[source]

Bases: object

A registry class of permission handler

Methods

get_handlers()[source]

Get registered handler instances

Returns:

tuple :

permission handler tuple

register(model, handler=None)[source]

Register a permission handler to the model

Parameters:

model : django model class

A django model class

handler : permission handler class or None

A permission handler class

Raises:

ImproperlyConfigured :

Raise when the model is abstract model

KeyError :

Raise when the model is already registered in registry The model cannot have more than one handler.

unregister(model)[source]

Unregister a permission handler from the model

Parameters:

model : django model class

A django model class

handler : permission handler class or None

A permission handler class

Raises:

KeyError :

Raise when the model have not registered in registry yet.

logics Module

Permission logic utilities

permission.utils.logics.add_permission_logic(model, permission_logic)[source]

Add permission logic to the model

Parameters:

model : django model class

A django model class which will be treated by the specified permission logic

permission_logic : permission logic class

A permission logic class with will be used to determine permission of the model

Examples

>>> from django.db import models
>>> from permission.logics import PermissionLogic
>>> class Mock(models.Model):
...     name = models.CharField('name', max_length=120)
>>> add_permission_logic(Mock, PermissionLogic())
permission.utils.logics.remove_permission_logic(model, permission_logic, fail_silently=True)[source]

Remove permission logic to the model

Parameters:

model : django model class

A django model class which will be treated by the specified permission logic

permission_logic : permission logic class

A permission logic class with will be used to determine permission of the model

fail_silently : boolean

If True then do not raise KeyError even the specified permission logic have not registered.

Examples

>>> from django.db import models
>>> from permission.logics import PermissionLogic
>>> class Mock(models.Model):
...     name = models.CharField('name', max_length=120)
>>> logic = PermissionLogic()
>>> add_permission_logic(Mock, logic)
>>> remove_permission_logic(Mock, logic)

permissions Module

Permission utility module.

In this module, term perm indicate the identifier string permission written in ‘app_label.codename’ format.

permission.utils.permissions.get_app_perms(model_or_app_label)[source]

Get perm (a string in format of ‘app_label.codename’) list of the specified django application.

Parameters:

model_or_app_label : model class or string

A model class or app_label string to specify the particular django application.

Returns:

set :

A set of perms of the specified django application.

Examples

>>> perms1 = get_app_perms('auth')
>>> perms2 = get_app_perms(Permission)
>>> perms1 == perms2
True
permission.utils.permissions.get_model_perms(model)[source]

Get perm (a string in format of ‘app_label.codename’) list of the specified django model.

Parameters:

model : model class

A model class to specify the particular django model.

Returns:

set :

A set of perms of the specified django model.

Examples

>>> sorted(get_model_perms(Permission)) == ['auth.add_permission', 'auth.change_permission', 'auth.delete_permission']
True
permission.utils.permissions.get_perm_codename(perm, fail_silently=True)[source]

Get permission codename from permission string

Examples

>>> get_perm_codename('app_label.codename_model') == 'codename_model'
True
>>> get_perm_codename('app_label.codename') == 'codename'
True
>>> get_perm_codename('codename_model') == 'codename_model'
True
>>> get_perm_codename('codename') == 'codename'
True
>>> get_perm_codename('app_label.app_label.codename_model') == 'app_label.codename_model'
True
permission.utils.permissions.perm_to_permission(perm)[source]

Convert a identifier string permission format in ‘app_label.codename’ (teremd as perm) to a django permission instance.

Examples

>>> permission = perm_to_permission('auth.add_user')
>>> permission.content_type.app_label == 'auth'
True
>>> permission.codename == 'add_user'
True
permission.utils.permissions.permission_to_perm(permission)[source]

Convert a django permission instance to a identifier string permission format in ‘app_label.codename’ (termed as perm).

Examples

>>> permission = Permission.objects.get(
...     content_type__app_label='auth',
...     codename='add_user',
... )
>>> permission_to_perm(permission) == 'auth.add_user'
True