Roles

Roles File

Create a roles.py file anywhere inside your django project and reference it in the project settings file.

my_project/roles.py

from rolepermissions.roles import AbstractUserRole

class Doctor(AbstractUserRole):
    available_permissions = {
        'create_medical_record': True,
    }

class Nurse(AbstractUserRole):
    available_permissions = {
        'edit_patient_file': True,
    }

settings.py

ROLEPERMISSIONS_MODULE = 'my_project.roles'

Each class that imports AbstractUserRole is a role on the project and has a snake case string representation. For example:

from rolepermissions.roles import AbstractUserRole

class SystemAdmin(AbstractUserRole):
    available_permissions = {
        'drop_tables': True,
    }

will have the string representation: system_admin.

Available Role Permissions

The field available_permissions lists what permissions the role can be granted. The boolean referenced on the available_permissions dictionary is the default value to the referred permission.

Role Limits

The field role_limits contains a limit (whatever object you want) the role has.

from rolepermissions.roles import AbstractUserRole

class SystemAdmin(AbstractUserRole):
    available_permissions = {
        'drop_tables': True,
    }
    role_limit = 100

or

from rolepermissions.roles import AbstractUserRole

class SystemAdmin(AbstractUserRole):
    available_permissions = {
        'drop_tables': True,
    }
    role_limit = { 'create_offers': 10, 'create_auctions': 20 }

Role limits can be accessed

system_admin_role_limits = SystemAdmin.get_role_limit()

Available Permissions Limits

The field available_permissions_limit lists the limits for the permissions of the role. It is not mandatory to have a limit for each permission.

from rolepermissions.roles import AbstractUserRole

class SystemAdmin(AbstractUserRole):
    available_permissions = {
        'create_offers': True,
        'create_auctions': True,
    }
    available_permissions_limits = {
        'create_offers': 10,
        'create_auctions': 20
    }

Can be accessed as follow

system_admin_create_offers_limit = SystemAdmin.get_permission_limit('create_offers')