resource_mapping.py 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. # coding=utf-8
  2. """
  3. @project: MaxKB
  4. @Author:虎虎
  5. @file: resource_mapping.py
  6. @date:2025/12/26 14:07
  7. @desc:
  8. """
  9. from django.utils.translation import gettext_lazy as _
  10. from drf_spectacular.types import OpenApiTypes
  11. from drf_spectacular.utils import OpenApiParameter
  12. from rest_framework import serializers
  13. from common.mixins.api_mixin import APIMixin
  14. class ResourceMappingResponse(serializers.Serializer):
  15. id = serializers.UUIDField(required=True, label="主键id")
  16. target_id = serializers.CharField(required=True, label="被关联资源名称")
  17. target_type = serializers.CharField(required=True, label="被关联资源类型")
  18. source_id = serializers.CharField(required=True, label="关联资源Id")
  19. source_type = serializers.CharField(required=True, label="关联资源类型")
  20. name = serializers.CharField(required=True, label="名称")
  21. desc = serializers.CharField(required=False, label="描述")
  22. user_id = serializers.UUIDField(required=True, label="主键id")
  23. class ResourceMappingAPI(APIMixin):
  24. @staticmethod
  25. def get_parameters():
  26. return [
  27. OpenApiParameter(
  28. name="workspace_id",
  29. description="工作空间id",
  30. type=OpenApiTypes.STR,
  31. location='path',
  32. required=True,
  33. ),
  34. OpenApiParameter(
  35. name="source",
  36. description="资源类型",
  37. type=OpenApiTypes.STR,
  38. location='path',
  39. required=True,
  40. ),
  41. OpenApiParameter(
  42. name="source_id",
  43. description="资源id",
  44. type=OpenApiTypes.STR,
  45. location='path',
  46. required=True,
  47. ),
  48. OpenApiParameter(
  49. name="current_page",
  50. description=_("Current page"),
  51. type=OpenApiTypes.INT,
  52. location='path',
  53. required=True,
  54. ),
  55. OpenApiParameter(
  56. name="page_size",
  57. description=_("Page size"),
  58. type=OpenApiTypes.INT,
  59. location='path',
  60. required=True,
  61. ),
  62. OpenApiParameter(
  63. name="resource_name",
  64. description="名称",
  65. type=OpenApiTypes.STR,
  66. location='query',
  67. required=False
  68. ),
  69. ]
  70. @staticmethod
  71. def get_response():
  72. return ResourceMappingResponse(many=True)