| 
									
										
										
										
											2023-05-15 08:51:32 +08:00
										 |  |  | import json | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-06 13:21:13 +08:00
										 |  |  | from flask_login import current_user | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  | from flask_restful import Resource, inputs, marshal_with, reqparse | 
					
						
							|  |  |  | from werkzeug.exceptions import Forbidden, BadRequest | 
					
						
							| 
									
										
										
										
											2024-02-06 13:21:13 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-05-15 08:51:32 +08:00
										 |  |  | from controllers.console import api | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  | from controllers.console.app.wraps import get_app_model | 
					
						
							| 
									
										
										
										
											2023-05-15 08:51:32 +08:00
										 |  |  | from controllers.console.setup import setup_required | 
					
						
							| 
									
										
										
										
											2023-12-05 16:53:55 +08:00
										 |  |  | from controllers.console.wraps import account_initialization_required, cloud_edition_billing_resource_check | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  | from core.agent.entities import AgentToolEntity | 
					
						
							| 
									
										
										
										
											2023-05-15 08:51:32 +08:00
										 |  |  | from extensions.ext_database import db | 
					
						
							| 
									
										
										
										
											2024-02-06 13:21:13 +08:00
										 |  |  | from fields.app_fields import ( | 
					
						
							|  |  |  |     app_detail_fields, | 
					
						
							|  |  |  |     app_detail_fields_with_site, | 
					
						
							|  |  |  |     app_pagination_fields, | 
					
						
							|  |  |  | ) | 
					
						
							| 
									
										
										
										
											2024-01-12 12:34:01 +08:00
										 |  |  | from libs.login import login_required | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  | from services.app_service import AppService | 
					
						
							|  |  |  | from models.model import App, AppModelConfig, AppMode | 
					
						
							| 
									
										
										
										
											2024-03-08 20:31:13 +08:00
										 |  |  | from core.tools.utils.configuration import ToolParameterConfigurationManager | 
					
						
							|  |  |  | from core.tools.tool_manager import ToolManager | 
					
						
							| 
									
										
										
										
											2024-02-01 18:11:57 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | ALLOW_CREATE_APP_MODES = ['chat', 'agent-chat', 'advanced-chat', 'workflow', 'completion'] | 
					
						
							| 
									
										
										
										
											2023-05-15 08:51:32 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class AppListApi(Resource): | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @setup_required | 
					
						
							|  |  |  |     @login_required | 
					
						
							|  |  |  |     @account_initialization_required | 
					
						
							|  |  |  |     @marshal_with(app_pagination_fields) | 
					
						
							|  |  |  |     def get(self): | 
					
						
							|  |  |  |         """Get app list""" | 
					
						
							|  |  |  |         parser = reqparse.RequestParser() | 
					
						
							|  |  |  |         parser.add_argument('page', type=inputs.int_range(1, 99999), required=False, default=1, location='args') | 
					
						
							|  |  |  |         parser.add_argument('limit', type=inputs.int_range(1, 100), required=False, default=20, location='args') | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  |         parser.add_argument('mode', type=str, choices=['chat', 'workflow', 'agent-chat', 'channel', 'all'], default='all', location='args', required=False) | 
					
						
							| 
									
										
										
										
											2024-01-23 19:58:23 +08:00
										 |  |  |         parser.add_argument('name', type=str, location='args', required=False) | 
					
						
							| 
									
										
										
										
											2023-05-15 08:51:32 +08:00
										 |  |  |         args = parser.parse_args() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  |         # get app list | 
					
						
							|  |  |  |         app_service = AppService() | 
					
						
							|  |  |  |         app_pagination = app_service.get_paginate_apps(current_user.current_tenant_id, args) | 
					
						
							| 
									
										
										
										
											2024-01-23 19:58:23 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  |         return app_pagination | 
					
						
							| 
									
										
										
										
											2023-05-15 08:51:32 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     @setup_required | 
					
						
							|  |  |  |     @login_required | 
					
						
							|  |  |  |     @account_initialization_required | 
					
						
							|  |  |  |     @marshal_with(app_detail_fields) | 
					
						
							| 
									
										
										
										
											2023-12-05 16:53:55 +08:00
										 |  |  |     @cloud_edition_billing_resource_check('apps') | 
					
						
							| 
									
										
										
										
											2023-05-15 08:51:32 +08:00
										 |  |  |     def post(self): | 
					
						
							|  |  |  |         """Create app""" | 
					
						
							|  |  |  |         parser = reqparse.RequestParser() | 
					
						
							|  |  |  |         parser.add_argument('name', type=str, required=True, location='json') | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  |         parser.add_argument('description', type=str, location='json') | 
					
						
							|  |  |  |         parser.add_argument('mode', type=str, choices=ALLOW_CREATE_APP_MODES, location='json') | 
					
						
							| 
									
										
										
										
											2023-05-15 08:51:32 +08:00
										 |  |  |         parser.add_argument('icon', type=str, location='json') | 
					
						
							|  |  |  |         parser.add_argument('icon_background', type=str, location='json') | 
					
						
							|  |  |  |         args = parser.parse_args() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # The role of the current user in the ta table must be admin or owner | 
					
						
							| 
									
										
										
										
											2024-01-26 12:47:42 +08:00
										 |  |  |         if not current_user.is_admin_or_owner: | 
					
						
							| 
									
										
										
										
											2023-05-15 08:51:32 +08:00
										 |  |  |             raise Forbidden() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  |         if 'mode' not in args or args['mode'] is None: | 
					
						
							|  |  |  |             raise BadRequest("mode is required") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         app_service = AppService() | 
					
						
							|  |  |  |         app = app_service.create_app(current_user.current_tenant_id, args, current_user) | 
					
						
							| 
									
										
										
										
											2023-05-15 08:51:32 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |         return app, 201 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  | class AppImportApi(Resource): | 
					
						
							| 
									
										
										
										
											2023-05-15 08:51:32 +08:00
										 |  |  |     @setup_required | 
					
						
							|  |  |  |     @login_required | 
					
						
							|  |  |  |     @account_initialization_required | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  |     @marshal_with(app_detail_fields_with_site) | 
					
						
							|  |  |  |     @cloud_edition_billing_resource_check('apps') | 
					
						
							|  |  |  |     def post(self): | 
					
						
							|  |  |  |         """Import app""" | 
					
						
							|  |  |  |         # The role of the current user in the ta table must be admin or owner | 
					
						
							|  |  |  |         if not current_user.is_admin_or_owner: | 
					
						
							|  |  |  |             raise Forbidden() | 
					
						
							| 
									
										
										
										
											2023-05-15 08:51:32 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  |         parser = reqparse.RequestParser() | 
					
						
							|  |  |  |         parser.add_argument('data', type=str, required=True, nullable=False, location='json') | 
					
						
							|  |  |  |         parser.add_argument('name', type=str, location='json') | 
					
						
							|  |  |  |         parser.add_argument('description', type=str, location='json') | 
					
						
							|  |  |  |         parser.add_argument('icon', type=str, location='json') | 
					
						
							|  |  |  |         parser.add_argument('icon_background', type=str, location='json') | 
					
						
							|  |  |  |         args = parser.parse_args() | 
					
						
							| 
									
										
										
										
											2023-06-13 10:06:49 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  |         app_service = AppService() | 
					
						
							|  |  |  |         app = app_service.import_app(current_user.current_tenant_id, args['data'], args, current_user) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return app, 201 | 
					
						
							| 
									
										
										
										
											2023-05-15 08:51:32 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class AppApi(Resource): | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @setup_required | 
					
						
							|  |  |  |     @login_required | 
					
						
							|  |  |  |     @account_initialization_required | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  |     @get_app_model | 
					
						
							| 
									
										
										
										
											2023-05-15 08:51:32 +08:00
										 |  |  |     @marshal_with(app_detail_fields_with_site) | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  |     def get(self, app_model): | 
					
						
							| 
									
										
										
										
											2023-05-15 08:51:32 +08:00
										 |  |  |         """Get app detail""" | 
					
						
							| 
									
										
										
										
											2024-03-08 20:31:13 +08:00
										 |  |  |         # get original app model config | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  |         if app_model.mode == AppMode.AGENT_CHAT.value or app_model.is_agent: | 
					
						
							|  |  |  |             model_config: AppModelConfig = app_model.app_model_config | 
					
						
							|  |  |  |             agent_mode = model_config.agent_mode_dict | 
					
						
							|  |  |  |             # decrypt agent tool parameters if it's secret-input | 
					
						
							|  |  |  |             for tool in agent_mode.get('tools') or []: | 
					
						
							|  |  |  |                 if not isinstance(tool, dict) or len(tool.keys()) <= 3: | 
					
						
							|  |  |  |                     continue | 
					
						
							|  |  |  |                 agent_tool_entity = AgentToolEntity(**tool) | 
					
						
							|  |  |  |                 # get tool | 
					
						
							|  |  |  |                 try: | 
					
						
							|  |  |  |                     tool_runtime = ToolManager.get_agent_tool_runtime( | 
					
						
							|  |  |  |                         tenant_id=current_user.current_tenant_id, | 
					
						
							|  |  |  |                         agent_tool=agent_tool_entity, | 
					
						
							|  |  |  |                     ) | 
					
						
							|  |  |  |                     manager = ToolParameterConfigurationManager( | 
					
						
							|  |  |  |                         tenant_id=current_user.current_tenant_id, | 
					
						
							|  |  |  |                         tool_runtime=tool_runtime, | 
					
						
							|  |  |  |                         provider_name=agent_tool_entity.provider_id, | 
					
						
							|  |  |  |                         provider_type=agent_tool_entity.provider_type, | 
					
						
							|  |  |  |                     ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                     # get decrypted parameters | 
					
						
							|  |  |  |                     if agent_tool_entity.tool_parameters: | 
					
						
							|  |  |  |                         parameters = manager.decrypt_tool_parameters(agent_tool_entity.tool_parameters or {}) | 
					
						
							|  |  |  |                         masked_parameter = manager.mask_tool_parameters(parameters or {}) | 
					
						
							|  |  |  |                     else: | 
					
						
							|  |  |  |                         masked_parameter = {} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                     # override tool parameters | 
					
						
							|  |  |  |                     tool['tool_parameters'] = masked_parameter | 
					
						
							|  |  |  |                 except Exception as e: | 
					
						
							|  |  |  |                     pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             # override agent mode | 
					
						
							|  |  |  |             model_config.agent_mode = json.dumps(agent_mode) | 
					
						
							|  |  |  |             db.session.commit() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return app_model | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @setup_required | 
					
						
							|  |  |  |     @login_required | 
					
						
							|  |  |  |     @account_initialization_required | 
					
						
							|  |  |  |     @get_app_model | 
					
						
							|  |  |  |     @marshal_with(app_detail_fields_with_site) | 
					
						
							|  |  |  |     def put(self, app_model): | 
					
						
							|  |  |  |         """Update app""" | 
					
						
							|  |  |  |         parser = reqparse.RequestParser() | 
					
						
							|  |  |  |         parser.add_argument('name', type=str, required=True, nullable=False, location='json') | 
					
						
							|  |  |  |         parser.add_argument('description', type=str, location='json') | 
					
						
							|  |  |  |         parser.add_argument('icon', type=str, location='json') | 
					
						
							|  |  |  |         parser.add_argument('icon_background', type=str, location='json') | 
					
						
							|  |  |  |         args = parser.parse_args() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         app_service = AppService() | 
					
						
							|  |  |  |         app_model = app_service.update_app(app_model, args) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return app_model | 
					
						
							| 
									
										
										
										
											2023-05-15 08:51:32 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     @setup_required | 
					
						
							|  |  |  |     @login_required | 
					
						
							|  |  |  |     @account_initialization_required | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  |     @get_app_model | 
					
						
							|  |  |  |     def delete(self, app_model): | 
					
						
							| 
									
										
										
										
											2023-05-15 08:51:32 +08:00
										 |  |  |         """Delete app""" | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  |         if not current_user.is_admin_or_owner: | 
					
						
							|  |  |  |             raise Forbidden() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         app_service = AppService() | 
					
						
							|  |  |  |         app_service.delete_app(app_model) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return {'result': 'success'}, 204 | 
					
						
							| 
									
										
										
										
											2023-08-12 14:18:21 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | class AppCopyApi(Resource): | 
					
						
							|  |  |  |     @setup_required | 
					
						
							|  |  |  |     @login_required | 
					
						
							|  |  |  |     @account_initialization_required | 
					
						
							|  |  |  |     @get_app_model | 
					
						
							|  |  |  |     @marshal_with(app_detail_fields_with_site) | 
					
						
							|  |  |  |     def post(self, app_model): | 
					
						
							|  |  |  |         """Copy app""" | 
					
						
							|  |  |  |         # The role of the current user in the ta table must be admin or owner | 
					
						
							| 
									
										
										
										
											2024-01-26 12:47:42 +08:00
										 |  |  |         if not current_user.is_admin_or_owner: | 
					
						
							| 
									
										
										
										
											2023-08-12 14:18:21 +08:00
										 |  |  |             raise Forbidden() | 
					
						
							| 
									
										
										
										
											2023-08-21 13:57:18 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  |         parser = reqparse.RequestParser() | 
					
						
							|  |  |  |         parser.add_argument('name', type=str, location='json') | 
					
						
							|  |  |  |         parser.add_argument('description', type=str, location='json') | 
					
						
							|  |  |  |         parser.add_argument('icon', type=str, location='json') | 
					
						
							|  |  |  |         parser.add_argument('icon_background', type=str, location='json') | 
					
						
							|  |  |  |         args = parser.parse_args() | 
					
						
							| 
									
										
										
										
											2023-05-15 08:51:32 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  |         app_service = AppService() | 
					
						
							|  |  |  |         data = app_service.export_app(app_model) | 
					
						
							|  |  |  |         app = app_service.import_app(current_user.current_tenant_id, data, args, current_user) | 
					
						
							| 
									
										
										
										
											2023-05-15 08:51:32 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  |         return app, 201 | 
					
						
							| 
									
										
										
										
											2023-05-15 08:51:32 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  | class AppExportApi(Resource): | 
					
						
							|  |  |  |     @setup_required | 
					
						
							|  |  |  |     @login_required | 
					
						
							|  |  |  |     @account_initialization_required | 
					
						
							|  |  |  |     @get_app_model | 
					
						
							|  |  |  |     def get(self, app_model): | 
					
						
							|  |  |  |         """Export app""" | 
					
						
							|  |  |  |         app_service = AppService() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return { | 
					
						
							|  |  |  |             "data": app_service.export_app(app_model) | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2023-05-15 08:51:32 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class AppNameApi(Resource): | 
					
						
							|  |  |  |     @setup_required | 
					
						
							|  |  |  |     @login_required | 
					
						
							|  |  |  |     @account_initialization_required | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  |     @get_app_model | 
					
						
							| 
									
										
										
										
											2023-05-15 08:51:32 +08:00
										 |  |  |     @marshal_with(app_detail_fields) | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  |     def post(self, app_model): | 
					
						
							| 
									
										
										
										
											2023-05-15 08:51:32 +08:00
										 |  |  |         parser = reqparse.RequestParser() | 
					
						
							|  |  |  |         parser.add_argument('name', type=str, required=True, location='json') | 
					
						
							|  |  |  |         args = parser.parse_args() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  |         app_service = AppService() | 
					
						
							|  |  |  |         app_model = app_service.update_app_name(app_model, args.get('name')) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return app_model | 
					
						
							| 
									
										
										
										
											2023-05-15 08:51:32 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class AppIconApi(Resource): | 
					
						
							|  |  |  |     @setup_required | 
					
						
							|  |  |  |     @login_required | 
					
						
							|  |  |  |     @account_initialization_required | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  |     @get_app_model | 
					
						
							| 
									
										
										
										
											2023-05-15 08:51:32 +08:00
										 |  |  |     @marshal_with(app_detail_fields) | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  |     def post(self, app_model): | 
					
						
							| 
									
										
										
										
											2023-05-15 08:51:32 +08:00
										 |  |  |         parser = reqparse.RequestParser() | 
					
						
							|  |  |  |         parser.add_argument('icon', type=str, location='json') | 
					
						
							|  |  |  |         parser.add_argument('icon_background', type=str, location='json') | 
					
						
							|  |  |  |         args = parser.parse_args() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  |         app_service = AppService() | 
					
						
							|  |  |  |         app_model = app_service.update_app_icon(app_model, args.get('icon'), args.get('icon_background')) | 
					
						
							| 
									
										
										
										
											2023-05-15 08:51:32 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  |         return app_model | 
					
						
							| 
									
										
										
										
											2023-05-15 08:51:32 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class AppSiteStatus(Resource): | 
					
						
							|  |  |  |     @setup_required | 
					
						
							|  |  |  |     @login_required | 
					
						
							|  |  |  |     @account_initialization_required | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  |     @get_app_model | 
					
						
							| 
									
										
										
										
											2023-05-15 08:51:32 +08:00
										 |  |  |     @marshal_with(app_detail_fields) | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  |     def post(self, app_model): | 
					
						
							| 
									
										
										
										
											2023-05-15 08:51:32 +08:00
										 |  |  |         parser = reqparse.RequestParser() | 
					
						
							|  |  |  |         parser.add_argument('enable_site', type=bool, required=True, location='json') | 
					
						
							|  |  |  |         args = parser.parse_args() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  |         app_service = AppService() | 
					
						
							|  |  |  |         app_model = app_service.update_app_site_status(app_model, args.get('enable_site')) | 
					
						
							| 
									
										
										
										
											2023-05-15 08:51:32 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  |         return app_model | 
					
						
							| 
									
										
										
										
											2023-05-15 08:51:32 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class AppApiStatus(Resource): | 
					
						
							|  |  |  |     @setup_required | 
					
						
							|  |  |  |     @login_required | 
					
						
							|  |  |  |     @account_initialization_required | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  |     @get_app_model | 
					
						
							| 
									
										
										
										
											2023-05-15 08:51:32 +08:00
										 |  |  |     @marshal_with(app_detail_fields) | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  |     def post(self, app_model): | 
					
						
							| 
									
										
										
										
											2023-05-15 08:51:32 +08:00
										 |  |  |         parser = reqparse.RequestParser() | 
					
						
							|  |  |  |         parser.add_argument('enable_api', type=bool, required=True, location='json') | 
					
						
							|  |  |  |         args = parser.parse_args() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  |         app_service = AppService() | 
					
						
							|  |  |  |         app_model = app_service.update_app_api_status(app_model, args.get('enable_api')) | 
					
						
							| 
									
										
										
										
											2023-05-15 08:51:32 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  |         return app_model | 
					
						
							| 
									
										
										
										
											2023-05-15 08:51:32 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | api.add_resource(AppListApi, '/apps') | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  | api.add_resource(AppImportApi, '/apps/import') | 
					
						
							| 
									
										
										
										
											2023-05-15 08:51:32 +08:00
										 |  |  | api.add_resource(AppApi, '/apps/<uuid:app_id>') | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  | api.add_resource(AppCopyApi, '/apps/<uuid:app_id>/copy') | 
					
						
							|  |  |  | api.add_resource(AppExportApi, '/apps/<uuid:app_id>/export') | 
					
						
							| 
									
										
										
										
											2023-05-15 08:51:32 +08:00
										 |  |  | api.add_resource(AppNameApi, '/apps/<uuid:app_id>/name') | 
					
						
							| 
									
										
										
										
											2023-08-06 16:21:35 +08:00
										 |  |  | api.add_resource(AppIconApi, '/apps/<uuid:app_id>/icon') | 
					
						
							| 
									
										
										
										
											2023-05-15 08:51:32 +08:00
										 |  |  | api.add_resource(AppSiteStatus, '/apps/<uuid:app_id>/site-enable') | 
					
						
							|  |  |  | api.add_resource(AppApiStatus, '/apps/<uuid:app_id>/api-enable') |