trigger_task.py 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. # coding=utf-8
  2. """
  3. @project: MaxKB
  4. @Author:虎虎
  5. @file: trigger_task.py
  6. @date:2026/1/14 16:01
  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 common.auth import TokenAuth
  14. from common.auth.authentication import has_permissions
  15. from common import result
  16. from trigger.api.trigger_task import TriggerTaskRecordExecutionDetailsAPI, TriggerTaskRecordPageAPI, TriggerTaskAPI
  17. from trigger.serializers.trigger_task import TriggerTaskQuerySerializer, TriggerTaskRecordQuerySerializer, \
  18. TriggerTaskRecordOperateSerializer
  19. from common.constants.permission_constants import PermissionConstants, RoleConstants
  20. class TriggerTaskView(APIView):
  21. authentication_classes = [TokenAuth]
  22. @extend_schema(
  23. methods=['GET'],
  24. description=_('Get the task list of triggers'),
  25. summary=_('Get the task list of triggers'),
  26. operation_id=_('Get the task list of triggers'), # type: ignore
  27. parameters=TriggerTaskAPI.get_parameters(),
  28. responses=TriggerTaskAPI.get_response(),
  29. tags=[_('Trigger')] # type: ignore
  30. )
  31. @has_permissions(
  32. PermissionConstants.TRIGGER_READ.get_workspace_permission_workspace_manage_role(),
  33. RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
  34. )
  35. def get(self, request: Request, workspace_id: str, trigger_id: str):
  36. return result.success(
  37. TriggerTaskQuerySerializer(data={'workspace_id': workspace_id, 'trigger_id': trigger_id}).list())
  38. class TriggerTaskRecordView(APIView):
  39. pass
  40. class TriggerTaskRecordExecutionDetailsView(APIView):
  41. authentication_classes = [TokenAuth]
  42. @extend_schema(
  43. methods=['GET'],
  44. description=_('Retrieve detailed records of tasks executed by the trigger.'),
  45. summary=_('Retrieve detailed records of tasks executed by the trigger.'),
  46. operation_id=_('Retrieve detailed records of tasks executed by the trigger.'), # type: ignore
  47. parameters=TriggerTaskRecordExecutionDetailsAPI.get_parameters(),
  48. responses=TriggerTaskRecordExecutionDetailsAPI.get_response(),
  49. tags=[_('Trigger')] # type: ignore
  50. )
  51. @has_permissions(
  52. PermissionConstants.TRIGGER_READ.get_workspace_permission_workspace_manage_role(),
  53. RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
  54. )
  55. def get(self, request: Request, workspace_id: str, trigger_id: str, trigger_task_id: str,
  56. trigger_task_record_id: str):
  57. return result.success(
  58. TriggerTaskRecordOperateSerializer(
  59. data={'workspace_id': workspace_id, 'trigger_id': trigger_id, 'trigger_task_id': trigger_task_id,
  60. 'trigger_task_record_id': trigger_task_record_id})
  61. .get_execution_details())
  62. class TriggerTaskRecordPageView(APIView):
  63. authentication_classes = [TokenAuth]
  64. @extend_schema(
  65. methods=['GET'],
  66. description=_('Get a paginated list of execution records for trigger tasks.'),
  67. summary=_('Get a paginated list of execution records for trigger tasks.'),
  68. operation_id=_('Get a paginated list of execution records for trigger tasks.'), # type: ignore
  69. parameters=TriggerTaskRecordPageAPI.get_parameters(),
  70. responses=TriggerTaskRecordPageAPI.get_response(),
  71. tags=[_('Trigger')] # type: ignore
  72. )
  73. @has_permissions(
  74. PermissionConstants.TRIGGER_READ.get_workspace_permission_workspace_manage_role(),
  75. RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
  76. )
  77. def get(self, request: Request, workspace_id: str, trigger_id: str, current_page: int, page_size: int):
  78. return result.success(
  79. TriggerTaskRecordQuerySerializer(
  80. data={'workspace_id': workspace_id, 'trigger_id': trigger_id,
  81. 'source_type': request.query_params.get('source_type'),
  82. 'state': request.query_params.get('state'),
  83. 'name': request.query_params.get('name')})
  84. .page(current_page, page_size))