Django灵活的许可系统。
django-granular-access的Python项目详细描述
Granular Access是Django应用程序,用于为用户授予对模型集的权限 或小组。
快速启动
将“粒度访问”添加到已安装的应用程序设置中,如下所示:
INSTALLED_APPS = ( ... 'granular_access', )
运行south命令在数据库中创建表:
./manage.py migrate granular_access
三。通过管理或使用为用户或组在某些模型集上创建权限 创建权限函数:
>>> from granular_settings import create_permission >>> create_permission(user=joker, action='kill_and_rob', app_label='auth', ... model_name='user', conditions=[{'username__startswith': 'victim'}])
你可以在测试中找到更多的例子。
使用可用的筛选功能筛选可用的模型:
>>> from granular_settings import filter_available >>> available_users = filter_available(to=joker, action='kill_and_rob', ... queryset=User.objects.all())
利润。
设置
您可以为自定义应用程序行为定义一些设置:
GRANULAR_ACCESS_USER_MODEL – user model in your project for assigning permissions.
Example: ‘users.Profile’. Default: ‘auth.User’.
GRANULAR_ACCESS_GROUP_MODEL – group model in your project for assigning permissions.
Example: ‘groups.UserGroup’. Default: ‘auth.Group’.
GRANULAR_ACCESS_USER_GROUP_RELATED_NAME – related name in user model for relatinon with groups. So you can get user groups by calling >>> user_instance.related_name.all()
It will be used if GRANULAR_ACCESS_GET_USER_GROUPS_FUNCTION settings is not set or set to None.
Example: ‘user_groups’. Default: ‘groups’.
GRANULAR_ACCESS_GET_USER_GROUPS_FUNCTION – path to function, witch receives user instance as first argument and return iterable with groups or group ids. You can use this function if you have more complex logic for gettings user groups, than via related_name.
Example: ‘project_name.users_app.helpers.get_user_groups’. Default: None.
GRANULAR_ACCESS_CONSIDER_SUPERUSER – boolean value, which indicates should superusers get all permissions on all models or not.
Default: True.
额外费用
您可以在模型中使用AccessManager:
from granular_access import AccessManager class MyModel(models.Model): objects = AccessManager()
或者,如果您已经为您的模型配备了一些特殊的管理器,您可以使用 其中的Access管理器MIXIN。
也可以使用Access QuestReSET或Access QuestSuffin。