Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
dj-kaos / governance / admin.py
Size: Mime:
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',
]