11from django .db import transaction
2- from django .shortcuts import get_object_or_404
32from django .utils import timezone
43from rest_framework import serializers
54
@@ -26,7 +25,7 @@ class Meta:
2625
2726class ContentSerializer (serializers .ModelSerializer ):
2827 tag = serializers .PrimaryKeyRelatedField (queryset = Tag .objects .all (), many = True , required = False )
29- document_file = serializers .FileField (required = False )
28+ document_file = serializers .FileField (required = True )
3029
3130 class Meta :
3231 model = Content
@@ -64,18 +63,17 @@ def save(self, **_):
6463
6564
6665class ArchiveContentSerializer (serializers .ModelSerializer ):
67- id = serializers .CharField ( required = True )
66+ content = serializers .PrimaryKeyRelatedField ( queryset = Content . objects . all (), required = True )
6867
6968 def validate (self , attrs ):
70- content_id = attrs ["id" ]
71- content = get_object_or_404 (Content , id = content_id )
69+ content = attrs ["content" ]
7270 if content .document_status == Content .DocumentStatus .DELETED_FROM_VECTOR :
7371 raise serializers .ValidationError ("Content is already deleted from vector." )
74- return { ** attrs , "content" : content }
72+ return attrs
7573
7674 class Meta :
7775 model = Content
78- fields = ["id " ]
76+ fields = ["content " ]
7977
8078 def save (self , ** _ ):
8179 assert isinstance (self .validated_data , dict )
@@ -90,22 +88,20 @@ def save(self, **_):
9088
9189
9290class RetriggerContentSerializer (serializers .ModelSerializer ):
93- id = serializers .CharField ( required = True )
91+ content = serializers .PrimaryKeyRelatedField ( queryset = Content . objects . all (), required = True )
9492
9593 def validate (self , attrs ):
96- content_id = attrs ["id" ]
97- content = get_object_or_404 (Content , id = content_id )
94+ content = attrs ["content" ]
9895 if content .document_status == Content .DocumentStatus .ADDED_TO_VECTOR :
9996 raise serializers .ValidationError ("Content has already been added to vector. No need to trigger it again." )
100- return { ** attrs , "content" : content }
97+ return attrs
10198
10299 class Meta :
103100 model = Content
104- fields = ["id " ]
101+ fields = ["content " ]
105102
106103 def save (self , ** _ ):
107- with transaction .atomic ():
108- assert isinstance (self .validated_data , dict )
109- content = self .validated_data ["content" ]
110- transaction .on_commit (lambda : create_embedding_for_content_task .delay (content .id ))
104+ assert isinstance (self .validated_data , dict )
105+ content = self .validated_data ["content" ]
106+ transaction .on_commit (lambda : create_embedding_for_content_task .delay (content .id ))
111107 return content
0 commit comments