77from rest_framework import serializers
88
99from common .exception .app_exception import NotFound404
10- from knowledge .models import File
10+ from knowledge .models import File , FileSourceType
1111from tools .serializers .tool import UploadedFileField
1212
1313mime_types = {
5757class FileSerializer (serializers .Serializer ):
5858 file = UploadedFileField (required = True , label = _ ('file' ))
5959 meta = serializers .JSONField (required = False , allow_null = True )
60+ source_id = serializers .CharField (
61+ required = False , allow_null = True , label = _ ('source id' ), default = FileSourceType .TEMPORARY_120_MINUTE .value
62+ )
63+ source_type = serializers .ChoiceField (
64+ choices = FileSourceType .choices , required = False , allow_null = True , label = _ ('source type' ),
65+ default = FileSourceType .TEMPORARY_120_MINUTE
66+ )
6067
6168 def upload (self , with_valid = True ):
6269 if with_valid :
@@ -65,7 +72,13 @@ def upload(self, with_valid=True):
6572 if not meta :
6673 meta = {'debug' : True }
6774 file_id = meta .get ('file_id' , uuid .uuid7 ())
68- file = File (id = file_id , file_name = self .data .get ('file' ).name , meta = meta )
75+ file = File (
76+ id = file_id ,
77+ file_name = self .data .get ('file' ).name ,
78+ meta = meta ,
79+ source_id = self .data .get ('source_id' ) or FileSourceType .TEMPORARY_120_MINUTE .value ,
80+ source_type = self .data .get ('source_type' ) or FileSourceType .TEMPORARY_120_MINUTE
81+ )
6982 file .save (self .data .get ('file' ).read ())
7083 return f'./oss/file/{ file_id } '
7184
0 commit comments