| 126 | |
| 127 | |
| 128 | class KnowledgeEditRequest(serializers.Serializer): |
| 129 | name = serializers.CharField(required=False, max_length=64, min_length=1, label=_("knowledge name")) |
| 130 | desc = serializers.CharField(required=False, max_length=256, min_length=1, label=_("knowledge description")) |
| 131 | meta = serializers.DictField(required=False) |
| 132 | application_id_list = serializers.ListSerializer( |
| 133 | required=False, |
| 134 | child=serializers.UUIDField(required=True, label=_("application id")), |
| 135 | label=_("application id list"), |
| 136 | ) |
| 137 | file_size_limit = serializers.IntegerField(required=False, label=_("file size limit")) |
| 138 | file_count_limit = serializers.IntegerField(required=False, label=_("file count limit")) |
| 139 | |
| 140 | @staticmethod |
| 141 | def get_knowledge_meta_valid_map(): |
| 142 | knowledge_meta_valid_map = { |
| 143 | KnowledgeType.BASE: MetaSerializer.BaseMeta, |
| 144 | KnowledgeType.WEB: MetaSerializer.WebMeta, |
| 145 | } |
| 146 | return knowledge_meta_valid_map |
| 147 | |
| 148 | def is_valid(self, *, knowledge: Knowledge = None): |
| 149 | super().is_valid(raise_exception=True) |
| 150 | if "meta" in self.data and self.data.get("meta") is not None: |
| 151 | knowledge_meta_valid_map = self.get_knowledge_meta_valid_map() |
| 152 | valid_class = knowledge_meta_valid_map.get(knowledge.type) |
| 153 | valid_class(data=self.data.get("meta")).is_valid(raise_exception=True) |
| 154 | |
| 155 | |
| 156 | class HitTestSerializer(serializers.Serializer): |