mirror of
https://git.mirrors.martin98.com/https://github.com/langgenius/dify.git
synced 2025-08-14 04:25:59 +08:00
add document limit check (#570)
This commit is contained in:
parent
24f3456990
commit
2c6e00174b
@ -50,7 +50,8 @@ DEFAULTS = {
|
|||||||
'PDF_PREVIEW': 'True',
|
'PDF_PREVIEW': 'True',
|
||||||
'LOG_LEVEL': 'INFO',
|
'LOG_LEVEL': 'INFO',
|
||||||
'DISABLE_PROVIDER_CONFIG_VALIDATION': 'False',
|
'DISABLE_PROVIDER_CONFIG_VALIDATION': 'False',
|
||||||
'DEFAULT_LLM_PROVIDER': 'openai'
|
'DEFAULT_LLM_PROVIDER': 'openai',
|
||||||
|
'TENANT_DOCUMENT_COUNT': 100
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -207,6 +208,8 @@ class Config:
|
|||||||
self.NOTION_INTERNAL_SECRET = get_env('NOTION_INTERNAL_SECRET')
|
self.NOTION_INTERNAL_SECRET = get_env('NOTION_INTERNAL_SECRET')
|
||||||
self.NOTION_INTEGRATION_TOKEN = get_env('NOTION_INTEGRATION_TOKEN')
|
self.NOTION_INTEGRATION_TOKEN = get_env('NOTION_INTEGRATION_TOKEN')
|
||||||
|
|
||||||
|
self.TENANT_DOCUMENT_COUNT = get_env('TENANT_DOCUMENT_COUNT')
|
||||||
|
|
||||||
|
|
||||||
class CloudEditionConfig(Config):
|
class CloudEditionConfig(Config):
|
||||||
|
|
||||||
|
@ -4,6 +4,9 @@ import datetime
|
|||||||
import time
|
import time
|
||||||
import random
|
import random
|
||||||
from typing import Optional, List
|
from typing import Optional, List
|
||||||
|
|
||||||
|
from flask import current_app
|
||||||
|
|
||||||
from extensions.ext_redis import redis_client
|
from extensions.ext_redis import redis_client
|
||||||
from flask_login import current_user
|
from flask_login import current_user
|
||||||
|
|
||||||
@ -374,6 +377,12 @@ class DocumentService:
|
|||||||
def save_document_with_dataset_id(dataset: Dataset, document_data: dict,
|
def save_document_with_dataset_id(dataset: Dataset, document_data: dict,
|
||||||
account: Account, dataset_process_rule: Optional[DatasetProcessRule] = None,
|
account: Account, dataset_process_rule: Optional[DatasetProcessRule] = None,
|
||||||
created_from: str = 'web'):
|
created_from: str = 'web'):
|
||||||
|
# check document limit
|
||||||
|
if current_app.config['EDITION'] == 'CLOUD':
|
||||||
|
documents_count = DocumentService.get_tenant_documents_count()
|
||||||
|
tenant_document_count = int(current_app.config['TENANT_DOCUMENT_COUNT'])
|
||||||
|
if documents_count > tenant_document_count:
|
||||||
|
raise ValueError(f"over document limit {tenant_document_count}.")
|
||||||
# if dataset is empty, update dataset data_source_type
|
# if dataset is empty, update dataset data_source_type
|
||||||
if not dataset.data_source_type:
|
if not dataset.data_source_type:
|
||||||
dataset.data_source_type = document_data["data_source"]["type"]
|
dataset.data_source_type = document_data["data_source"]["type"]
|
||||||
@ -521,6 +530,14 @@ class DocumentService:
|
|||||||
)
|
)
|
||||||
return document
|
return document
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_tenant_documents_count():
|
||||||
|
documents_count = Document.query.filter(Document.completed_at.isnot(None),
|
||||||
|
Document.enabled == True,
|
||||||
|
Document.archived == False,
|
||||||
|
Document.tenant_id == current_user.current_tenant_id).count()
|
||||||
|
return documents_count
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def update_document_with_dataset_id(dataset: Dataset, document_data: dict,
|
def update_document_with_dataset_id(dataset: Dataset, document_data: dict,
|
||||||
account: Account, dataset_process_rule: Optional[DatasetProcessRule] = None,
|
account: Account, dataset_process_rule: Optional[DatasetProcessRule] = None,
|
||||||
@ -616,6 +633,12 @@ class DocumentService:
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def save_document_without_dataset_id(tenant_id: str, document_data: dict, account: Account):
|
def save_document_without_dataset_id(tenant_id: str, document_data: dict, account: Account):
|
||||||
|
# check document limit
|
||||||
|
if current_app.config['EDITION'] == 'CLOUD':
|
||||||
|
documents_count = DocumentService.get_tenant_documents_count()
|
||||||
|
tenant_document_count = int(current_app.config['TENANT_DOCUMENT_COUNT'])
|
||||||
|
if documents_count > tenant_document_count:
|
||||||
|
raise ValueError(f"over document limit {tenant_document_count}.")
|
||||||
# save dataset
|
# save dataset
|
||||||
dataset = Dataset(
|
dataset = Dataset(
|
||||||
tenant_id=tenant_id,
|
tenant_id=tenant_id,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user