Rest lib
Project description
☭ perestroika
About
Simple REST framework for django
Installation
With pip:
pip install perestroika
Usage
from django.contrib.auth.models import User
from perestroika.resource import DjangoResource
from perestroika.methods import Get, Post
from perestroika.exceptions import RestException
class Validator:
def __call__(self, item: dict) -> dict:
return {'username': item['username']}
def reject_not_superuser(request, bundle):
if not request.user.is_superuser:
raise RestException(message="Unauthorized", status_code=401)
def add_is_superuser_flag(request, bundle):
for user in bundle['items']:
user['is_superuser'] = True
class SuperUserResource(DjangoResource):
# use django @cache_control kwargs
cache_control = dict(max_age=0, no_cache=True, no_store=True, must_revalidate=True)
# allowed method GET
get = Get(
# base queryset
queryset=User.objects.filter(is_superuser=True),
# restrict access
request_hooks = [
reject_not_superuser
],
# any callable
output_validator=Validator,
)
# allowed method POST
post = Post(
# restrict access
request_hooks = [
reject_not_superuser
],
# process incoming data
pre_query_hooks=[
add_is_superuser_flag
],
# any callable
input_validator=Validator,
)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
perestroika-0.1.31.tar.gz
(10.8 kB
view details)
File details
Details for the file perestroika-0.1.31.tar.gz
.
File metadata
- Download URL: perestroika-0.1.31.tar.gz
- Upload date:
- Size: 10.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.1 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7c8b5dfe09d27d332cb20614eb227d6be2f100e21a3f6baa290401a9e79e4162 |
|
MD5 | 6d585d6a3d55c35aa7898f0cebd63749 |
|
BLAKE2b-256 | 28ec601f4e6268047a7276ac23b2fcd682da8bb7ad9f5b6d0fba2fe53997343b |