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
6668from django .utils .translation import gettext_lazy as _ , gettext , to_locale
6769from django .utils .translation import get_language
@@ -719,6 +721,14 @@ def refresh(self, state_list=None, with_valid=True):
719721 State .REVOKED .value , State .IGNORED .value ]
720722 if with_valid :
721723 self .is_valid (raise_exception = True )
724+ dataset = QuerySet (DataSet ).filter (id = self .data .get ('dataset_id' )).first ()
725+ embedding_model_id = dataset .embedding_mode_id
726+ dataset_user_id = dataset .user_id
727+ embedding_model = QuerySet (Model ).filter (id = embedding_model_id ).first ()
728+ if embedding_model is None :
729+ raise AppApiException (500 , _ ('Model does not exist' ))
730+ if embedding_model .permission_type == 'PRIVATE' and dataset_user_id != embedding_model .user_id :
731+ raise AppApiException (500 , _ ('No permission to use this model' ) + f"{ embedding_model .name } " )
722732 document_id = self .data .get ("document_id" )
723733 ListenerManagement .update_status (QuerySet (Document ).filter (id = document_id ), TaskType .EMBEDDING ,
724734 State .PENDING )
@@ -731,7 +741,7 @@ def refresh(self, state_list=None, with_valid=True):
731741 TaskType .EMBEDDING ,
732742 State .PENDING )
733743 ListenerManagement .get_aggregation_document_status (document_id )()
734- embedding_model_id = get_embedding_model_id_by_dataset_id ( dataset_id = self . data . get ( 'dataset_id' ))
744+
735745 try :
736746 embedding_by_document .delay (document_id , embedding_model_id , state_list )
737747 except AlreadyQueued as e :
0 commit comments