107 lines
2.7 KiB
Python
107 lines
2.7 KiB
Python
# django
|
|
from django.db import transaction
|
|
|
|
# rest framework
|
|
from rest_framework import serializers
|
|
|
|
# shared
|
|
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")
|
|
|
|
class Meta:
|
|
model = Location
|
|
fields = [
|
|
"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,
|
|
}
|
|
|
|
def get_district(self, obj):
|
|
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
|
|
)
|
|
|
|
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
|
|
)
|
|
|
|
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
|
|
)
|
|
|
|
|
|
class UserLocationListSerializer(serializers.ModelSerializer):
|
|
user = serializers.SerializerMethodField(method_name="get_user")
|
|
|
|
class Meta:
|
|
model = UserLocation
|
|
fields = [
|
|
"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,
|
|
}
|