Skip to content

caxap/rest_condition

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

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`_

About

Complex permissions flow for django-rest-framework (http://django-rest-framework.org).

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 5

Languages

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy