Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

app.py 3.3KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. from flask_restx import Resource
  2. from controllers.common.fields import build_parameters_model
  3. from controllers.service_api import service_api_ns
  4. from controllers.service_api.app.error import AppUnavailableError
  5. from controllers.service_api.wraps import validate_app_token
  6. from core.app.app_config.common.parameters_mapping import get_parameters_from_feature_dict
  7. from models.model import App, AppMode
  8. from services.app_service import AppService
  9. @service_api_ns.route("/parameters")
  10. class AppParameterApi(Resource):
  11. """Resource for app variables."""
  12. @service_api_ns.doc("get_app_parameters")
  13. @service_api_ns.doc(description="Retrieve application input parameters and configuration")
  14. @service_api_ns.doc(
  15. responses={
  16. 200: "Parameters retrieved successfully",
  17. 401: "Unauthorized - invalid API token",
  18. 404: "Application not found",
  19. }
  20. )
  21. @validate_app_token
  22. @service_api_ns.marshal_with(build_parameters_model(service_api_ns))
  23. def get(self, app_model: App):
  24. """Retrieve app parameters.
  25. Returns the input form parameters and configuration for the application.
  26. """
  27. if app_model.mode in {AppMode.ADVANCED_CHAT, AppMode.WORKFLOW}:
  28. workflow = app_model.workflow
  29. if workflow is None:
  30. raise AppUnavailableError()
  31. features_dict = workflow.features_dict
  32. user_input_form = workflow.user_input_form(to_old_structure=True)
  33. else:
  34. app_model_config = app_model.app_model_config
  35. if app_model_config is None:
  36. raise AppUnavailableError()
  37. features_dict = app_model_config.to_dict()
  38. user_input_form = features_dict.get("user_input_form", [])
  39. return get_parameters_from_feature_dict(features_dict=features_dict, user_input_form=user_input_form)
  40. @service_api_ns.route("/meta")
  41. class AppMetaApi(Resource):
  42. @service_api_ns.doc("get_app_meta")
  43. @service_api_ns.doc(description="Get application metadata")
  44. @service_api_ns.doc(
  45. responses={
  46. 200: "Metadata retrieved successfully",
  47. 401: "Unauthorized - invalid API token",
  48. 404: "Application not found",
  49. }
  50. )
  51. @validate_app_token
  52. def get(self, app_model: App):
  53. """Get app metadata.
  54. Returns metadata about the application including configuration and settings.
  55. """
  56. return AppService().get_app_meta(app_model)
  57. @service_api_ns.route("/info")
  58. class AppInfoApi(Resource):
  59. @service_api_ns.doc("get_app_info")
  60. @service_api_ns.doc(description="Get basic application information")
  61. @service_api_ns.doc(
  62. responses={
  63. 200: "Application info retrieved successfully",
  64. 401: "Unauthorized - invalid API token",
  65. 404: "Application not found",
  66. }
  67. )
  68. @validate_app_token
  69. def get(self, app_model: App):
  70. """Get app information.
  71. Returns basic information about the application including name, description, tags, and mode.
  72. """
  73. tags = [tag.name for tag in app_model.tags]
  74. return {
  75. "name": app_model.name,
  76. "description": app_model.description,
  77. "tags": tags,
  78. "mode": app_model.mode,
  79. "author_name": app_model.author_name,
  80. }