From fa9c7dfaf83c884ad76ca2c2001e573bd1c6a660 Mon Sep 17 00:00:00 2001 From: Mojtaba-z Date: Sun, 8 Jun 2025 16:09:46 +0330 Subject: [PATCH] set user data in get users response --- .../api/v1/serializers/serializer.py | 35 ++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/apps/authentication/api/v1/serializers/serializer.py b/apps/authentication/api/v1/serializers/serializer.py index 0a7c8d4..564c25a 100644 --- a/apps/authentication/api/v1/serializers/serializer.py +++ b/apps/authentication/api/v1/serializers/serializer.py @@ -1,4 +1,8 @@ -from apps.authorization.api.v1.serializers import UserRelationSerializer +from apps.authorization.api.v1.serializers import ( + UserRelationSerializer, + PermissionSerializer, + RoleSerializer +) from rest_framework.response import Response from rest_framework import serializers from apps.authentication.models import ( @@ -59,6 +63,22 @@ class BankAccountSerializer(serializers.ModelSerializer): return instance +class UserDataRelationSerializer(serializers.ModelSerializer): + class Meta: + model = authorize_models.UserRelations + fields = '__all__' + + def to_representation(self, instance): + representation = super().to_representation(instance) + representation['role'] = RoleSerializer(instance.role).data + representation['organization'] = instance.organization.name + representation['permissions'] = PermissionSerializer().permissions_structure_output( + instance.permissions.all() + ) + + return representation + + class UserSerializer(serializers.ModelSerializer): class Meta: model = User @@ -82,6 +102,19 @@ class UserSerializer(serializers.ModelSerializer): 'otp_status', ] + def to_representation(self, instance): + representation = super().to_representation(instance) + if authorize_models.UserRelations.objects.filter(user=instance).exists(): + representation['relation_data'] = UserDataRelationSerializer( + authorize_models.UserRelations.objects.filter(user=instance).first() + ).data + if instance.bank_information.all(): + representation['bank_account'] = BankAccountSerializer( + instance.bank_information.all(), many=True + ).data + + return representation + def update(self, instance, validated_data): """ update user instance """ instance.username = validated_data.get('username', instance.username)