| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 | from flask_restful import Resource, marshal_withfrom controllers.common import fieldsfrom controllers.common import helpers as controller_helpersfrom controllers.service_api import apifrom controllers.service_api.app.error import AppUnavailableErrorfrom controllers.service_api.wraps import validate_app_tokenfrom models.model import App, AppModefrom services.app_service import AppServiceclass AppParameterApi(Resource):    """Resource for app variables."""    @validate_app_token    @marshal_with(fields.parameters_fields)    def get(self, app_model: App):        """Retrieve app parameters."""        if app_model.mode in {AppMode.ADVANCED_CHAT.value, AppMode.WORKFLOW.value}:            workflow = app_model.workflow            if workflow is None:                raise AppUnavailableError()            features_dict = workflow.features_dict            user_input_form = workflow.user_input_form(to_old_structure=True)        else:            app_model_config = app_model.app_model_config            if app_model_config is None:                raise AppUnavailableError()            features_dict = app_model_config.to_dict()            user_input_form = features_dict.get("user_input_form", [])        return controller_helpers.get_parameters_from_feature_dict(            features_dict=features_dict, user_input_form=user_input_form        )class AppMetaApi(Resource):    @validate_app_token    def get(self, app_model: App):        """Get app meta"""        return AppService().get_app_meta(app_model)class AppInfoApi(Resource):    @validate_app_token    def get(self, app_model: App):        """Get app information"""        return {"name": app_model.name, "description": app_model.description}api.add_resource(AppParameterApi, "/parameters")api.add_resource(AppMetaApi, "/meta")api.add_resource(AppInfoApi, "/info")
 |