From 95c3b5f4e9bab087f0a75ea6e564ed83060ad556 Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Mon, 1 Dec 2025 17:55:52 +0500 Subject: [PATCH] fi --- core/apps/dashboard/serializers/location.py | 114 ++++++++++++-------- core/apps/dashboard/views/location.py | 101 +++++++---------- 2 files changed, 105 insertions(+), 110 deletions(-) diff --git a/core/apps/dashboard/serializers/location.py b/core/apps/dashboard/serializers/location.py index c1a4aab..04ed888 100644 --- a/core/apps/dashboard/serializers/location.py +++ b/core/apps/dashboard/serializers/location.py @@ -8,75 +8,99 @@ from rest_framework import serializers from core.apps.shared.models import Location, UserLocation - class LocationListSerializer(serializers.ModelSerializer): - district = serializers.SerializerMethodField(method_name='get_district') - place = serializers.SerializerMethodField(method_name='get_place') - doctor = serializers.SerializerMethodField(method_name='get_doctor') - pharmacy = serializers.SerializerMethodField(method_name='get_pharmacy') - user = serializers.SerializerMethodField(method_name='get_user') + district = serializers.SerializerMethodField(method_name="get_district") + place = serializers.SerializerMethodField(method_name="get_place") + doctor = serializers.SerializerMethodField(method_name="get_doctor") + pharmacy = serializers.SerializerMethodField(method_name="get_pharmacy") + user = serializers.SerializerMethodField(method_name="get_user") class Meta: model = Location fields = [ - 'id', 'longitude', 'latitude', 'created_at', 'user', - 'district', 'place', 'doctor', 'pharmacy', 'updated_at' + "id", + "longitude", + "latitude", + "created_at", + "user", + "district", + "place", + "doctor", + "pharmacy", + "updated_at", ] - + def get_user(self, obj): return { - 'id': obj.user.id, - 'first_name': obj.user.first_name, - 'last_name': obj.user.last_name, + "id": obj.user.id, + "first_name": obj.user.first_name, + "last_name": obj.user.last_name, } - def get_district(self, obj): - return { - 'id': obj.district.id, - 'name': obj.district.name, - } if obj.district else None - + return ( + { + "id": obj.district.id, + "name": obj.district.name, + } + if obj.district + else None + ) def get_place(self, obj): - return { - 'id': obj.place.id, - 'name': obj.place.name, - 'longitude': obj.place.longitude, - 'latitude': obj.place.latitude, - } if obj.place else None - + return ( + { + "id": obj.place.id, + "name": obj.place.name, + "longitude": obj.place.longitude, + "latitude": obj.place.latitude, + } + if obj.place + else None + ) + def get_doctor(self, obj): - return { - 'id': obj.doctor.id, - 'first_name': obj.doctor.first_name, - 'last_name': obj.doctor.last_name, - 'longitude': obj.doctor.longitude, - 'latitude': obj.doctor.latitude, - } if obj.doctor else None + return ( + { + "id": obj.doctor.id, + "first_name": obj.doctor.first_name, + "last_name": obj.doctor.last_name, + "longitude": obj.doctor.longitude, + "latitude": obj.doctor.latitude, + } + if obj.doctor + else None + ) def get_pharmacy(self, obj): - return { - 'id': obj.pharmacy.id, - 'name': obj.pharmacy.name, - 'longitude': obj.pharmacy.longitude, - 'latitude': obj.pharmacy.latitude, - } if obj.pharmacy else None - + return ( + { + "id": obj.pharmacy.id, + "name": obj.pharmacy.name, + "longitude": obj.pharmacy.longitude, + "latitude": obj.pharmacy.latitude, + } + if obj.pharmacy + else None + ) class UserLocationListSerializer(serializers.ModelSerializer): - user = serializers.SerializerMethodField(method_name='get_user') + user = serializers.SerializerMethodField(method_name="get_user") class Meta: model = UserLocation fields = [ - 'id', 'longitude', 'latitude', 'user', 'created_at', + "id", + "longitude", + "latitude", + "user", + "created_at", ] def get_user(self, obj): return { - 'id': obj.user.id, - 'first_name': obj.user.first_name, - 'last_name': obj.user.last_name - } \ No newline at end of file + "id": obj.user.id, + "first_name": obj.user.first_name, + "last_name": obj.user.last_name, + } diff --git a/core/apps/dashboard/views/location.py b/core/apps/dashboard/views/location.py index f18ca73..8b122ac 100644 --- a/core/apps/dashboard/views/location.py +++ b/core/apps/dashboard/views/location.py @@ -1,14 +1,14 @@ # django from django.db.models import Q -# rest framework -from rest_framework import viewsets, permissions -from rest_framework.decorators import action - # drf yasg from drf_yasg import openapi from drf_yasg.utils import swagger_auto_schema +# rest framework +from rest_framework import permissions, viewsets +from rest_framework.decorators import action + # dashboard from core.apps.dashboard.serializers import location as serializers @@ -25,7 +25,7 @@ class LocationViewSet(viewsets.GenericViewSet, ResponseMixin): return serializers.LocationListSerializer @swagger_auto_schema( - tags=['Admin Location'], + tags=["Admin Location"], manual_parameters=[ openapi.Parameter( in_=openapi.IN_QUERY, @@ -43,23 +43,23 @@ class LocationViewSet(viewsets.GenericViewSet, ResponseMixin): ), ], ) - @action(detail=False, methods=['get'], url_path="list") + @action(detail=False, methods=["get"], url_path="list") def get(self, request): try: # params - date = request.query_params.get('date', None) - user_full_name = request.query_params.get('user', None) + date = request.query_params.get("date", None) + user_full_name = request.query_params.get("user", None) queryset = self.queryset.all() # filters if date is not None: - queryset = queryset.filter(date=date) - + queryset = queryset.filter(created_at__date=date) + if user_full_name is not None: queryset = queryset.filter( - Q(user__first_name__istartswith=user_full_name) | - Q(user__last_name__istartswith=user_full_name) + Q(user__first_name__istartswith=user_full_name) + | Q(user__last_name__istartswith=user_full_name) ) page = self.paginate_queryset(queryset) @@ -67,45 +67,31 @@ class LocationViewSet(viewsets.GenericViewSet, ResponseMixin): serializer = self.get_serializer(page, many=True) return self.success_response( data=self.get_paginated_response(serializer.data).data, - message='malumotlar fetch qilindi' + message="malumotlar fetch qilindi", ) serializer = self.get_serializer(queryset, many=True) return self.success_response( - data=serializer.data, - message='malumotlar fetch qilindi' + data=serializer.data, message="malumotlar fetch qilindi" ) except Exception as e: - return self.error_response( - data=str(e), - message="xatolik" - ) + return self.error_response(data=str(e), message="xatolik") - @swagger_auto_schema( - tags=['Admin Location'] - ) - @action(detail=True, methods=['delete'], url_path='delete') + @swagger_auto_schema(tags=["Admin Location"]) + @action(detail=True, methods=["delete"], url_path="delete") def delete(self, request, pk=None): try: location = Location.objects.filter(id=pk).first() if not location: return self.failure_response( - data={}, - message="location topilmadi", - status_code=404 + data={}, message="location topilmadi", status_code=404 ) location.delete() return self.success_response( - data={}, - message='malumot ochirildi', - status_code=204 + data={}, message="malumot ochirildi", status_code=204 ) except Exception as e: - return self.error_response( - data=str(e), - message="xatolik" - ) - - + return self.error_response(data=str(e), message="xatolik") + class UserLocationViewSet(viewsets.GenericViewSet, ResponseMixin): permission_classes = [permissions.IsAdminUser] @@ -115,7 +101,7 @@ class UserLocationViewSet(viewsets.GenericViewSet, ResponseMixin): return serializers.UserLocationListSerializer @swagger_auto_schema( - tags=['Admin Location'], + tags=["Admin Location"], manual_parameters=[ openapi.Parameter( in_=openapi.IN_QUERY, @@ -133,23 +119,23 @@ class UserLocationViewSet(viewsets.GenericViewSet, ResponseMixin): ), ], ) - @action(detail=False, methods=['get'], url_path="list") + @action(detail=False, methods=["get"], url_path="list") def get(self, request): try: # params - date = request.query_params.get('date', None) - user_full_name = request.query_params.get('user', None) + date = request.query_params.get("date", None) + user_full_name = request.query_params.get("user", None) queryset = self.queryset.all() # filters if date is not None: queryset = queryset.filter(created_at__date=date) - + if user_full_name is not None: queryset = queryset.filter( - Q(user__first_name__istartswith=user_full_name) | - Q(user__last_name__istartswith=user_full_name) + Q(user__first_name__istartswith=user_full_name) + | Q(user__last_name__istartswith=user_full_name) ) page = self.paginate_queryset(queryset) @@ -157,42 +143,27 @@ class UserLocationViewSet(viewsets.GenericViewSet, ResponseMixin): serializer = self.get_serializer(page, many=True) return self.success_response( data=self.get_paginated_response(serializer.data).data, - message='malumotlar fetch qilindi' + message="malumotlar fetch qilindi", ) serializer = self.get_serializer(queryset, many=True) return self.success_response( - data=serializer.data, - message='malumotlar fetch qilindi' + data=serializer.data, message="malumotlar fetch qilindi" ) except Exception as e: - return self.error_response( - data=str(e), - message="xatolik" - ) + return self.error_response(data=str(e), message="xatolik") - @swagger_auto_schema( - tags=['Admin Location'] - ) - @action(detail=True, methods=['delete'], url_path='delete') + @swagger_auto_schema(tags=["Admin Location"]) + @action(detail=True, methods=["delete"], url_path="delete") def delete(self, request, pk=None): try: location = Location.objects.filter(id=pk).first() if not location: return self.failure_response( - data={}, - message="location topilmadi", - status_code=404 + data={}, message="location topilmadi", status_code=404 ) location.delete() return self.success_response( - data={}, - message='malumot ochirildi', - status_code=204 + data={}, message="malumot ochirildi", status_code=204 ) except Exception as e: - return self.error_response( - data=str(e), - message="xatolik" - ) - - \ No newline at end of file + return self.error_response(data=str(e), message="xatolik")