跳转到主要内容

一个可扩展的库,用于管理对象级权限,支持SQLAlchemy、Peewee、Pony和Django。

项目描述

Latest version Travis CI

guardrail是一个Python库,用于管理对象级权限,旨在与任意数据库和Web框架集成。guardrail受django-guardian的启发,目前支持SQLAlchemy、Peewee、Pony和Django ORM。

主页: https://guardrail.readthedocs.org/

安装

pip install guardrail

guardrail支持Python >= 2.7或>= 3.3和pypy。

示例

像往常一样定义您的模型,使用registry.agentregistry.target装饰器来设置权限关系

import peewee as pw

from guardrail.core import registry
from guardrail.ext.peewee import PeeweePermissionSchemaFactory

database = pw.SqliteDatabase(':memory:')
class Base(pw.Model):
    class Meta:
        database = database

@registry.agent
class User(Base):
    name = pw.CharField()

@registry.target
class Post(Base):
    name = pw.CharField()

@registry.target
class Comment(Base):
    name = pw.CharField()

factory = PeeweePermissionSchemaFactory((Base, ))
registry.make_schemas(factory)

database.connect()
database.create_tables([User, Post, Comment], safe=True)
database.create_tables(registry.permissions, safe=True)

然后使用权限管理器在任意agenttarget模型之间执行CRUD操作

from guardrail.ext.peewee import PeeweePermissionManager

manager = PeeweePermissionManager()

user = User.create(name='fred')
post = Post.create(name='news of the world')
comment = Comment.create(name='dragon attack')

manager.add_permission(user, post, 'edit')
manager.add_permission(user, comment, 'delete')

manager.has_permission(user, post, 'edit')          # True

manager.remove_permission(user, comment, 'delete')

manager.has_permission(user, comment, 'delete')     # False

许可协议

MIT许可。有关详细信息,请参阅LICENSE文件。

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解有关安装软件包的更多信息。

源分布

guardrail-0.1.1.tar.gz (12.9 kB 查看散列值)

上传时间 源代码

构建分发版

guardrail-0.1.1.macosx-10.5-x86_64.tar.gz (25.0 kB 查看散列值)

上传时间 源代码

支持