django-utils

personal collection of django utilities
git clone https://git.ce9e.org/django-utils.git

commit
2a6e5e5b9b319b23da65d3fd6837faebf385b463
parent
3eef57488bf5de9ac1009ec5e92b3f0883fcddae
Author
Tobias Bengfort <tobias.bengfort@posteo.de>
Date
2018-10-27 06:48
define BaseBackend

Diffstat

M utils/context_groups.py 38 +++++++++++++++++++++++---------------

1 files changed, 23 insertions, 15 deletions


diff --git a/utils/context_groups.py b/utils/context_groups.py

@@ -31,13 +31,32 @@ class ContextGroup(models.Model):
   31    31         return perm in self.get_permissions()
   32    32 
   33    33 
   34    -1 class BasicObjectBackend:
   35    -1     # See https://code.djangoproject.com/ticket/20218
   36    -1 
   -1    34 class BaseBackend:
   37    35     def authenticate(self, username, password):
   38    36         return None
   39    37 
   40    38     def get_user_permissions(self, user, obj=None):
   -1    39         return set()
   -1    40 
   -1    41     def get_group_permissions(self, user, obj=None):
   -1    42         return set()
   -1    43 
   -1    44     def get_all_permissions(self, user, obj=None):
   -1    45         perms = set()
   -1    46         perms.update(self.get_user_permissions(user, obj=obj))
   -1    47         perms.update(self.get_group_permissions(user, obj=obj))
   -1    48         return perms
   -1    49 
   -1    50     def has_perm(self, user, perm, obj=None):
   -1    51         # you may want to override this for performance reasons
   -1    52         perms = self.get_all_permissions(user, obj=obj)
   -1    53         return perm in perms
   -1    54 
   -1    55 
   -1    56 class BasicObjectBackend(BaseBackend):
   -1    57     # See https://code.djangoproject.com/ticket/20218
   -1    58 
   -1    59     def get_user_permissions(self, user, obj=None):
   41    60         if obj is None:
   42    61             return set()
   43    62         return user.get_user_permissions()
@@ -58,10 +77,7 @@ class BasicObjectBackend:
   58    77         return user.has_perm(perm)
   59    78 
   60    79 
   61    -1 class ContextPermissionBackend:
   62    -1     def authenticate(self, username, password):
   63    -1         return None
   64    -1 
   -1    80 class ContextPermissionBackend(BaseBackend):
   65    81     def get_group_permissions(self, user, obj=None):
   66    82         perms = set()
   67    83         if user.is_active and isinstance(obj, Context):
@@ -70,14 +86,6 @@ class ContextPermissionBackend:
   70    86                 perms.update(group.get_permissions())
   71    87         return perms
   72    88 
   73    -1     def get_all_permissions(self, user, obj=None):
   74    -1         return self.get_group_permissions(user, obj)
   75    -1 
   76    -1     def has_perm(self, user, perm, obj=None):
   77    -1         if user.is_active and isinstance(obj, Context):
   78    -1             groups = ContextGroup.objects.filter(context=obj, users=user)
   79    -1             return any(group.has_perm(perm) for group in groups)
   80    -1 
   81    89 
   82    90 class PermissionRequiredMixin(auth_mixins.PermissionRequiredMixin):
   83    91     def get_permission_object(self):