# 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