Django灵活的许可系统。

django-granular-access的Python项目详细描述


Granular Access是Django应用程序,用于为用户授予对模型集的权限 或小组。

快速启动

  1. 将“粒度访问”添加到已安装的应用程序设置中,如下所示:

    INSTALLED_APPS = (
        ...
        'granular_access',
    )
    
  2. 运行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'}])

你可以在测试中找到更多的例子。

  1. 使用可用的筛选功能筛选可用的模型:

    >>> from granular_settings import filter_available
    >>> available_users = filter_available(to=joker, action='kill_and_rob',
    ...     queryset=User.objects.all())
    
  2. 利润。

设置

您可以为自定义应用程序行为定义一些设置:

  • 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。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java中的else if语句返回语法错误   http如何解析从表单到REST Java/Webservice的post请求   java如何在SpringBoot中为RestTemplate编写JUnit测试   java动态检查实例是否实现接口   java在Android中使用ArrayAdaptor时,数据不会显示   根据前序遍历返回二进制树的java方法   Arquillian测试类中的java注入始终为空   用户界面Java Swing自定义控件   java使用CompletableFutures递归地从同一函数的多个调用构建列表   在Java中将“.00”添加到整数BigDecimal   卡夫卡java未知\u主题\u或\u部分错误间歇性   java为什么我的getString()方法总是返回null?   java renameTo无法重命名文件   java为什么我可以强制转换对象?可以用其他对象来完成吗?   带有回写条件的java多根记录器   关于stackoverflow错误的java帮助?   java Websphere消息队列多线程   Java图形窗口/画布未垂直显示完整的六边形网格   java Sakai未在Tomcat服务器中启动