Browse Source

enhance admine panel user serializers and views , adding more detailed fields

master
sina_sajjadi 2 months ago
parent
commit
9d0c50c1fa
  1. 17
      apps/account/serializers/user.py
  2. 7
      apps/account/views/user.py

17
apps/account/serializers/user.py

@ -9,7 +9,7 @@ from utils.validators import validate_type_code
class UserProfileSerializer(serializers.ModelSerializer):
avatar = FileFieldSerializer(required=False)
avatar = FileFieldSerializer(required=False, allow_null=True)
password = serializers.CharField(write_only=True, required=False, validators=[validate_password])
fullname = serializers.CharField(required=False)
gender = serializers.ChoiceField(
@ -223,18 +223,25 @@ class UserFCMSerializer(serializers.ModelSerializer):
class AdminUserSerializer(serializers.ModelSerializer):
avatar = FileFieldSerializer(required=False)
avatar = FileFieldSerializer(required=False, allow_null=True)
password = serializers.CharField(write_only=True, required=False, validators=[validate_password])
email = serializers.EmailField(required=True)
auth_token = serializers.SerializerMethodField()
def get_auth_token(self, obj):
token = Token.objects.filter(user=obj).first()
return token.key if token else None
class Meta:
model = User
fields = [
'id', 'fullname', 'email', 'phone_number', 'password', 'avatar',
'gender', 'user_type', 'is_active', 'is_staff', 'is_superuser',
'date_joined', 'last_login'
'gender', 'birthdate', 'info', 'skill', 'city', 'country',
'device_id', 'device_os', 'user_agent', 'client_ip', 'fcm',
'user_type', 'is_active', 'is_staff', 'is_superuser',
'date_joined', 'last_login', 'auth_token'
]
read_only_fields = ['id', 'date_joined', 'last_login']
read_only_fields = ['id', 'date_joined', 'last_login', 'auth_token', 'device_id', 'device_os', 'user_agent', 'client_ip']
def create(self, validated_data):
password = validated_data.pop('password', None)

7
apps/account/views/user.py

@ -662,6 +662,11 @@ class AdminUserViewSet(ModelViewSet):
if gender_param:
queryset = queryset.filter(gender=gender_param)
# Handle user type filter
user_type_param = self.request.query_params.get('user_type', None)
if user_type_param:
queryset = queryset.filter(user_type=user_type_param)
# Handle Ordering
ordering_param = self.request.query_params.get('ordering', '-date_joined')
allowed_orderings = [
@ -674,4 +679,4 @@ class AdminUserViewSet(ModelViewSet):
else:
queryset = queryset.order_by('-date_joined')
return queryset.distinct()
return queryset.distinct()
Loading…
Cancel
Save