mirror of
https://github.com/langgenius/dify.git
synced 2024-11-16 11:42:29 +08:00
refactor(services/tasks): Swtich to dify_config witch Pydantic (#6203)
This commit is contained in:
parent
d7a6f25c63
commit
7b225a5ab0
|
@ -1,7 +1,6 @@
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
from flask import current_app
|
from configs import dify_config
|
||||||
|
|
||||||
from core.rag.datasource.keyword.jieba.jieba import Jieba
|
from core.rag.datasource.keyword.jieba.jieba import Jieba
|
||||||
from core.rag.datasource.keyword.keyword_base import BaseKeyword
|
from core.rag.datasource.keyword.keyword_base import BaseKeyword
|
||||||
from core.rag.models.document import Document
|
from core.rag.models.document import Document
|
||||||
|
@ -14,8 +13,8 @@ class Keyword:
|
||||||
self._keyword_processor = self._init_keyword()
|
self._keyword_processor = self._init_keyword()
|
||||||
|
|
||||||
def _init_keyword(self) -> BaseKeyword:
|
def _init_keyword(self) -> BaseKeyword:
|
||||||
config = current_app.config
|
config = dify_config
|
||||||
keyword_type = config.get('KEYWORD_STORE')
|
keyword_type = config.KEYWORD_STORE
|
||||||
|
|
||||||
if not keyword_type:
|
if not keyword_type:
|
||||||
raise ValueError("Keyword store must be specified.")
|
raise ValueError("Keyword store must be specified.")
|
||||||
|
|
|
@ -6,10 +6,10 @@ from datetime import datetime, timedelta, timezone
|
||||||
from hashlib import sha256
|
from hashlib import sha256
|
||||||
from typing import Any, Optional
|
from typing import Any, Optional
|
||||||
|
|
||||||
from flask import current_app
|
|
||||||
from sqlalchemy import func
|
from sqlalchemy import func
|
||||||
from werkzeug.exceptions import Unauthorized
|
from werkzeug.exceptions import Unauthorized
|
||||||
|
|
||||||
|
from configs import dify_config
|
||||||
from constants.languages import language_timezone_mapping, languages
|
from constants.languages import language_timezone_mapping, languages
|
||||||
from events.tenant_event import tenant_was_created
|
from events.tenant_event import tenant_was_created
|
||||||
from extensions.ext_redis import redis_client
|
from extensions.ext_redis import redis_client
|
||||||
|
@ -80,7 +80,7 @@ class AccountService:
|
||||||
payload = {
|
payload = {
|
||||||
"user_id": account.id,
|
"user_id": account.id,
|
||||||
"exp": datetime.now(timezone.utc).replace(tzinfo=None) + exp,
|
"exp": datetime.now(timezone.utc).replace(tzinfo=None) + exp,
|
||||||
"iss": current_app.config['EDITION'],
|
"iss": dify_config.EDITION,
|
||||||
"sub": 'Console API Passport',
|
"sub": 'Console API Passport',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -524,7 +524,7 @@ class RegisterService:
|
||||||
TenantService.create_owner_tenant_if_not_exist(account)
|
TenantService.create_owner_tenant_if_not_exist(account)
|
||||||
|
|
||||||
dify_setup = DifySetup(
|
dify_setup = DifySetup(
|
||||||
version=current_app.config['CURRENT_VERSION']
|
version=dify_config.CURRENT_VERSION
|
||||||
)
|
)
|
||||||
db.session.add(dify_setup)
|
db.session.add(dify_setup)
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
@ -559,7 +559,7 @@ class RegisterService:
|
||||||
|
|
||||||
if open_id is not None or provider is not None:
|
if open_id is not None or provider is not None:
|
||||||
AccountService.link_account_integrate(provider, open_id, account)
|
AccountService.link_account_integrate(provider, open_id, account)
|
||||||
if current_app.config['EDITION'] != 'SELF_HOSTED':
|
if dify_config.EDITION != 'SELF_HOSTED':
|
||||||
tenant = TenantService.create_tenant(f"{account.name}'s Workspace")
|
tenant = TenantService.create_tenant(f"{account.name}'s Workspace")
|
||||||
|
|
||||||
TenantService.create_tenant_member(tenant, account, role='owner')
|
TenantService.create_tenant_member(tenant, account, role='owner')
|
||||||
|
@ -623,7 +623,7 @@ class RegisterService:
|
||||||
'email': account.email,
|
'email': account.email,
|
||||||
'workspace_id': tenant.id,
|
'workspace_id': tenant.id,
|
||||||
}
|
}
|
||||||
expiryHours = current_app.config['INVITE_EXPIRY_HOURS']
|
expiryHours = dify_config.INVITE_EXPIRY_HOURS
|
||||||
redis_client.setex(
|
redis_client.setex(
|
||||||
cls._get_invitation_token_key(token),
|
cls._get_invitation_token_key(token),
|
||||||
expiryHours * 60 * 60,
|
expiryHours * 60 * 60,
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
from collections.abc import Generator
|
from collections.abc import Generator
|
||||||
from typing import Any, Union
|
from typing import Any, Union
|
||||||
|
|
||||||
|
from configs import dify_config
|
||||||
from core.app.apps.advanced_chat.app_generator import AdvancedChatAppGenerator
|
from core.app.apps.advanced_chat.app_generator import AdvancedChatAppGenerator
|
||||||
from core.app.apps.agent_chat.app_generator import AgentChatAppGenerator
|
from core.app.apps.agent_chat.app_generator import AgentChatAppGenerator
|
||||||
from core.app.apps.chat.app_generator import ChatAppGenerator
|
from core.app.apps.chat.app_generator import ChatAppGenerator
|
||||||
|
@ -89,8 +90,7 @@ class AppGenerateService:
|
||||||
def _get_max_active_requests(app_model: App) -> int:
|
def _get_max_active_requests(app_model: App) -> int:
|
||||||
max_active_requests = app_model.max_active_requests
|
max_active_requests = app_model.max_active_requests
|
||||||
if app_model.max_active_requests is None:
|
if app_model.max_active_requests is None:
|
||||||
from flask import current_app
|
max_active_requests = int(dify_config.APP_MAX_ACTIVE_REQUESTS)
|
||||||
max_active_requests = int(current_app.config['APP_MAX_ACTIVE_REQUESTS'])
|
|
||||||
return max_active_requests
|
return max_active_requests
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
|
|
@ -4,10 +4,10 @@ from datetime import datetime, timezone
|
||||||
from typing import cast
|
from typing import cast
|
||||||
|
|
||||||
import yaml
|
import yaml
|
||||||
from flask import current_app
|
|
||||||
from flask_login import current_user
|
from flask_login import current_user
|
||||||
from flask_sqlalchemy.pagination import Pagination
|
from flask_sqlalchemy.pagination import Pagination
|
||||||
|
|
||||||
|
from configs import dify_config
|
||||||
from constants.model_template import default_app_templates
|
from constants.model_template import default_app_templates
|
||||||
from core.agent.entities import AgentToolEntity
|
from core.agent.entities import AgentToolEntity
|
||||||
from core.app.features.rate_limiting import RateLimit
|
from core.app.features.rate_limiting import RateLimit
|
||||||
|
@ -446,7 +446,7 @@ class AppService:
|
||||||
# get all tools
|
# get all tools
|
||||||
tools = agent_config.get('tools', [])
|
tools = agent_config.get('tools', [])
|
||||||
|
|
||||||
url_prefix = (current_app.config.get("CONSOLE_API_URL")
|
url_prefix = (dify_config.CONSOLE_API_URL
|
||||||
+ "/console/api/workspaces/current/tool-provider/builtin/")
|
+ "/console/api/workspaces/current/tool-provider/builtin/")
|
||||||
|
|
||||||
for tool in tools:
|
for tool in tools:
|
||||||
|
|
|
@ -6,10 +6,10 @@ import time
|
||||||
import uuid
|
import uuid
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
from flask import current_app
|
|
||||||
from flask_login import current_user
|
from flask_login import current_user
|
||||||
from sqlalchemy import func
|
from sqlalchemy import func
|
||||||
|
|
||||||
|
from configs import dify_config
|
||||||
from core.errors.error import LLMBadRequestError, ProviderTokenNotInitError
|
from core.errors.error import LLMBadRequestError, ProviderTokenNotInitError
|
||||||
from core.model_manager import ModelManager
|
from core.model_manager import ModelManager
|
||||||
from core.model_runtime.entities.model_entities import ModelType
|
from core.model_runtime.entities.model_entities import ModelType
|
||||||
|
@ -650,7 +650,7 @@ class DocumentService:
|
||||||
elif document_data["data_source"]["type"] == "website_crawl":
|
elif document_data["data_source"]["type"] == "website_crawl":
|
||||||
website_info = document_data["data_source"]['info_list']['website_info_list']
|
website_info = document_data["data_source"]['info_list']['website_info_list']
|
||||||
count = len(website_info['urls'])
|
count = len(website_info['urls'])
|
||||||
batch_upload_limit = int(current_app.config['BATCH_UPLOAD_LIMIT'])
|
batch_upload_limit = int(dify_config.BATCH_UPLOAD_LIMIT)
|
||||||
if count > batch_upload_limit:
|
if count > batch_upload_limit:
|
||||||
raise ValueError(f"You have reached the batch upload limit of {batch_upload_limit}.")
|
raise ValueError(f"You have reached the batch upload limit of {batch_upload_limit}.")
|
||||||
|
|
||||||
|
@ -1028,7 +1028,7 @@ class DocumentService:
|
||||||
elif document_data["data_source"]["type"] == "website_crawl":
|
elif document_data["data_source"]["type"] == "website_crawl":
|
||||||
website_info = document_data["data_source"]['info_list']['website_info_list']
|
website_info = document_data["data_source"]['info_list']['website_info_list']
|
||||||
count = len(website_info['urls'])
|
count = len(website_info['urls'])
|
||||||
batch_upload_limit = int(current_app.config['BATCH_UPLOAD_LIMIT'])
|
batch_upload_limit = int(dify_config.BATCH_UPLOAD_LIMIT)
|
||||||
if count > batch_upload_limit:
|
if count > batch_upload_limit:
|
||||||
raise ValueError(f"You have reached the batch upload limit of {batch_upload_limit}.")
|
raise ValueError(f"You have reached the batch upload limit of {batch_upload_limit}.")
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
from flask import current_app
|
|
||||||
from pydantic import BaseModel, ConfigDict
|
from pydantic import BaseModel, ConfigDict
|
||||||
|
|
||||||
|
from configs import dify_config
|
||||||
from core.entities.model_entities import ModelWithProviderEntity, ProviderModelWithStatusEntity
|
from core.entities.model_entities import ModelWithProviderEntity, ProviderModelWithStatusEntity
|
||||||
from core.entities.provider_entities import QuotaConfiguration
|
from core.entities.provider_entities import QuotaConfiguration
|
||||||
from core.model_runtime.entities.common_entities import I18nObject
|
from core.model_runtime.entities.common_entities import I18nObject
|
||||||
|
@ -67,7 +67,7 @@ class ProviderResponse(BaseModel):
|
||||||
def __init__(self, **data) -> None:
|
def __init__(self, **data) -> None:
|
||||||
super().__init__(**data)
|
super().__init__(**data)
|
||||||
|
|
||||||
url_prefix = (current_app.config.get("CONSOLE_API_URL")
|
url_prefix = (dify_config.CONSOLE_API_URL
|
||||||
+ f"/console/api/workspaces/current/model-providers/{self.provider}")
|
+ f"/console/api/workspaces/current/model-providers/{self.provider}")
|
||||||
if self.icon_small is not None:
|
if self.icon_small is not None:
|
||||||
self.icon_small = I18nObject(
|
self.icon_small = I18nObject(
|
||||||
|
@ -96,7 +96,7 @@ class ProviderWithModelsResponse(BaseModel):
|
||||||
def __init__(self, **data) -> None:
|
def __init__(self, **data) -> None:
|
||||||
super().__init__(**data)
|
super().__init__(**data)
|
||||||
|
|
||||||
url_prefix = (current_app.config.get("CONSOLE_API_URL")
|
url_prefix = (dify_config.CONSOLE_API_URL
|
||||||
+ f"/console/api/workspaces/current/model-providers/{self.provider}")
|
+ f"/console/api/workspaces/current/model-providers/{self.provider}")
|
||||||
if self.icon_small is not None:
|
if self.icon_small is not None:
|
||||||
self.icon_small = I18nObject(
|
self.icon_small = I18nObject(
|
||||||
|
@ -119,7 +119,7 @@ class SimpleProviderEntityResponse(SimpleProviderEntity):
|
||||||
def __init__(self, **data) -> None:
|
def __init__(self, **data) -> None:
|
||||||
super().__init__(**data)
|
super().__init__(**data)
|
||||||
|
|
||||||
url_prefix = (current_app.config.get("CONSOLE_API_URL")
|
url_prefix = (dify_config.CONSOLE_API_URL
|
||||||
+ f"/console/api/workspaces/current/model-providers/{self.provider}")
|
+ f"/console/api/workspaces/current/model-providers/{self.provider}")
|
||||||
if self.icon_small is not None:
|
if self.icon_small is not None:
|
||||||
self.icon_small = I18nObject(
|
self.icon_small = I18nObject(
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
from flask import current_app
|
|
||||||
from pydantic import BaseModel, ConfigDict
|
from pydantic import BaseModel, ConfigDict
|
||||||
|
|
||||||
|
from configs import dify_config
|
||||||
from services.billing_service import BillingService
|
from services.billing_service import BillingService
|
||||||
from services.enterprise.enterprise_service import EnterpriseService
|
from services.enterprise.enterprise_service import EnterpriseService
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@ class FeatureService:
|
||||||
|
|
||||||
cls._fulfill_params_from_env(features)
|
cls._fulfill_params_from_env(features)
|
||||||
|
|
||||||
if current_app.config['BILLING_ENABLED']:
|
if dify_config.BILLING_ENABLED:
|
||||||
cls._fulfill_params_from_billing_api(features, tenant_id)
|
cls._fulfill_params_from_billing_api(features, tenant_id)
|
||||||
|
|
||||||
return features
|
return features
|
||||||
|
@ -60,16 +60,16 @@ class FeatureService:
|
||||||
def get_system_features(cls) -> SystemFeatureModel:
|
def get_system_features(cls) -> SystemFeatureModel:
|
||||||
system_features = SystemFeatureModel()
|
system_features = SystemFeatureModel()
|
||||||
|
|
||||||
if current_app.config['ENTERPRISE_ENABLED']:
|
if dify_config.ENTERPRISE_ENABLED:
|
||||||
cls._fulfill_params_from_enterprise(system_features)
|
cls._fulfill_params_from_enterprise(system_features)
|
||||||
|
|
||||||
return system_features
|
return system_features
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def _fulfill_params_from_env(cls, features: FeatureModel):
|
def _fulfill_params_from_env(cls, features: FeatureModel):
|
||||||
features.can_replace_logo = current_app.config['CAN_REPLACE_LOGO']
|
features.can_replace_logo = dify_config.CAN_REPLACE_LOGO
|
||||||
features.model_load_balancing_enabled = current_app.config['MODEL_LB_ENABLED']
|
features.model_load_balancing_enabled = dify_config.MODEL_LB_ENABLED
|
||||||
features.dataset_operator_enabled = current_app.config['DATASET_OPERATOR_ENABLED']
|
features.dataset_operator_enabled = dify_config.DATASET_OPERATOR_ENABLED
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def _fulfill_params_from_billing_api(cls, features: FeatureModel, tenant_id: str):
|
def _fulfill_params_from_billing_api(cls, features: FeatureModel, tenant_id: str):
|
||||||
|
|
|
@ -4,11 +4,11 @@ import uuid
|
||||||
from collections.abc import Generator
|
from collections.abc import Generator
|
||||||
from typing import Union
|
from typing import Union
|
||||||
|
|
||||||
from flask import current_app
|
|
||||||
from flask_login import current_user
|
from flask_login import current_user
|
||||||
from werkzeug.datastructures import FileStorage
|
from werkzeug.datastructures import FileStorage
|
||||||
from werkzeug.exceptions import NotFound
|
from werkzeug.exceptions import NotFound
|
||||||
|
|
||||||
|
from configs import dify_config
|
||||||
from core.file.upload_file_parser import UploadFileParser
|
from core.file.upload_file_parser import UploadFileParser
|
||||||
from core.rag.extractor.extract_processor import ExtractProcessor
|
from core.rag.extractor.extract_processor import ExtractProcessor
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
|
@ -35,7 +35,7 @@ class FileService:
|
||||||
extension = file.filename.split('.')[-1]
|
extension = file.filename.split('.')[-1]
|
||||||
if len(filename) > 200:
|
if len(filename) > 200:
|
||||||
filename = filename.split('.')[0][:200] + '.' + extension
|
filename = filename.split('.')[0][:200] + '.' + extension
|
||||||
etl_type = current_app.config['ETL_TYPE']
|
etl_type = dify_config.ETL_TYPE
|
||||||
allowed_extensions = UNSTRUCTURED_ALLOWED_EXTENSIONS + IMAGE_EXTENSIONS if etl_type == 'Unstructured' \
|
allowed_extensions = UNSTRUCTURED_ALLOWED_EXTENSIONS + IMAGE_EXTENSIONS if etl_type == 'Unstructured' \
|
||||||
else ALLOWED_EXTENSIONS + IMAGE_EXTENSIONS
|
else ALLOWED_EXTENSIONS + IMAGE_EXTENSIONS
|
||||||
if extension.lower() not in allowed_extensions:
|
if extension.lower() not in allowed_extensions:
|
||||||
|
@ -50,9 +50,9 @@ class FileService:
|
||||||
file_size = len(file_content)
|
file_size = len(file_content)
|
||||||
|
|
||||||
if extension.lower() in IMAGE_EXTENSIONS:
|
if extension.lower() in IMAGE_EXTENSIONS:
|
||||||
file_size_limit = current_app.config.get("UPLOAD_IMAGE_FILE_SIZE_LIMIT") * 1024 * 1024
|
file_size_limit = dify_config.UPLOAD_IMAGE_FILE_SIZE_LIMIT * 1024 * 1024
|
||||||
else:
|
else:
|
||||||
file_size_limit = current_app.config.get("UPLOAD_FILE_SIZE_LIMIT") * 1024 * 1024
|
file_size_limit = dify_config.UPLOAD_FILE_SIZE_LIMIT * 1024 * 1024
|
||||||
|
|
||||||
if file_size > file_size_limit:
|
if file_size > file_size_limit:
|
||||||
message = f'File size exceeded. {file_size} > {file_size_limit}'
|
message = f'File size exceeded. {file_size} > {file_size_limit}'
|
||||||
|
@ -73,10 +73,9 @@ class FileService:
|
||||||
storage.save(file_key, file_content)
|
storage.save(file_key, file_content)
|
||||||
|
|
||||||
# save file to db
|
# save file to db
|
||||||
config = current_app.config
|
|
||||||
upload_file = UploadFile(
|
upload_file = UploadFile(
|
||||||
tenant_id=current_tenant_id,
|
tenant_id=current_tenant_id,
|
||||||
storage_type=config['STORAGE_TYPE'],
|
storage_type=dify_config.STORAGE_TYPE,
|
||||||
key=file_key,
|
key=file_key,
|
||||||
name=filename,
|
name=filename,
|
||||||
size=file_size,
|
size=file_size,
|
||||||
|
@ -106,10 +105,9 @@ class FileService:
|
||||||
storage.save(file_key, text.encode('utf-8'))
|
storage.save(file_key, text.encode('utf-8'))
|
||||||
|
|
||||||
# save file to db
|
# save file to db
|
||||||
config = current_app.config
|
|
||||||
upload_file = UploadFile(
|
upload_file = UploadFile(
|
||||||
tenant_id=current_user.current_tenant_id,
|
tenant_id=current_user.current_tenant_id,
|
||||||
storage_type=config['STORAGE_TYPE'],
|
storage_type=dify_config.STORAGE_TYPE,
|
||||||
key=file_key,
|
key=file_key,
|
||||||
name=text_name + '.txt',
|
name=text_name + '.txt',
|
||||||
size=len(text),
|
size=len(text),
|
||||||
|
@ -138,7 +136,7 @@ class FileService:
|
||||||
|
|
||||||
# extract text from file
|
# extract text from file
|
||||||
extension = upload_file.extension
|
extension = upload_file.extension
|
||||||
etl_type = current_app.config['ETL_TYPE']
|
etl_type = dify_config.ETL_TYPE
|
||||||
allowed_extensions = UNSTRUCTURED_ALLOWED_EXTENSIONS if etl_type == 'Unstructured' else ALLOWED_EXTENSIONS
|
allowed_extensions = UNSTRUCTURED_ALLOWED_EXTENSIONS if etl_type == 'Unstructured' else ALLOWED_EXTENSIONS
|
||||||
if extension.lower() not in allowed_extensions:
|
if extension.lower() not in allowed_extensions:
|
||||||
raise UnsupportedFileTypeError()
|
raise UnsupportedFileTypeError()
|
||||||
|
|
|
@ -4,8 +4,8 @@ from os import path
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
from flask import current_app
|
|
||||||
|
|
||||||
|
from configs import dify_config
|
||||||
from constants.languages import languages
|
from constants.languages import languages
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from models.model import App, RecommendedApp
|
from models.model import App, RecommendedApp
|
||||||
|
@ -25,7 +25,7 @@ class RecommendedAppService:
|
||||||
:param language: language
|
:param language: language
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
mode = current_app.config.get('HOSTED_FETCH_APP_TEMPLATES_MODE', 'remote')
|
mode = dify_config.HOSTED_FETCH_APP_TEMPLATES_MODE
|
||||||
if mode == 'remote':
|
if mode == 'remote':
|
||||||
try:
|
try:
|
||||||
result = cls._fetch_recommended_apps_from_dify_official(language)
|
result = cls._fetch_recommended_apps_from_dify_official(language)
|
||||||
|
@ -104,7 +104,7 @@ class RecommendedAppService:
|
||||||
:param language: language
|
:param language: language
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
domain = current_app.config.get('HOSTED_FETCH_APP_TEMPLATES_REMOTE_DOMAIN', 'https://tmpl.dify.ai')
|
domain = dify_config.HOSTED_FETCH_APP_TEMPLATES_REMOTE_DOMAIN
|
||||||
url = f'{domain}/apps?language={language}'
|
url = f'{domain}/apps?language={language}'
|
||||||
response = requests.get(url, timeout=(3, 10))
|
response = requests.get(url, timeout=(3, 10))
|
||||||
if response.status_code != 200:
|
if response.status_code != 200:
|
||||||
|
@ -134,7 +134,7 @@ class RecommendedAppService:
|
||||||
:param app_id: app id
|
:param app_id: app id
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
mode = current_app.config.get('HOSTED_FETCH_APP_TEMPLATES_MODE', 'remote')
|
mode = dify_config.HOSTED_FETCH_APP_TEMPLATES_MODE
|
||||||
if mode == 'remote':
|
if mode == 'remote':
|
||||||
try:
|
try:
|
||||||
result = cls._fetch_recommended_app_detail_from_dify_official(app_id)
|
result = cls._fetch_recommended_app_detail_from_dify_official(app_id)
|
||||||
|
@ -157,7 +157,7 @@ class RecommendedAppService:
|
||||||
:param app_id: App ID
|
:param app_id: App ID
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
domain = current_app.config.get('HOSTED_FETCH_APP_TEMPLATES_REMOTE_DOMAIN', 'https://tmpl.dify.ai')
|
domain = dify_config.HOSTED_FETCH_APP_TEMPLATES_REMOTE_DOMAIN
|
||||||
url = f'{domain}/apps/{app_id}'
|
url = f'{domain}/apps/{app_id}'
|
||||||
response = requests.get(url, timeout=(3, 10))
|
response = requests.get(url, timeout=(3, 10))
|
||||||
if response.status_code != 200:
|
if response.status_code != 200:
|
||||||
|
|
|
@ -2,8 +2,7 @@ import json
|
||||||
import logging
|
import logging
|
||||||
from typing import Optional, Union
|
from typing import Optional, Union
|
||||||
|
|
||||||
from flask import current_app
|
from configs import dify_config
|
||||||
|
|
||||||
from core.tools.entities.api_entities import UserTool, UserToolProvider
|
from core.tools.entities.api_entities import UserTool, UserToolProvider
|
||||||
from core.tools.entities.common_entities import I18nObject
|
from core.tools.entities.common_entities import I18nObject
|
||||||
from core.tools.entities.tool_bundle import ApiToolBundle
|
from core.tools.entities.tool_bundle import ApiToolBundle
|
||||||
|
@ -29,7 +28,7 @@ class ToolTransformService:
|
||||||
"""
|
"""
|
||||||
get tool provider icon url
|
get tool provider icon url
|
||||||
"""
|
"""
|
||||||
url_prefix = (current_app.config.get("CONSOLE_API_URL")
|
url_prefix = (dify_config.CONSOLE_API_URL
|
||||||
+ "/console/api/workspaces/current/tool-provider/")
|
+ "/console/api/workspaces/current/tool-provider/")
|
||||||
|
|
||||||
if provider_type == ToolProviderType.BUILT_IN.value:
|
if provider_type == ToolProviderType.BUILT_IN.value:
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
from flask import current_app
|
|
||||||
from flask_login import current_user
|
from flask_login import current_user
|
||||||
|
|
||||||
|
from configs import dify_config
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from models.account import Tenant, TenantAccountJoin, TenantAccountJoinRole
|
from models.account import Tenant, TenantAccountJoin, TenantAccountJoinRole
|
||||||
from services.account_service import TenantService
|
from services.account_service import TenantService
|
||||||
|
@ -35,7 +35,7 @@ class WorkspaceService:
|
||||||
|
|
||||||
if can_replace_logo and TenantService.has_roles(tenant,
|
if can_replace_logo and TenantService.has_roles(tenant,
|
||||||
[TenantAccountJoinRole.OWNER, TenantAccountJoinRole.ADMIN]):
|
[TenantAccountJoinRole.OWNER, TenantAccountJoinRole.ADMIN]):
|
||||||
base_url = current_app.config.get('FILES_URL')
|
base_url = dify_config.FILES_URL
|
||||||
replace_webapp_logo = f'{base_url}/files/workspaces/{tenant.id}/webapp-logo' if tenant.custom_config_dict.get('replace_webapp_logo') else None
|
replace_webapp_logo = f'{base_url}/files/workspaces/{tenant.id}/webapp-logo' if tenant.custom_config_dict.get('replace_webapp_logo') else None
|
||||||
remove_webapp_brand = tenant.custom_config_dict.get('remove_webapp_brand', False)
|
remove_webapp_brand = tenant.custom_config_dict.get('remove_webapp_brand', False)
|
||||||
|
|
||||||
|
|
|
@ -4,8 +4,8 @@ import time
|
||||||
|
|
||||||
import click
|
import click
|
||||||
from celery import shared_task
|
from celery import shared_task
|
||||||
from flask import current_app
|
|
||||||
|
|
||||||
|
from configs import dify_config
|
||||||
from core.indexing_runner import DocumentIsPausedException, IndexingRunner
|
from core.indexing_runner import DocumentIsPausedException, IndexingRunner
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from models.dataset import Dataset, Document
|
from models.dataset import Dataset, Document
|
||||||
|
@ -32,7 +32,7 @@ def document_indexing_task(dataset_id: str, document_ids: list):
|
||||||
if features.billing.enabled:
|
if features.billing.enabled:
|
||||||
vector_space = features.vector_space
|
vector_space = features.vector_space
|
||||||
count = len(document_ids)
|
count = len(document_ids)
|
||||||
batch_upload_limit = int(current_app.config['BATCH_UPLOAD_LIMIT'])
|
batch_upload_limit = int(dify_config.BATCH_UPLOAD_LIMIT)
|
||||||
if count > batch_upload_limit:
|
if count > batch_upload_limit:
|
||||||
raise ValueError(f"You have reached the batch upload limit of {batch_upload_limit}.")
|
raise ValueError(f"You have reached the batch upload limit of {batch_upload_limit}.")
|
||||||
if 0 < vector_space.limit <= vector_space.size:
|
if 0 < vector_space.limit <= vector_space.size:
|
||||||
|
|
|
@ -4,8 +4,8 @@ import time
|
||||||
|
|
||||||
import click
|
import click
|
||||||
from celery import shared_task
|
from celery import shared_task
|
||||||
from flask import current_app
|
|
||||||
|
|
||||||
|
from configs import dify_config
|
||||||
from core.indexing_runner import DocumentIsPausedException, IndexingRunner
|
from core.indexing_runner import DocumentIsPausedException, IndexingRunner
|
||||||
from core.rag.index_processor.index_processor_factory import IndexProcessorFactory
|
from core.rag.index_processor.index_processor_factory import IndexProcessorFactory
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
|
@ -33,7 +33,7 @@ def duplicate_document_indexing_task(dataset_id: str, document_ids: list):
|
||||||
if features.billing.enabled:
|
if features.billing.enabled:
|
||||||
vector_space = features.vector_space
|
vector_space = features.vector_space
|
||||||
count = len(document_ids)
|
count = len(document_ids)
|
||||||
batch_upload_limit = int(current_app.config['BATCH_UPLOAD_LIMIT'])
|
batch_upload_limit = int(dify_config.BATCH_UPLOAD_LIMIT)
|
||||||
if count > batch_upload_limit:
|
if count > batch_upload_limit:
|
||||||
raise ValueError(f"You have reached the batch upload limit of {batch_upload_limit}.")
|
raise ValueError(f"You have reached the batch upload limit of {batch_upload_limit}.")
|
||||||
if 0 < vector_space.limit <= vector_space.size:
|
if 0 < vector_space.limit <= vector_space.size:
|
||||||
|
|
|
@ -3,8 +3,9 @@ import time
|
||||||
|
|
||||||
import click
|
import click
|
||||||
from celery import shared_task
|
from celery import shared_task
|
||||||
from flask import current_app, render_template
|
from flask import render_template
|
||||||
|
|
||||||
|
from configs import dify_config
|
||||||
from extensions.ext_mail import mail
|
from extensions.ext_mail import mail
|
||||||
|
|
||||||
|
|
||||||
|
@ -29,7 +30,7 @@ def send_invite_member_mail_task(language: str, to: str, token: str, inviter_nam
|
||||||
|
|
||||||
# send invite member mail using different languages
|
# send invite member mail using different languages
|
||||||
try:
|
try:
|
||||||
url = f'{current_app.config.get("CONSOLE_WEB_URL")}/activate?token={token}'
|
url = f'{dify_config.CONSOLE_WEB_URL}/activate?token={token}'
|
||||||
if language == 'zh-Hans':
|
if language == 'zh-Hans':
|
||||||
html_content = render_template('invite_member_mail_template_zh-CN.html',
|
html_content = render_template('invite_member_mail_template_zh-CN.html',
|
||||||
to=to,
|
to=to,
|
||||||
|
|
|
@ -3,8 +3,9 @@ import time
|
||||||
|
|
||||||
import click
|
import click
|
||||||
from celery import shared_task
|
from celery import shared_task
|
||||||
from flask import current_app, render_template
|
from flask import render_template
|
||||||
|
|
||||||
|
from configs import dify_config
|
||||||
from extensions.ext_mail import mail
|
from extensions.ext_mail import mail
|
||||||
|
|
||||||
|
|
||||||
|
@ -24,7 +25,7 @@ def send_reset_password_mail_task(language: str, to: str, token: str):
|
||||||
|
|
||||||
# send reset password mail using different languages
|
# send reset password mail using different languages
|
||||||
try:
|
try:
|
||||||
url = f'{current_app.config.get("CONSOLE_WEB_URL")}/forgot-password?token={token}'
|
url = f'{dify_config.CONSOLE_WEB_URL}/forgot-password?token={token}'
|
||||||
if language == 'zh-Hans':
|
if language == 'zh-Hans':
|
||||||
html_content = render_template('reset_password_mail_template_zh-CN.html',
|
html_content = render_template('reset_password_mail_template_zh-CN.html',
|
||||||
to=to,
|
to=to,
|
||||||
|
|
Loading…
Reference in New Issue
Block a user