Files
dashboard-cpsp-executive/backend/apps/sync/serializers.py
T
2026-09-08 15:21:23 +07:00

61 lines
1.6 KiB
Python

from rest_framework import serializers
from apps.sync.models import CitySite
class CitySiteSerializer(serializers.ModelSerializer):
id = serializers.IntegerField(source="pk", read_only=True)
# Never echo the outbound city API key back to the browser by default.
has_api_key = serializers.SerializerMethodField()
registered_by_name = serializers.CharField(
source="registered_by.user_name", read_only=True, allow_null=True
)
class Meta:
model = CitySite
fields = [
"id",
"code",
"name",
"api_base_url",
"has_api_key",
"registered_by",
"registered_by_name",
"is_active",
"last_synced_at",
"last_sync_status",
"last_sync_message",
"created_at",
"updated_at",
]
read_only_fields = [
"id",
"has_api_key",
"registered_by",
"registered_by_name",
"last_synced_at",
"last_sync_status",
"last_sync_message",
"created_at",
"updated_at",
]
def get_has_api_key(self, obj: CitySite) -> bool:
return bool(obj.api_key)
class CitySiteWriteSerializer(serializers.ModelSerializer):
id = serializers.IntegerField(source="pk", read_only=True)
class Meta:
model = CitySite
fields = [
"id",
"code",
"name",
"api_base_url",
"api_key",
"is_active",
]
extra_kwargs = {"api_key": {"write_only": True, "required": False}}