2323from django .db .models import QuerySet , Count
2424from django .db .models .functions import Substr , Reverse
2525from django .http import HttpResponse
26+ from django .utils .translation import gettext_lazy as _ , gettext
2627from drf_yasg import openapi
2728from openpyxl .cell .cell import ILLEGAL_CHARACTERS_RE
2829from rest_framework import serializers
6263from embedding .task .embedding import embedding_by_document , delete_embedding_by_document_list , \
6364 delete_embedding_by_document , update_embedding_dataset_id , delete_embedding_by_paragraph_ids , \
6465 embedding_by_document_list
66+ from setting .models import Model
6567from smartdoc .conf import PROJECT_DIR
66- from django .utils .translation import gettext_lazy as _ , gettext
6768
6869parse_qa_handle_list = [XlsParseQAHandle (), CsvParseQAHandle (), XlsxParseQAHandle (), ZipParseQAHandle ()]
6970parse_table_handle_list = [CsvSplitTableHandle (), XlsSplitTableHandle (), XlsxSplitTableHandle ()]
@@ -716,6 +717,14 @@ def refresh(self, state_list=None, with_valid=True):
716717 State .REVOKED .value , State .IGNORED .value ]
717718 if with_valid :
718719 self .is_valid (raise_exception = True )
720+ dataset = QuerySet (DataSet ).filter (id = self .data .get ('dataset_id' )).first ()
721+ embedding_model_id = dataset .embedding_mode_id
722+ dataset_user_id = dataset .user_id
723+ embedding_model = QuerySet (Model ).filter (id = embedding_model_id ).first ()
724+ if embedding_model is None :
725+ raise AppApiException (500 , _ ('Model does not exist' ))
726+ if embedding_model .permission_type == 'PRIVATE' and dataset_user_id != embedding_model .user_id :
727+ raise AppApiException (500 , _ ('No permission to use this model' ) + f"{ embedding_model .name } " )
719728 document_id = self .data .get ("document_id" )
720729 ListenerManagement .update_status (QuerySet (Document ).filter (id = document_id ), TaskType .EMBEDDING ,
721730 State .PENDING )
@@ -728,7 +737,7 @@ def refresh(self, state_list=None, with_valid=True):
728737 TaskType .EMBEDDING ,
729738 State .PENDING )
730739 ListenerManagement .get_aggregation_document_status (document_id )()
731- embedding_model_id = get_embedding_model_id_by_dataset_id ( dataset_id = self . data . get ( 'dataset_id' ))
740+
732741 try :
733742 embedding_by_document .delay (document_id , embedding_model_id , state_list )
734743 except AlreadyQueued as e :
0 commit comments