Commit 46f30b96 authored by takatost's avatar takatost

site init move to event handler

parent 432e9882
import json import json
import logging
from datetime import datetime from datetime import datetime
from typing import cast from typing import cast
...@@ -8,29 +7,24 @@ from flask_login import current_user ...@@ -8,29 +7,24 @@ from flask_login import current_user
from flask_restful import Resource, abort, inputs, marshal_with, reqparse from flask_restful import Resource, abort, inputs, marshal_with, reqparse
from werkzeug.exceptions import Forbidden from werkzeug.exceptions import Forbidden
from constants.languages import languages
from constants.model_template import default_app_templates from constants.model_template import default_app_templates
from controllers.console import api from controllers.console import api
from controllers.console.app.error import ProviderNotInitializeError
from controllers.console.app.wraps import get_app_model from controllers.console.app.wraps import get_app_model
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
from core.errors.error import LLMBadRequestError, ProviderTokenNotInitError from core.errors.error import ProviderTokenNotInitError
from core.model_manager import ModelManager from core.model_manager import ModelManager
from core.model_runtime.entities.model_entities import ModelType, ModelPropertyKey from core.model_runtime.entities.model_entities import ModelType, ModelPropertyKey
from core.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel from core.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel
from core.provider_manager import ProviderManager
from events.app_event import app_was_created, app_was_deleted from events.app_event import app_was_created, app_was_deleted
from extensions.ext_database import db from extensions.ext_database import db
from fields.app_fields import ( from fields.app_fields import (
app_detail_fields, app_detail_fields,
app_detail_fields_with_site, app_detail_fields_with_site,
app_pagination_fields, app_pagination_fields,
template_list_fields,
) )
from libs.login import login_required from libs.login import login_required
from models.model import App, AppModelConfig, Site, AppMode from models.model import App, AppModelConfig, AppMode
from services.app_model_config_service import AppModelConfigService
from services.workflow_service import WorkflowService from services.workflow_service import WorkflowService
...@@ -99,52 +93,6 @@ class AppListApi(Resource): ...@@ -99,52 +93,6 @@ class AppListApi(Resource):
if not current_user.is_admin_or_owner: if not current_user.is_admin_or_owner:
raise Forbidden() raise Forbidden()
# TODO: MOVE TO IMPORT API
if args['model_config'] is not None:
# validate config
model_config_dict = args['model_config']
# Get provider configurations
provider_manager = ProviderManager()
provider_configurations = provider_manager.get_configurations(current_user.current_tenant_id)
# get available models from provider_configurations
available_models = provider_configurations.get_models(
model_type=ModelType.LLM,
only_active=True
)
# check if model is available
available_models_names = [f'{model.provider.provider}.{model.model}' for model in available_models]
provider_model = f"{model_config_dict['model']['provider']}.{model_config_dict['model']['name']}"
if provider_model not in available_models_names:
if not default_model_entity:
raise ProviderNotInitializeError(
"No Default System Reasoning Model available. Please configure "
"in the Settings -> Model Provider.")
else:
model_config_dict["model"]["provider"] = default_model_entity.provider
model_config_dict["model"]["name"] = default_model_entity.model
model_configuration = AppModelConfigService.validate_configuration(
tenant_id=current_user.current_tenant_id,
account=current_user,
config=model_config_dict,
app_mode=args['mode']
)
app = App(
enable_site=True,
enable_api=True,
is_demo=False,
api_rpm=0,
api_rph=0,
status='normal'
)
app_model_config = AppModelConfig()
app_model_config = app_model_config.from_model_config_dict(model_configuration)
else:
if 'mode' not in args or args['mode'] is None: if 'mode' not in args or args['mode'] is None:
abort(400, message="mode is required") abort(400, message="mode is required")
...@@ -186,8 +134,6 @@ class AppListApi(Resource): ...@@ -186,8 +134,6 @@ class AppListApi(Resource):
default_model_config['model'] = json.dumps(default_model_dict) default_model_config['model'] = json.dumps(default_model_dict)
app = App(**app_template['app']) app = App(**app_template['app'])
app_model_config = AppModelConfig(**default_model_config)
app.name = args['name'] app.name = args['name']
app.mode = args['mode'] app.mode = args['mode']
app.icon = args['icon'] app.icon = args['icon']
...@@ -197,26 +143,14 @@ class AppListApi(Resource): ...@@ -197,26 +143,14 @@ class AppListApi(Resource):
db.session.add(app) db.session.add(app)
db.session.flush() db.session.flush()
app_model_config = AppModelConfig(**default_model_config)
app_model_config.app_id = app.id app_model_config.app_id = app.id
db.session.add(app_model_config) db.session.add(app_model_config)
db.session.flush() db.session.flush()
app.app_model_config_id = app_model_config.id app.app_model_config_id = app_model_config.id
account = current_user app_was_created.send(app, account=current_user)
site = Site(
app_id=app.id,
title=app.name,
default_language=account.interface_language,
customize_token_strategy='not_allow',
code=Site.generate_code(16)
)
db.session.add(site)
db.session.commit()
app_was_created.send(app)
return app, 201 return app, 201
...@@ -259,21 +193,16 @@ class AppImportApi(Resource): ...@@ -259,21 +193,16 @@ class AppImportApi(Resource):
"when mode is advanced-chat or workflow") "when mode is advanced-chat or workflow")
app = App( app = App(
tenant_id=current_user.current_tenant_id,
mode=app_data.get('mode'),
name=args.get("name") if args.get("name") else app_data.get('name'),
icon=args.get("icon") if args.get("icon") else app_data.get('icon'),
icon_background=args.get("icon_background") if args.get("icon_background") \
else app_data.get('icon_background'),
enable_site=True, enable_site=True,
enable_api=True, enable_api=True
is_demo=False,
api_rpm=0,
api_rph=0,
status='normal'
) )
app.tenant_id = current_user.current_tenant_id
app.mode = app_data.get('mode')
app.name = args.get("name") if args.get("name") else app_data.get('name')
app.icon = args.get("icon") if args.get("icon") else app_data.get('icon')
app.icon_background = args.get("icon_background") if args.get("icon_background") \
else app_data.get('icon_background')
db.session.add(app) db.session.add(app)
db.session.commit() db.session.commit()
...@@ -292,20 +221,7 @@ class AppImportApi(Resource): ...@@ -292,20 +221,7 @@ class AppImportApi(Resource):
app.app_model_config_id = app_model_config.id app.app_model_config_id = app_model_config.id
account = current_user app_was_created.send(app, account=current_user)
site = Site(
app_id=app.id,
title=app.name,
default_language=account.interface_language,
customize_token_strategy='not_allow',
code=Site.generate_code(16)
)
db.session.add(site)
db.session.commit()
app_was_created.send(app)
return app, 201 return app, 201
......
...@@ -2,6 +2,7 @@ from .clean_when_dataset_deleted import handle ...@@ -2,6 +2,7 @@ from .clean_when_dataset_deleted import handle
from .clean_when_document_deleted import handle from .clean_when_document_deleted import handle
from .create_document_index import handle from .create_document_index import handle
from .create_installed_app_when_app_created import handle from .create_installed_app_when_app_created import handle
from .create_site_record_when_app_created import handle
from .deduct_quota_when_messaeg_created import handle from .deduct_quota_when_messaeg_created import handle
from .delete_installed_app_when_app_deleted import handle from .delete_installed_app_when_app_deleted import handle
from .generate_conversation_name_when_first_message_created import handle from .generate_conversation_name_when_first_message_created import handle
......
from events.app_event import app_was_created
from extensions.ext_database import db
from models.model import Site
@app_was_created.connect
def handle(sender, **kwargs):
"""Create site record when an app is created."""
app = sender
account = kwargs.get('account')
site = Site(
app_id=app.id,
title=app.name,
default_language=account.interface_language,
customize_token_strategy='not_allow',
code=Site.generate_code(16)
)
db.session.add(site)
db.session.commit()
...@@ -93,18 +93,7 @@ class WorkflowConverter: ...@@ -93,18 +93,7 @@ class WorkflowConverter:
new_app.app_model_config_id = new_app_model_config.id new_app.app_model_config_id = new_app_model_config.id
db.session.commit() db.session.commit()
site = Site( app_was_created.send(new_app, account=account)
app_id=new_app.id,
title=new_app.name,
default_language=account.interface_language,
customize_token_strategy='not_allow',
code=Site.generate_code(16)
)
db.session.add(site)
db.session.commit()
app_was_created.send(new_app)
return new_app return new_app
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment