application_version.py 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. # coding=utf-8
  2. """
  3. @project: MaxKB
  4. @Author:虎虎
  5. @file: application_version.py.py
  6. @date:2025/6/3 15:46
  7. @desc:
  8. """
  9. from django.utils.translation import gettext_lazy as _
  10. from drf_spectacular.utils import extend_schema
  11. from rest_framework.request import Request
  12. from rest_framework.views import APIView
  13. from application.api.application_version import ApplicationVersionListAPI, ApplicationVersionPageAPI, \
  14. ApplicationVersionOperateAPI
  15. from application.serializers.application_version import ApplicationVersionSerializer
  16. from application.views import get_application_operation_object
  17. from common import result
  18. from common.auth import TokenAuth
  19. from common.auth.authentication import has_permissions
  20. from common.constants.permission_constants import PermissionConstants, RoleConstants, ViewPermission, CompareConstants
  21. from common.log.log import log
  22. class ApplicationVersionView(APIView):
  23. authentication_classes = [TokenAuth]
  24. @extend_schema(
  25. methods=['GET'],
  26. description=_("Get the application version list"),
  27. summary=_("Get the application version list"),
  28. operation_id=_("Get the application version list"), # type: ignore
  29. parameters=ApplicationVersionListAPI.get_parameters(),
  30. responses=ApplicationVersionListAPI.get_response(),
  31. tags=[_('Application/Version')] # type: ignore
  32. )
  33. @has_permissions(PermissionConstants.APPLICATION_READ.get_workspace_application_permission(),
  34. PermissionConstants.APPLICATION_READ.get_workspace_permission_workspace_manage_role(),
  35. ViewPermission([RoleConstants.USER.get_workspace_role()],
  36. [PermissionConstants.APPLICATION.get_workspace_application_permission()],
  37. CompareConstants.AND),
  38. RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
  39. def get(self, request: Request, workspace_id, application_id: str):
  40. return result.success(
  41. ApplicationVersionSerializer.Query(
  42. data={'workspace_id': workspace_id}).list(
  43. {'name': request.query_params.get("name"), 'application_id': application_id}))
  44. class Page(APIView):
  45. authentication_classes = [TokenAuth]
  46. @extend_schema(
  47. methods=['GET'],
  48. description=_("Get the list of application versions by page"),
  49. summary=_("Get the list of application versions by page"),
  50. operation_id=_("Get the list of application versions by page"), # type: ignore
  51. parameters=ApplicationVersionPageAPI.get_parameters(),
  52. responses=ApplicationVersionPageAPI.get_response(),
  53. tags=[_('Application/Version')] # type: ignore
  54. )
  55. @has_permissions(PermissionConstants.APPLICATION_READ.get_workspace_application_permission(),
  56. PermissionConstants.APPLICATION_READ.get_workspace_permission_workspace_manage_role(),
  57. ViewPermission([RoleConstants.USER.get_workspace_role()],
  58. [PermissionConstants.APPLICATION.get_workspace_application_permission()],
  59. CompareConstants.AND),
  60. RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
  61. def get(self, request: Request, workspace_id: str, application_id: str, current_page: int, page_size: int):
  62. return result.success(
  63. ApplicationVersionSerializer.Query(
  64. data={'workspace_id': workspace_id}).page(
  65. {'name': request.query_params.get("name"), 'application_id': application_id},
  66. current_page, page_size))
  67. class Operate(APIView):
  68. authentication_classes = [TokenAuth]
  69. @extend_schema(
  70. methods=['GET'],
  71. description=_("Get application version details"),
  72. summary=_("Get application version details"),
  73. operation_id=_("Get application version details"), # type: ignore
  74. parameters=ApplicationVersionOperateAPI.get_parameters(),
  75. responses=ApplicationVersionOperateAPI.get_response(),
  76. tags=[_('Application/Version')] # type: ignore
  77. )
  78. @has_permissions(PermissionConstants.APPLICATION_EDIT.get_workspace_application_permission(),
  79. PermissionConstants.APPLICATION_EDIT.get_workspace_permission_workspace_manage_role(),
  80. ViewPermission([RoleConstants.USER.get_workspace_role()],
  81. [PermissionConstants.APPLICATION.get_workspace_application_permission()],
  82. CompareConstants.AND),
  83. RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
  84. def get(self, request: Request, workspace_id: str, application_id: str, application_version_id: str):
  85. return result.success(
  86. ApplicationVersionSerializer.Operate(
  87. data={'user_id': request.user, 'workspace_id': workspace_id,
  88. 'application_id': application_id, 'application_version_id': application_version_id}).one())
  89. @extend_schema(
  90. methods=['PUT'],
  91. description=_("Modify application version information"),
  92. summary=_("Modify application version information"),
  93. operation_id=_("Modify application version information"), # type: ignore
  94. parameters=ApplicationVersionOperateAPI.get_parameters(),
  95. request=None,
  96. responses=ApplicationVersionOperateAPI.get_response(),
  97. tags=[_('Application/Version')] # type: ignore
  98. )
  99. @has_permissions(PermissionConstants.APPLICATION_EDIT.get_workspace_application_permission(),
  100. PermissionConstants.APPLICATION_EDIT.get_workspace_permission_workspace_manage_role(),
  101. ViewPermission([RoleConstants.USER.get_workspace_role()],
  102. [PermissionConstants.APPLICATION.get_workspace_application_permission()],
  103. CompareConstants.AND),
  104. RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
  105. @log(menu='Application', operate="Modify application version information",
  106. get_operation_object=lambda r, k: get_application_operation_object(k.get('application_id')),
  107. )
  108. def put(self, request: Request, workspace_id: str, application_id: str, application_version_id: str):
  109. return result.success(
  110. ApplicationVersionSerializer.Operate(
  111. data={'application_id': application_id, 'workspace_id': workspace_id,
  112. 'application_version_id': application_version_id,
  113. 'user_id': request.user.id}).edit(
  114. request.data))