Skip to main content

Complex permissions flow for django-rest-framework

Project description

rest\_condition
===============

Complex permissions flow for `django-rest-framework`_.

Installation
------------

The easiest way to install the latest version is by using
pip/easy\_install to pull it from PyPI:

::

pip install rest_condition

You may also use Git to clone the repository from Github and install it
manually:

::

git clone https://github.com/caxap/rest_condition.git
python setup.py install

Example
-------

.. code:: python

from rest_framework.response import Response
from rest_framework.views import APIView
from rest_framework.permissions import BasePermission
from rest_condition import ConditionalPermission, C, And, Or, Not


class Perm1(BasePermission):

def has_permission(self, request, view):
# You permissions check here
return True


class Perm2(BasePermission):

def has_permission(self, request, view):
# You permissions check here
return False


# Example of possible expressions
expr1 = Or(Perm1, Perm2) # same as: C(Perm1) | Perm2
expr2 = And(Perm1, Perm2) # same as: C(Perm1) & Perm2
expr3 = Not(Perm1) # same as: ~C(Perm1)
expr4 = And(Not(Perm1), Or(Perm1, Not(Perm2))) # same as: ~C(Perm1) & (C(Perm1) | ~C(Perm2))

# Using expressions in API views
class ExampleView(APIView):
permission_classes = [Or(And(Perm1, Perm2), Not(Perm2)), ]
# Or just simple:
# permission_classes = [C(Perm1) & Perm2 | ~C(Perm2), ]

def get(self, request, format=None):
content = {'status': 'request was permitted'}
return Response(content)


class OtherExampleView(ExampleView):
# Using ConditionalPermission class
permission_classes = [ConditionalPermission, ]
permission_condition = (C(Perm1) & Perm2) | (~C(Perm1) & ~C(Perm2))

License
-------

The MIT License (MIT)

Contributed by `Max Kamenkov`_

.. _django-rest-framework: http://django-rest-framework.org/
.. _Maxim Kamenkov: https://github.com/caxap/

Project details


Download files

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

Source Distribution

rest_condition-1.0.3.tar.gz (4.9 kB view details)

Uploaded Source

File details

Details for the file rest_condition-1.0.3.tar.gz.

File metadata

File hashes

Hashes for rest_condition-1.0.3.tar.gz
Algorithm Hash digest
SHA256 7f47ed11a6519260b3f6248a2b6d6bf127ea7d9e04155fcf1e546bb561295af8
MD5 41cd00fd2049ed0a2af5fdfb20e97a3e
BLAKE2b-256 f2e89f46207275f33df32a36d3755d5da8b551de053c61ec4cad8f71fe6e411f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page