def check_permission_dict(self, user, permissions): # First check the staff-level permissions to see if they apply for key, test in self.DEFAULT_PERMISSIONS: if key in permissions and test(user): if self.check_permission_list(user, permissions[key]): return True # Then test all other permissions for test, perms in permissions: if test not in self.DEFAULT_PERMISSION_KEYS and user_passes_test(user, test): if self.check_permission_list(user, perms): return True
def role_based_exclusion(self): exclude = self.exclude if not isinstance(exclude, dict): return exclude or () user = getattr(self.request, 'user', None) if user: if user.is_superuser: return exclude.get('superuser', ()) elif user.is_staff: return exclude.get('staff', ()) for test, exclusion in exclude.get('roles', ()): if user_passes_test(user, test): return exclusion return exclude[None]
def role_based_exclusion(self): exclude = self.exclude if not isinstance(exclude, dict): return exclude or () user = getattr(self.request, 'user', None) if user: if user.is_superuser: return exclude.get('superuser', ()) elif user.is_staff: return exclude.get('staff', ()) for test, exclusion in exclude.get('roles', ()): if user_passes_test(user, test): return exclusion return exclude[None]