Source code for smarter.apps.chatbot.serializers

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

from rest_framework import serializers

from smarter.apps.account.serializers import (
    MetaDataWithOwnershipModelSerializer,
    UserProfileSerializer,
)
from smarter.apps.plugin.serializers import PluginMetaSerializer
from smarter.lib.drf.serializers import SmarterCamelCaseSerializer

from .models import (
    ChatBot,
    ChatBotAPIKey,
    ChatBotCustomDomain,
    ChatBotFunctions,
    ChatBotPlugin,
)


[docs] class ChatBotSerializer(MetaDataWithOwnershipModelSerializer): url_chatbot = serializers.ReadOnlyField() user_profile = UserProfileSerializer() default_system_role = serializers.SerializerMethodField() class Meta: model = ChatBot 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_default_system_role(self, obj: ChatBot): return obj.default_system_role_enhanced
[docs] class ChatBotConfigSerializer(serializers.ModelSerializer): """ Serializer for the smarter.apps.prompt.views.ChatConfigView which should not be camelCased. """ url_chatbot = serializers.ReadOnlyField() user_profile = UserProfileSerializer() default_system_role = serializers.SerializerMethodField() annotations = serializers.JSONField() class Meta: model = ChatBot 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_default_system_role(self, obj: ChatBot): return obj.default_system_role_enhanced
[docs] class ChatBotAPIKeySerializer(SmarterCamelCaseSerializer): class Meta: model = ChatBotAPIKey fields = "__all__"
[docs] def get_fields(self): fields = super().get_fields() for field in fields.values(): field.read_only = True return fields
[docs] class ChatBotCustomDomainSerializer(MetaDataWithOwnershipModelSerializer): class Meta: model = ChatBotCustomDomain fields = "__all__"
[docs] def get_fields(self): fields = super().get_fields() for field in fields.values(): field.read_only = True return fields
[docs] class ChatBotPluginSerializer(SmarterCamelCaseSerializer): plugin_meta = PluginMetaSerializer() class Meta: model = ChatBotPlugin fields = "__all__"
[docs] def get_fields(self): fields = super().get_fields() for field in fields.values(): field.read_only = True return fields
[docs] class ChatBotFunctionsSerializer(SmarterCamelCaseSerializer): class Meta: model = ChatBotFunctions fields = "__all__"
[docs] def get_fields(self): fields = super().get_fields() for field in fields.values(): field.read_only = True return fields