user detail view api, searching user list, count

This commit is contained in:
abutalib-kiwi
2023-08-04 13:15:32 +05:30
parent b9e2d9bc8a
commit 756bea0471
4 changed files with 63 additions and 13 deletions

View File

@ -25,6 +25,7 @@ class UserManagementListSerializer(serializers.ModelSerializer):
name = serializers.SerializerMethodField()
phone_number = serializers.SerializerMethodField()
user_type = serializers.SerializerMethodField()
is_active = serializers.SerializerMethodField()
class Meta:
"""
@ -67,13 +68,27 @@ class UserManagementListSerializer(serializers.ModelSerializer):
else:
return None
@staticmethod
def get_is_active(obj):
"""
:param obj: user object
:return: user type
"""
if profile := obj.guardian_profile.all().first():
return profile.is_active
elif profile := obj.junior_profile.all().first():
return profile.is_active
else:
return obj.is_active
class GuardianSerializer(serializers.ModelSerializer):
name = serializers.SerializerMethodField()
phone_number = serializers.SerializerMethodField()
class Meta:
model = Guardian
fields = ('name', 'dob', 'gender', 'phone', 'is_active', 'country_name', 'image')
fields = ('id', 'name', 'dob', 'gender', 'phone_number', 'is_active', 'country_name', 'image')
@staticmethod
def get_name(obj):
@ -83,13 +98,22 @@ class GuardianSerializer(serializers.ModelSerializer):
"""
return f"{obj.user.first_name} {obj.user.last_name}" if obj.user.last_name else obj.user.first_name
@staticmethod
def get_phone_number(obj):
"""
:param obj: user object
:return: user phone number
"""
return f"+{obj.country_code}{obj.phone}" if obj.country_code and obj.phone else obj.phone
class JuniorSerializer(serializers.ModelSerializer):
name = serializers.SerializerMethodField()
phone_number = serializers.SerializerMethodField()
class Meta:
model = Junior
fields = ('name', 'dob', 'gender', 'phone', 'is_active', 'country_name', 'image')
fields = ('id', 'name', 'dob', 'gender', 'phone_number', 'is_active', 'country_name', 'image')
@staticmethod
def get_name(obj):
@ -99,6 +123,14 @@ class JuniorSerializer(serializers.ModelSerializer):
"""
return f"{obj.auth.first_name} {obj.auth.last_name}" if obj.auth.last_name else obj.auth.first_name
@staticmethod
def get_phone_number(obj):
"""
:param obj: user object
:return: user phone number
"""
return f"+{obj.country_code}{obj.phone}" if obj.country_code and obj.phone else obj.phone
class UserManagementDetailSerializer(serializers.ModelSerializer):
user_type = serializers.SerializerMethodField()
@ -111,7 +143,7 @@ class UserManagementDetailSerializer(serializers.ModelSerializer):
meta class
"""
model = USER
fields = ('user_type', 'email', 'guardian_profile', 'junior_profile', 'associated_users')
fields = ('id', 'user_type', 'email', 'guardian_profile', 'junior_profile', 'associated_users')
@staticmethod
def get_user_type(obj):
@ -133,3 +165,7 @@ class UserManagementDetailSerializer(serializers.ModelSerializer):
junior = Junior.objects.filter(guardian_code__contains=[profile.guardian_code], is_verified=True)
serializer = JuniorSerializer(junior, many=True)
return serializer.data
elif profile := obj.junior_profile.all().first():
guardian = Guardian.objects.filter(guardian_code__in=profile.guardian_code, is_verified=True)
serializer = GuardianSerializer(guardian, many=True)
return serializer.data