mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-11-04 03:27:12 -05:00 
			
		
		
		
	Revert "fix: update user permissions and groups, update group permissions"
This reverts commit 57b709824fa058a41c3f13066b27f83ca1281b2c.
This commit is contained in:
		
							parent
							
								
									57b709824f
								
							
						
					
					
						commit
						fdaf9e9b46
					
				@ -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
 | 
					 | 
				
			||||||
    --------
 | 
					 | 
				
			||||||
    >>> 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:
 | 
					        return permission_natural_keys
 | 
				
			||||||
        permission = Permission.objects.get(
 | 
					 | 
				
			||||||
            content_type__app_label=app_label,
 | 
					 | 
				
			||||||
            codename=codename,
 | 
					 | 
				
			||||||
        )
 | 
					 | 
				
			||||||
        return permission
 | 
					 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user