Bladeren bron

refactor(api): switch to dify_config in controllers/console (#6485)

tags/0.6.15
Shoya SHIRAKI 1 jaar geleden
bovenliggende
commit
c57b3931d5
No account linked to committer's email address

+ 4
- 3
api/controllers/console/datasets/datasets.py Bestand weergeven

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 {

+ 6
- 5
api/controllers/console/datasets/file.py Bestand weergeven

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}



+ 2
- 2
api/controllers/console/explore/parameter.py Bestand weergeven



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
} }
} }



+ 3
- 2
api/controllers/console/init_validate.py Bestand weergeven

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()

+ 4
- 3
api/controllers/console/setup.py Bestand weergeven

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

+ 6
- 5
api/controllers/console/version.py Bestand weergeven

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
} }
} }



+ 4
- 3
api/controllers/console/workspace/account.py Bestand weergeven

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')



+ 2
- 2
api/controllers/console/workspace/members.py Bestand weergeven

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)

+ 3
- 2
api/controllers/console/workspace/tool_providers.py Bestand weergeven

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):

+ 4
- 3
api/controllers/console/wraps.py Bestand weergeven

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)

Laden…
Annuleren
Opslaan