extension.py 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. from flask_login import current_user
  2. from flask_restful import Resource, marshal_with, reqparse
  3. from controllers.console import api
  4. from controllers.console.setup import setup_required
  5. from controllers.console.wraps import account_initialization_required
  6. from fields.api_based_extension_fields import api_based_extension_fields
  7. from libs.login import login_required
  8. from models.api_based_extension import APIBasedExtension
  9. from services.api_based_extension_service import APIBasedExtensionService
  10. from services.code_based_extension_service import CodeBasedExtensionService
  11. class CodeBasedExtensionAPI(Resource):
  12. @setup_required
  13. @login_required
  14. @account_initialization_required
  15. def get(self):
  16. parser = reqparse.RequestParser()
  17. parser.add_argument('module', type=str, required=True, location='args')
  18. args = parser.parse_args()
  19. return {
  20. 'module': args['module'],
  21. 'data': CodeBasedExtensionService.get_code_based_extension(args['module'])
  22. }
  23. class APIBasedExtensionAPI(Resource):
  24. @setup_required
  25. @login_required
  26. @account_initialization_required
  27. @marshal_with(api_based_extension_fields)
  28. def get(self):
  29. tenant_id = current_user.current_tenant_id
  30. return APIBasedExtensionService.get_all_by_tenant_id(tenant_id)
  31. @setup_required
  32. @login_required
  33. @account_initialization_required
  34. @marshal_with(api_based_extension_fields)
  35. def post(self):
  36. parser = reqparse.RequestParser()
  37. parser.add_argument('name', type=str, required=True, location='json')
  38. parser.add_argument('api_endpoint', type=str, required=True, location='json')
  39. parser.add_argument('api_key', type=str, required=True, location='json')
  40. args = parser.parse_args()
  41. extension_data = APIBasedExtension(
  42. tenant_id=current_user.current_tenant_id,
  43. name=args['name'],
  44. api_endpoint=args['api_endpoint'],
  45. api_key=args['api_key']
  46. )
  47. return APIBasedExtensionService.save(extension_data)
  48. class APIBasedExtensionDetailAPI(Resource):
  49. @setup_required
  50. @login_required
  51. @account_initialization_required
  52. @marshal_with(api_based_extension_fields)
  53. def get(self, id):
  54. api_based_extension_id = str(id)
  55. tenant_id = current_user.current_tenant_id
  56. return APIBasedExtensionService.get_with_tenant_id(tenant_id, api_based_extension_id)
  57. @setup_required
  58. @login_required
  59. @account_initialization_required
  60. @marshal_with(api_based_extension_fields)
  61. def post(self, id):
  62. api_based_extension_id = str(id)
  63. tenant_id = current_user.current_tenant_id
  64. extension_data_from_db = APIBasedExtensionService.get_with_tenant_id(tenant_id, api_based_extension_id)
  65. parser = reqparse.RequestParser()
  66. parser.add_argument('name', type=str, required=True, location='json')
  67. parser.add_argument('api_endpoint', type=str, required=True, location='json')
  68. parser.add_argument('api_key', type=str, required=True, location='json')
  69. args = parser.parse_args()
  70. extension_data_from_db.name = args['name']
  71. extension_data_from_db.api_endpoint = args['api_endpoint']
  72. if args['api_key'] != '[__HIDDEN__]':
  73. extension_data_from_db.api_key = args['api_key']
  74. return APIBasedExtensionService.save(extension_data_from_db)
  75. @setup_required
  76. @login_required
  77. @account_initialization_required
  78. def delete(self, id):
  79. api_based_extension_id = str(id)
  80. tenant_id = current_user.current_tenant_id
  81. extension_data_from_db = APIBasedExtensionService.get_with_tenant_id(tenant_id, api_based_extension_id)
  82. APIBasedExtensionService.delete(extension_data_from_db)
  83. return {'result': 'success'}
  84. api.add_resource(CodeBasedExtensionAPI, '/code-based-extension')
  85. api.add_resource(APIBasedExtensionAPI, '/api-based-extension')
  86. api.add_resource(APIBasedExtensionDetailAPI, '/api-based-extension/<uuid:id>')