61 lines
1.6 KiB
Python
61 lines
1.6 KiB
Python
from rest_framework import serializers
|
|
|
|
from apps.sync.models import ActiveSite
|
|
|
|
|
|
class ActiveSiteSerializer(serializers.ModelSerializer):
|
|
id = serializers.IntegerField(source="pk", read_only=True)
|
|
# Never echo the outbound site API key back to the browser by default.
|
|
has_api_key = serializers.SerializerMethodField()
|
|
managed_by_name = serializers.CharField(
|
|
source="managed_by.display_name", read_only=True, allow_null=True
|
|
)
|
|
|
|
class Meta:
|
|
model = ActiveSite
|
|
fields = [
|
|
"id",
|
|
"code",
|
|
"name",
|
|
"api_base_url",
|
|
"has_api_key",
|
|
"managed_by",
|
|
"managed_by_name",
|
|
"is_active",
|
|
"last_synced_at",
|
|
"last_sync_status",
|
|
"last_sync_message",
|
|
"created_at",
|
|
"updated_at",
|
|
]
|
|
read_only_fields = [
|
|
"id",
|
|
"has_api_key",
|
|
"managed_by",
|
|
"managed_by_name",
|
|
"last_synced_at",
|
|
"last_sync_status",
|
|
"last_sync_message",
|
|
"created_at",
|
|
"updated_at",
|
|
]
|
|
|
|
def get_has_api_key(self, obj: ActiveSite) -> bool:
|
|
return bool(obj.api_key)
|
|
|
|
|
|
class ActiveSiteWriteSerializer(serializers.ModelSerializer):
|
|
id = serializers.IntegerField(source="pk", read_only=True)
|
|
|
|
class Meta:
|
|
model = ActiveSite
|
|
fields = [
|
|
"id",
|
|
"code",
|
|
"name",
|
|
"api_base_url",
|
|
"api_key",
|
|
"is_active",
|
|
]
|
|
extra_kwargs = {"api_key": {"write_only": True, "required": False}}
|