mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-10-30 03:56:23 -05:00 
			
		
		
		
	Revert "fix: update user permissions and groups, update group permissions"
This reverts commit 57b709824f.
			
			
This commit is contained in:
		| @@ -1,11 +1,12 @@ | |||||||
| from django.contrib.auth.models import Group | from django.contrib.auth.models import Group | ||||||
| from django.contrib.auth.models import Permission |  | ||||||
| from django.contrib.auth.models import User | from django.contrib.auth.models import User | ||||||
| from rest_framework import serializers | from rest_framework import serializers | ||||||
|  |  | ||||||
|  |  | ||||||
| class UserSerializer(serializers.ModelSerializer): | class UserSerializer(serializers.ModelSerializer): | ||||||
|  |  | ||||||
|  |     groups = serializers.SerializerMethodField() | ||||||
|  |     permissions = serializers.SerializerMethodField() | ||||||
|     inherited_permissions = serializers.SerializerMethodField() |     inherited_permissions = serializers.SerializerMethodField() | ||||||
|  |  | ||||||
|     class Meta: |     class Meta: | ||||||
| @@ -15,28 +16,36 @@ class UserSerializer(serializers.ModelSerializer): | |||||||
|             "username", |             "username", | ||||||
|             "first_name", |             "first_name", | ||||||
|             "last_name", |             "last_name", | ||||||
|             "email", |  | ||||||
|             "date_joined", |             "date_joined", | ||||||
|             "last_login", |  | ||||||
|             "is_active", |  | ||||||
|             "is_staff", |             "is_staff", | ||||||
|  |             "is_active", | ||||||
|             "is_superuser", |             "is_superuser", | ||||||
|             "groups", |             "groups", | ||||||
|             "user_permissions", |             "permissions", | ||||||
|             "inherited_permissions", |             "inherited_permissions", | ||||||
|         ) |         ) | ||||||
|  |  | ||||||
|     def get_inherited_permissions(self, obj): |     def get_groups(self, obj): | ||||||
|         inherited_permissions_ids = [] |         return list(obj.groups.values_list("name", flat=True)) | ||||||
|         inherited_permissions = obj.get_group_permissions() |  | ||||||
|         for permission in inherited_permissions: |     def get_permissions(self, obj): | ||||||
|             inherited_permissions_ids.append( |         # obj.get_user_permissions() returns more permissions than desired | ||||||
|                 perm_to_permission(permission).pk, |         permission_natural_keys = [] | ||||||
|  |         permissions = obj.user_permissions.all() | ||||||
|  |         for permission in permissions: | ||||||
|  |             permission_natural_keys.append( | ||||||
|  |                 permission.natural_key()[1] + "." + permission.natural_key()[0], | ||||||
|             ) |             ) | ||||||
|         return list(set(inherited_permissions_ids)) |         return permission_natural_keys | ||||||
|  |  | ||||||
|  |     def get_inherited_permissions(self, obj): | ||||||
|  |         return obj.get_group_permissions() | ||||||
|  |  | ||||||
|  |  | ||||||
| class GroupSerializer(serializers.ModelSerializer): | class GroupSerializer(serializers.ModelSerializer): | ||||||
|  |  | ||||||
|  |     permissions = serializers.SerializerMethodField() | ||||||
|  |  | ||||||
|     class Meta: |     class Meta: | ||||||
|         model = Group |         model = Group | ||||||
|         fields = ( |         fields = ( | ||||||
| @@ -45,32 +54,11 @@ class GroupSerializer(serializers.ModelSerializer): | |||||||
|             "permissions", |             "permissions", | ||||||
|         ) |         ) | ||||||
|  |  | ||||||
|  |     def get_permissions(self, obj): | ||||||
| def perm_to_permission(perm): |         permission_natural_keys = [] | ||||||
|  |         permissions = obj.permissions.all() | ||||||
|     """ |         for permission in permissions: | ||||||
|     Convert a identifier string permission format in 'app_label.codename' |             permission_natural_keys.append( | ||||||
|     (teremd as *perm*) to a django permission instance. |                 permission.natural_key()[1] + "." + permission.natural_key()[0], | ||||||
|  |             ) | ||||||
|     Examples |         return permission_natural_keys | ||||||
|     -------- |  | ||||||
|     >>> permission = perm_to_permission('auth.add_user') |  | ||||||
|     >>> permission.content_type.app_label == 'auth' |  | ||||||
|     True |  | ||||||
|     >>> permission.codename == 'add_user' |  | ||||||
|     True |  | ||||||
|     """ |  | ||||||
|  |  | ||||||
|     try: |  | ||||||
|         app_label, codename = perm.split(".", 1) |  | ||||||
|     except IndexError: |  | ||||||
|         raise AttributeError( |  | ||||||
|             "The format of identifier string permission (perm) is wrong. " |  | ||||||
|             "It should be in 'app_label.codename'.", |  | ||||||
|         ) |  | ||||||
|     else: |  | ||||||
|         permission = Permission.objects.get( |  | ||||||
|             content_type__app_label=app_label, |  | ||||||
|             codename=codename, |  | ||||||
|         ) |  | ||||||
|         return permission |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Michael Shamoon
					Michael Shamoon