@@ -243,13 +243,16 @@ def export(self, with_valid=True):
243
243
self .is_valid (raise_exception = True )
244
244
language = get_language ()
245
245
if self .data .get ('type' ) == 'csv' :
246
- file = open (os .path .join (PROJECT_DIR , "apps" , "dataset" , 'template' , f'csv_template_{ to_locale (language )} .csv' ), "rb" )
246
+ file = open (
247
+ os .path .join (PROJECT_DIR , "apps" , "dataset" , 'template' , f'csv_template_{ to_locale (language )} .csv' ),
248
+ "rb" )
247
249
content = file .read ()
248
250
file .close ()
249
251
return HttpResponse (content , status = 200 , headers = {'Content-Type' : 'text/cxv' ,
250
252
'Content-Disposition' : 'attachment; filename="csv_template.csv"' })
251
253
elif self .data .get ('type' ) == 'excel' :
252
- file = open (os .path .join (PROJECT_DIR , "apps" , "dataset" , 'template' , f'excel_template_{ to_locale (language )} .xlsx' ), "rb" )
254
+ file = open (os .path .join (PROJECT_DIR , "apps" , "dataset" , 'template' ,
255
+ f'excel_template_{ to_locale (language )} .xlsx' ), "rb" )
253
256
content = file .read ()
254
257
file .close ()
255
258
return HttpResponse (content , status = 200 , headers = {'Content-Type' : 'application/vnd.ms-excel' ,
@@ -261,7 +264,8 @@ def table_export(self, with_valid=True):
261
264
language = get_language ()
262
265
if self .data .get ('type' ) == 'csv' :
263
266
file = open (
264
- os .path .join (PROJECT_DIR , "apps" , "dataset" , 'template' , f'table_template_{ to_locale (language )} .csv' ),
267
+ os .path .join (PROJECT_DIR , "apps" , "dataset" , 'template' ,
268
+ f'table_template_{ to_locale (language )} .csv' ),
265
269
"rb" )
266
270
content = file .read ()
267
271
file .close ()
@@ -1180,7 +1184,7 @@ def is_valid(self, *, raise_exception=False):
1180
1184
if not QuerySet (Document ).filter (id = document_id ).exists ():
1181
1185
raise AppApiException (500 , _ ('document id not exist' ))
1182
1186
1183
- def generate_related (self , model_id , prompt , with_valid = True ):
1187
+ def generate_related (self , model_id , prompt , state_list = None , with_valid = True ):
1184
1188
if with_valid :
1185
1189
self .is_valid (raise_exception = True )
1186
1190
document_id = self .data .get ('document_id' )
@@ -1192,7 +1196,7 @@ def generate_related(self, model_id, prompt, with_valid=True):
1192
1196
State .PENDING )
1193
1197
ListenerManagement .get_aggregation_document_status (document_id )()
1194
1198
try :
1195
- generate_related_by_document_id .delay (document_id , model_id , prompt )
1199
+ generate_related_by_document_id .delay (document_id , model_id , prompt , state_list )
1196
1200
except AlreadyQueued as e :
1197
1201
raise AppApiException (500 , _ ('The task is being executed, please do not send it again.' ))
1198
1202
@@ -1205,17 +1209,23 @@ def batch_generate_related(self, instance: Dict, with_valid=True):
1205
1209
document_id_list = instance .get ("document_id_list" )
1206
1210
model_id = instance .get ("model_id" )
1207
1211
prompt = instance .get ("prompt" )
1212
+ state_list = instance .get ('state_list' )
1208
1213
ListenerManagement .update_status (QuerySet (Document ).filter (id__in = document_id_list ),
1209
1214
TaskType .GENERATE_PROBLEM ,
1210
1215
State .PENDING )
1211
- ListenerManagement .update_status (QuerySet (Paragraph ).filter (document_id__in = document_id_list ),
1212
- TaskType .GENERATE_PROBLEM ,
1216
+ ListenerManagement .update_status (QuerySet (Paragraph ).annotate (
1217
+ reversed_status = Reverse ('status' ),
1218
+ task_type_status = Substr ('reversed_status' , TaskType .GENERATE_PROBLEM .value ,
1219
+ 1 ),
1220
+ ).filter (task_type_status__in = state_list , document_id__in = document_id_list )
1221
+ .values ('id' ),
1222
+ TaskType .EMBEDDING ,
1213
1223
State .PENDING )
1214
1224
ListenerManagement .get_aggregation_document_status_by_query_set (
1215
1225
QuerySet (Document ).filter (id__in = document_id_list ))()
1216
1226
try :
1217
1227
for document_id in document_id_list :
1218
- generate_related_by_document_id .delay (document_id , model_id , prompt )
1228
+ generate_related_by_document_id .delay (document_id , model_id , prompt , state_list )
1219
1229
except AlreadyQueued as e :
1220
1230
pass
1221
1231
0 commit comments