Source code for smarter.apps.mcpclient.serializers

# pylint: disable=missing-class-docstring,W0212
"""MCPClient serializers."""

from django.urls import reverse
from rest_framework import serializers

from smarter.apps.account.serializers import MetaDataWithOwnershipModelSerializer
from smarter.apps.mcpclient.manifest.models.mcpclient.const import (
    MANIFEST_KIND as MCPCLIENT_KIND,
)

from .models import MCPClient


[docs] class MCPClientSerializer(MetaDataWithOwnershipModelSerializer): """ Serializer for the smarter.apps.mcpclient.models.MCPClient model. All fields are read only. ``credentials`` is rendered as the Secret's name, never its value. """ credentials = serializers.SlugRelatedField(read_only=True, slug_field="name") manifest_url = serializers.SerializerMethodField() ready = serializers.ReadOnlyField() rfc1034_compliant_name = serializers.ReadOnlyField() class Meta: model = MCPClient kind = MCPCLIENT_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: MCPClient) -> str: """The URL of the MCPClient's detail view, which renders its manifest.""" # pylint: disable=C0415 from .urls import MCPClientReverseNames return reverse( f"{MCPClientReverseNames.namespace}:{MCPClientReverseNames.detailview}", kwargs={"hashed_id": obj.hashed_id} )
__all__ = [ "MCPClientSerializer", ]