예제 #1
0
    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
예제 #2
0
    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]