|
@@ -3,7 +3,7 @@ import random
|
|
|
from datetime import datetime
|
|
|
from typing import List
|
|
|
|
|
|
-from flask import request
|
|
|
+from flask import request, current_app
|
|
|
from flask_login import current_user
|
|
|
from core.login.login import login_required
|
|
|
from flask_restful import Resource, fields, marshal, marshal_with, reqparse
|
|
@@ -275,7 +275,8 @@ class DatasetDocumentListApi(Resource):
|
|
|
parser.add_argument('duplicate', type=bool, nullable=False, location='json')
|
|
|
parser.add_argument('original_document_id', type=str, required=False, location='json')
|
|
|
parser.add_argument('doc_form', type=str, default='text_model', required=False, nullable=False, location='json')
|
|
|
- parser.add_argument('doc_language', type=str, default='English', required=False, nullable=False, location='json')
|
|
|
+ parser.add_argument('doc_language', type=str, default='English', required=False, nullable=False,
|
|
|
+ location='json')
|
|
|
args = parser.parse_args()
|
|
|
|
|
|
if not dataset.indexing_technique and not args['indexing_technique']:
|
|
@@ -335,7 +336,8 @@ class DatasetInitApi(Resource):
|
|
|
parser.add_argument('data_source', type=dict, required=True, nullable=True, location='json')
|
|
|
parser.add_argument('process_rule', type=dict, required=True, nullable=True, location='json')
|
|
|
parser.add_argument('doc_form', type=str, default='text_model', required=False, nullable=False, location='json')
|
|
|
- parser.add_argument('doc_language', type=str, default='English', required=False, nullable=False, location='json')
|
|
|
+ parser.add_argument('doc_language', type=str, default='English', required=False, nullable=False,
|
|
|
+ location='json')
|
|
|
args = parser.parse_args()
|
|
|
|
|
|
try:
|
|
@@ -483,7 +485,7 @@ class DocumentBatchIndexingEstimateApi(DocumentResource):
|
|
|
indexing_runner = IndexingRunner()
|
|
|
try:
|
|
|
response = indexing_runner.file_indexing_estimate(current_user.current_tenant_id, file_details,
|
|
|
- data_process_rule_dict, None, dataset_id)
|
|
|
+ data_process_rule_dict, None, dataset_id)
|
|
|
except LLMBadRequestError:
|
|
|
raise ProviderNotInitializeError(
|
|
|
f"No Embedding Model available. Please configure a valid provider "
|
|
@@ -855,6 +857,14 @@ class DocumentStatusApi(DocumentResource):
|
|
|
if not document.archived:
|
|
|
raise InvalidActionError('Document is not archived.')
|
|
|
|
|
|
+ # check document limit
|
|
|
+ if current_app.config['EDITION'] == 'CLOUD':
|
|
|
+ documents_count = DocumentService.get_tenant_documents_count()
|
|
|
+ total_count = documents_count + 1
|
|
|
+ tenant_document_count = int(current_app.config['TENANT_DOCUMENT_COUNT'])
|
|
|
+ if total_count > tenant_document_count:
|
|
|
+ raise ValueError(f"All your documents have overed limit {tenant_document_count}.")
|
|
|
+
|
|
|
document.archived = False
|
|
|
document.archived_at = None
|
|
|
document.archived_by = None
|
|
@@ -872,6 +882,10 @@ class DocumentStatusApi(DocumentResource):
|
|
|
|
|
|
|
|
|
class DocumentPauseApi(DocumentResource):
|
|
|
+
|
|
|
+ @setup_required
|
|
|
+ @login_required
|
|
|
+ @account_initialization_required
|
|
|
def patch(self, dataset_id, document_id):
|
|
|
"""pause document."""
|
|
|
dataset_id = str(dataset_id)
|
|
@@ -901,6 +915,9 @@ class DocumentPauseApi(DocumentResource):
|
|
|
|
|
|
|
|
|
class DocumentRecoverApi(DocumentResource):
|
|
|
+ @setup_required
|
|
|
+ @login_required
|
|
|
+ @account_initialization_required
|
|
|
def patch(self, dataset_id, document_id):
|
|
|
"""recover document."""
|
|
|
dataset_id = str(dataset_id)
|
|
@@ -926,6 +943,21 @@ class DocumentRecoverApi(DocumentResource):
|
|
|
return {'result': 'success'}, 204
|
|
|
|
|
|
|
|
|
+class DocumentLimitApi(DocumentResource):
|
|
|
+ @setup_required
|
|
|
+ @login_required
|
|
|
+ @account_initialization_required
|
|
|
+ def get(self):
|
|
|
+ """get document limit"""
|
|
|
+ documents_count = DocumentService.get_tenant_documents_count()
|
|
|
+ tenant_document_count = int(current_app.config['TENANT_DOCUMENT_COUNT'])
|
|
|
+
|
|
|
+ return {
|
|
|
+ 'documents_count': documents_count,
|
|
|
+ 'documents_limit': tenant_document_count
|
|
|
+ }, 200
|
|
|
+
|
|
|
+
|
|
|
api.add_resource(GetProcessRuleApi, '/datasets/process-rule')
|
|
|
api.add_resource(DatasetDocumentListApi,
|
|
|
'/datasets/<uuid:dataset_id>/documents')
|
|
@@ -951,3 +983,4 @@ api.add_resource(DocumentStatusApi,
|
|
|
'/datasets/<uuid:dataset_id>/documents/<uuid:document_id>/status/<string:action>')
|
|
|
api.add_resource(DocumentPauseApi, '/datasets/<uuid:dataset_id>/documents/<uuid:document_id>/processing/pause')
|
|
|
api.add_resource(DocumentRecoverApi, '/datasets/<uuid:dataset_id>/documents/<uuid:document_id>/processing/resume')
|
|
|
+api.add_resource(DocumentLimitApi, '/datasets/limit')
|