Getting Started¶
Let’s start with some class:
import dataclasses
@dataclasses.dataclass
class Post:
title: str
content: str
status: str = 'draft'
Write permission class for it:
from permission_manager import BasePermissionManager
class PostPermissionManager(BasePermissionManager):
def has_create_permission(self) -> bool:
return True
def has_delete_permission(self) -> bool:
return False
Now we can check permissions:
manager = PostPermissionManager()
manager.has_permission('create')
# > True
manager.has_permission('delete')
# > False
User and instance¶
To check the permissions of a specific instance and for a specific user, you need to pass arguments to the manager, which will be available as corresponding attributes.
Let’s write example user class and change permissions:
@dataclasses.dataclass
class User:
username: str
class PostPermissionManager(BasePermissionManager):
def has_create_permission(self) -> bool:
return self.user.username == 'admin'
def has_update_permission(self) -> bool:
return self.has_permission('create')
def has_delete_permission(self) -> bool:
return self.instance.status == 'draft'
manager = PostPermissionManager(
user=User(username='admin'),
instance=Post(
title='New post',
content='Test content',
status='published',
)
)
manager.has_permission('update')
# > True
manager.has_permission('delete')
# > False