# pylint: disable=missing-class-docstring,W0212
"""Vectorsearch serializers."""
from django.urls import reverse
from rest_framework import serializers
from smarter.apps.account.serializers import MetaDataWithOwnershipModelSerializer
from smarter.apps.vectorsearch.manifest.models.vectorsearch.const import (
MANIFEST_KIND as VECTORSEARCH_KIND,
)
from .models import Vectorsearch
[docs]
class VectorsearchSerializer(MetaDataWithOwnershipModelSerializer):
"""Serializer for the smarter.apps.vectorsearch.models.Vectorsearch model."""
manifest_url = serializers.SerializerMethodField()
class Meta:
model = Vectorsearch
kind = VECTORSEARCH_KIND
fields = "__all__"
[docs]
def get_fields(self):
fields = super().get_fields()
for field in fields.values():
field.read_only = True
return fields
[docs]
def get_manifest_url(self, obj: Vectorsearch) -> str:
"""The URL of the Vectorsearch's detail view, which renders its manifest."""
# pylint: disable=C0415
from .urls import VectorsearchReverseNames
return reverse(
f"{VectorsearchReverseNames.namespace}:{VectorsearchReverseNames.detailview}",
kwargs={"hashed_id": obj.hashed_id},
)
__all__ = [
"VectorsearchSerializer",
]