| import flask_restful | import flask_restful | ||||
| from flask import current_app, request | |||||
| from flask import request | |||||
| from flask_login import current_user | from flask_login import current_user | ||||
| from flask_restful import Resource, marshal, marshal_with, reqparse | from flask_restful import Resource, marshal, marshal_with, reqparse | ||||
| from werkzeug.exceptions import Forbidden, NotFound | from werkzeug.exceptions import Forbidden, NotFound | ||||
| import services | import services | ||||
| from configs import dify_config | |||||
| from controllers.console import api | from controllers.console import api | ||||
| from controllers.console.apikey import api_key_fields, api_key_list | from controllers.console.apikey import api_key_fields, api_key_list | ||||
| from controllers.console.app.error import ProviderNotInitializeError | from controllers.console.app.error import ProviderNotInitializeError | ||||
| @account_initialization_required | @account_initialization_required | ||||
| def get(self): | def get(self): | ||||
| return { | return { | ||||
| 'api_base_url': (current_app.config['SERVICE_API_URL'] if current_app.config['SERVICE_API_URL'] | |||||
| 'api_base_url': (dify_config.SERVICE_API_URL if dify_config.SERVICE_API_URL | |||||
| else request.host_url.rstrip('/')) + '/v1' | else request.host_url.rstrip('/')) + '/v1' | ||||
| } | } | ||||
| @login_required | @login_required | ||||
| @account_initialization_required | @account_initialization_required | ||||
| def get(self): | def get(self): | ||||
| vector_type = current_app.config['VECTOR_STORE'] | |||||
| vector_type = dify_config.VECTOR_STORE | |||||
| match vector_type: | match vector_type: | ||||
| case VectorType.MILVUS | VectorType.RELYT | VectorType.PGVECTOR | VectorType.TIDB_VECTOR | VectorType.CHROMA | VectorType.TENCENT | VectorType.ORACLE: | case VectorType.MILVUS | VectorType.RELYT | VectorType.PGVECTOR | VectorType.TIDB_VECTOR | VectorType.CHROMA | VectorType.TENCENT | VectorType.ORACLE: | ||||
| return { | return { | 
| from flask import current_app, request | |||||
| from flask import request | |||||
| from flask_login import current_user | from flask_login import current_user | ||||
| from flask_restful import Resource, marshal_with | from flask_restful import Resource, marshal_with | ||||
| import services | import services | ||||
| from configs import dify_config | |||||
| from controllers.console import api | from controllers.console import api | ||||
| from controllers.console.datasets.error import ( | from controllers.console.datasets.error import ( | ||||
| FileTooLargeError, | FileTooLargeError, | ||||
| @account_initialization_required | @account_initialization_required | ||||
| @marshal_with(upload_config_fields) | @marshal_with(upload_config_fields) | ||||
| def get(self): | def get(self): | ||||
| file_size_limit = current_app.config.get("UPLOAD_FILE_SIZE_LIMIT") | |||||
| batch_count_limit = current_app.config.get("UPLOAD_FILE_BATCH_LIMIT") | |||||
| image_file_size_limit = current_app.config.get("UPLOAD_IMAGE_FILE_SIZE_LIMIT") | |||||
| file_size_limit = dify_config.UPLOAD_FILE_SIZE_LIMIT | |||||
| batch_count_limit = dify_config.UPLOAD_FILE_BATCH_LIMIT | |||||
| image_file_size_limit = dify_config.UPLOAD_IMAGE_FILE_SIZE_LIMIT | |||||
| return { | return { | ||||
| 'file_size_limit': file_size_limit, | 'file_size_limit': file_size_limit, | ||||
| 'batch_count_limit': batch_count_limit, | 'batch_count_limit': batch_count_limit, | ||||
| @login_required | @login_required | ||||
| @account_initialization_required | @account_initialization_required | ||||
| def get(self): | def get(self): | ||||
| 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 | ||||
| return {'allowed_extensions': allowed_extensions} | return {'allowed_extensions': allowed_extensions} | ||||
| from flask import current_app | |||||
| from flask_restful import fields, marshal_with | from flask_restful import fields, marshal_with | ||||
| from configs import dify_config | |||||
| from controllers.console import api | from controllers.console import api | ||||
| from controllers.console.app.error import AppUnavailableError | from controllers.console.app.error import AppUnavailableError | ||||
| from controllers.console.explore.wraps import InstalledAppResource | from controllers.console.explore.wraps import InstalledAppResource | ||||
| "transfer_methods": ["remote_url", "local_file"] | "transfer_methods": ["remote_url", "local_file"] | ||||
| }}), | }}), | ||||
| 'system_parameters': { | 'system_parameters': { | ||||
| 'image_file_size_limit': current_app.config.get('UPLOAD_IMAGE_FILE_SIZE_LIMIT') | |||||
| 'image_file_size_limit': dify_config.UPLOAD_IMAGE_FILE_SIZE_LIMIT | |||||
| } | } | ||||
| } | } | ||||
| import os | import os | ||||
| from flask import current_app, session | |||||
| from flask import session | |||||
| from flask_restful import Resource, reqparse | from flask_restful import Resource, reqparse | ||||
| from configs import dify_config | |||||
| from libs.helper import str_len | from libs.helper import str_len | ||||
| from models.model import DifySetup | from models.model import DifySetup | ||||
| from services.account_service import TenantService | from services.account_service import TenantService | ||||
| return {'result': 'success'}, 201 | return {'result': 'success'}, 201 | ||||
| def get_init_validate_status(): | def get_init_validate_status(): | ||||
| if current_app.config['EDITION'] == 'SELF_HOSTED': | |||||
| if dify_config.EDITION == 'SELF_HOSTED': | |||||
| if os.environ.get('INIT_PASSWORD'): | if os.environ.get('INIT_PASSWORD'): | ||||
| return session.get('is_init_validated') or DifySetup.query.first() | return session.get('is_init_validated') or DifySetup.query.first() | ||||
| from functools import wraps | from functools import wraps | ||||
| from flask import current_app, request | |||||
| from flask import request | |||||
| from flask_restful import Resource, reqparse | from flask_restful import Resource, reqparse | ||||
| from configs import dify_config | |||||
| from libs.helper import email, get_remote_ip, str_len | from libs.helper import email, get_remote_ip, str_len | ||||
| from libs.password import valid_password | from libs.password import valid_password | ||||
| from models.model import DifySetup | from models.model import DifySetup | ||||
| class SetupApi(Resource): | class SetupApi(Resource): | ||||
| def get(self): | def get(self): | ||||
| if current_app.config['EDITION'] == 'SELF_HOSTED': | |||||
| if dify_config.EDITION == 'SELF_HOSTED': | |||||
| setup_status = get_setup_status() | setup_status = get_setup_status() | ||||
| if setup_status: | if setup_status: | ||||
| return { | return { | ||||
| def get_setup_status(): | def get_setup_status(): | ||||
| if current_app.config['EDITION'] == 'SELF_HOSTED': | |||||
| if dify_config.EDITION == 'SELF_HOSTED': | |||||
| return DifySetup.query.first() | return DifySetup.query.first() | ||||
| else: | else: | ||||
| return True | return True | 
| import logging | import logging | ||||
| import requests | import requests | ||||
| from flask import current_app | |||||
| from flask_restful import Resource, reqparse | from flask_restful import Resource, reqparse | ||||
| from configs import dify_config | |||||
| from . import api | from . import api | ||||
| parser = reqparse.RequestParser() | parser = reqparse.RequestParser() | ||||
| parser.add_argument('current_version', type=str, required=True, location='args') | parser.add_argument('current_version', type=str, required=True, location='args') | ||||
| args = parser.parse_args() | args = parser.parse_args() | ||||
| check_update_url = current_app.config['CHECK_UPDATE_URL'] | |||||
| check_update_url = dify_config.CHECK_UPDATE_URL | |||||
| result = { | result = { | ||||
| 'version': current_app.config['CURRENT_VERSION'], | |||||
| 'version': dify_config.CURRENT_VERSION, | |||||
| 'release_date': '', | 'release_date': '', | ||||
| 'release_notes': '', | 'release_notes': '', | ||||
| 'can_auto_update': False, | 'can_auto_update': False, | ||||
| 'features': { | 'features': { | ||||
| 'can_replace_logo': current_app.config['CAN_REPLACE_LOGO'], | |||||
| 'model_load_balancing_enabled': current_app.config['MODEL_LB_ENABLED'] | |||||
| 'can_replace_logo': dify_config.CAN_REPLACE_LOGO, | |||||
| 'model_load_balancing_enabled': dify_config.MODEL_LB_ENABLED | |||||
| } | } | ||||
| } | } | ||||
| import datetime | import datetime | ||||
| import pytz | import pytz | ||||
| from flask import current_app, request | |||||
| from flask import request | |||||
| from flask_login import current_user | from flask_login import current_user | ||||
| from flask_restful import Resource, fields, marshal_with, reqparse | from flask_restful import Resource, fields, marshal_with, reqparse | ||||
| from configs import dify_config | |||||
| from constants.languages import supported_language | from constants.languages import supported_language | ||||
| from controllers.console import api | from controllers.console import api | ||||
| from controllers.console.setup import setup_required | from controllers.console.setup import setup_required | ||||
| parser = reqparse.RequestParser() | parser = reqparse.RequestParser() | ||||
| if current_app.config['EDITION'] == 'CLOUD': | |||||
| if dify_config.EDITION == 'CLOUD': | |||||
| parser.add_argument('invitation_code', type=str, location='json') | parser.add_argument('invitation_code', type=str, location='json') | ||||
| parser.add_argument( | parser.add_argument( | ||||
| required=True, location='json') | required=True, location='json') | ||||
| args = parser.parse_args() | args = parser.parse_args() | ||||
| if current_app.config['EDITION'] == 'CLOUD': | |||||
| if dify_config.EDITION == 'CLOUD': | |||||
| if not args['invitation_code']: | if not args['invitation_code']: | ||||
| raise ValueError('invitation_code is required') | raise ValueError('invitation_code is required') | ||||
| from flask import current_app | |||||
| from flask_login import current_user | from flask_login import current_user | ||||
| from flask_restful import Resource, abort, marshal_with, reqparse | from flask_restful import Resource, abort, marshal_with, reqparse | ||||
| import services | import services | ||||
| from configs import dify_config | |||||
| from controllers.console import api | from controllers.console import api | ||||
| from controllers.console.setup import setup_required | from controllers.console.setup import setup_required | ||||
| from controllers.console.wraps import account_initialization_required, cloud_edition_billing_resource_check | from controllers.console.wraps import account_initialization_required, cloud_edition_billing_resource_check | ||||
| inviter = current_user | inviter = current_user | ||||
| invitation_results = [] | invitation_results = [] | ||||
| console_web_url = current_app.config.get("CONSOLE_WEB_URL") | |||||
| console_web_url = dify_config.CONSOLE_WEB_URL | |||||
| for invitee_email in invitee_emails: | for invitee_email in invitee_emails: | ||||
| try: | try: | ||||
| token = RegisterService.invite_new_member(inviter.current_tenant, invitee_email, interface_language, role=invitee_role, inviter=inviter) | token = RegisterService.invite_new_member(inviter.current_tenant, invitee_email, interface_language, role=invitee_role, inviter=inviter) | 
| import io | import io | ||||
| from flask import current_app, send_file | |||||
| from flask import send_file | |||||
| from flask_login import current_user | from flask_login import current_user | ||||
| from flask_restful import Resource, reqparse | from flask_restful import Resource, reqparse | ||||
| from werkzeug.exceptions import Forbidden | from werkzeug.exceptions import Forbidden | ||||
| from configs import dify_config | |||||
| from controllers.console import api | from controllers.console import api | ||||
| from controllers.console.setup import setup_required | from controllers.console.setup import setup_required | ||||
| from controllers.console.wraps import account_initialization_required | from controllers.console.wraps import account_initialization_required | ||||
| @setup_required | @setup_required | ||||
| def get(self, provider): | def get(self, provider): | ||||
| icon_bytes, mimetype = BuiltinToolManageService.get_builtin_tool_provider_icon(provider) | icon_bytes, mimetype = BuiltinToolManageService.get_builtin_tool_provider_icon(provider) | ||||
| icon_cache_max_age = current_app.config.get('TOOL_ICON_CACHE_MAX_AGE') | |||||
| icon_cache_max_age = dify_config.TOOL_ICON_CACHE_MAX_AGE | |||||
| return send_file(io.BytesIO(icon_bytes), mimetype=mimetype, max_age=icon_cache_max_age) | return send_file(io.BytesIO(icon_bytes), mimetype=mimetype, max_age=icon_cache_max_age) | ||||
| class ToolApiProviderAddApi(Resource): | class ToolApiProviderAddApi(Resource): | 
| import json | import json | ||||
| from functools import wraps | from functools import wraps | ||||
| from flask import abort, current_app, request | |||||
| from flask import abort, request | |||||
| from flask_login import current_user | from flask_login import current_user | ||||
| from configs import dify_config | |||||
| from controllers.console.workspace.error import AccountNotInitializedError | from controllers.console.workspace.error import AccountNotInitializedError | ||||
| from services.feature_service import FeatureService | from services.feature_service import FeatureService | ||||
| from services.operation_service import OperationService | from services.operation_service import OperationService | ||||
| def only_edition_cloud(view): | def only_edition_cloud(view): | ||||
| @wraps(view) | @wraps(view) | ||||
| def decorated(*args, **kwargs): | def decorated(*args, **kwargs): | ||||
| if current_app.config['EDITION'] != 'CLOUD': | |||||
| if dify_config.EDITION != 'CLOUD': | |||||
| abort(404) | abort(404) | ||||
| return view(*args, **kwargs) | return view(*args, **kwargs) | ||||
| def only_edition_self_hosted(view): | def only_edition_self_hosted(view): | ||||
| @wraps(view) | @wraps(view) | ||||
| def decorated(*args, **kwargs): | def decorated(*args, **kwargs): | ||||
| if current_app.config['EDITION'] != 'SELF_HOSTED': | |||||
| if dify_config.EDITION != 'SELF_HOSTED': | |||||
| abort(404) | abort(404) | ||||
| return view(*args, **kwargs) | return view(*args, **kwargs) |