Refactor User model: update mobile field to allow null values, enforce unique id_card, and implement user filtering API endpoint

This commit is contained in:
2025-03-26 22:49:11 +05:00
parent aa69977d63
commit ddfbeba2f4
7 changed files with 102 additions and 5 deletions

View File

@ -20,6 +20,7 @@ from django_filters.rest_framework import DjangoFilterBackend
import re
from typing import cast, Dict, Any
from django.core.mail import send_mail
from django.db.models import Q
# local apps import
from .serializers import (
@ -196,6 +197,28 @@ class ListUserView(StaffEditorPermissionMixin, generics.ListAPIView):
queryset = User.objects.all()
@api_view(["GET"])
def filter_user(request):
id_card = request.GET.get("id_card", "").strip() or None
mobile = request.GET.get("mobile", "").strip() or None
if not id_card and not mobile:
return Response({"ok": False})
filters = Q()
if id_card is not None:
filters |= Q(id_card=id_card)
if mobile is not None:
filters |= Q(mobile=mobile)
user = User.objects.filter(filters).first()
print(f"Querying with filters: {filters}")
print(f"Found user: {user}")
return Response({"ok": True if user else False})
class ListUserByIDCardView(generics.ListAPIView):
# Create user API view
permission_classes = (permissions.AllowAny,)