Skip to main content
Help us improve PyPI by participating in user testing. All experience levels needed!

An extensible library for managing object-level permissions with support for SQLAlchemy, Peewee, Pony, and Django.

Project description

Latest version Travis CI

guardrail is a Python library for managing object-level permissions that’s designed to integrate with arbitrary databases and web frameworks. guardrail is inspired by django-guardian and currently supports the SQLAlchemy, Peewee, Pony, and Django ORMs.

Homepage: https://guardrail.readthedocs.org/

Install

pip install guardrail

guardrail supports Python >= 2.7 or >= 3.3 and pypy.

Examples

Define your models as usual, using the registry.agent and registry.target decorators to set up permissions relationships:

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)

Then use the permission manager to perform CRUD operations on permissions between any agent and target models:

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

License

MIT licensed. See the LICENSE file for details.

Project details


Release history Release notifications

This version
History Node

0.1.1

History Node

0.1.0

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
guardrail-0.1.1.macosx-10.5-x86_64.tar.gz (25.0 kB) Copy SHA256 hash SHA256 Dumb Binary any Apr 5, 2015
guardrail-0.1.1.tar.gz (12.9 kB) Copy SHA256 hash SHA256 Source None Apr 5, 2015

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page