Repository URL to install this package:
Version:
0.2.0a11 ▾
|
from django.contrib.admin.options import BaseModelAdmin
from dj_kaos.governance.utils import get_permission_descriptor
from .querysets import UserAwareQuerySet
class UserAwareAdminMixin(BaseModelAdmin):
def get_queryset(self, request):
queryset: UserAwareQuerySet = super().get_queryset(request)
if request.user.is_superuser:
return queryset
return queryset.filter_by_user(request.user)
class ObjectPermissionsAdminMixin(BaseModelAdmin):
def has_change_permission(self, request, obj=None):
opts = self.opts
return request.user.has_perm(get_permission_descriptor(opts, 'change'), obj)
def has_delete_permission(self, request, obj=None):
opts = self.opts
return request.user.has_perm(get_permission_descriptor(opts, 'delete'), obj)
def has_view_permission(self, request, obj=None):
opts = self.opts
return request.user.has_perm(get_permission_descriptor(opts, 'view'), obj) or self.has_change_permission(
request, obj)
__all__ = [
'UserAwareAdminMixin',
'ObjectPermissionsAdminMixin',
]