Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

metadata.py 4.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. from flask_login import current_user # type: ignore # type: ignore
  2. from flask_restful import marshal, reqparse # type: ignore
  3. from werkzeug.exceptions import NotFound
  4. from controllers.service_api import api
  5. from controllers.service_api.wraps import DatasetApiResource
  6. from fields.dataset_fields import dataset_metadata_fields
  7. from services.dataset_service import DatasetService
  8. from services.entities.knowledge_entities.knowledge_entities import (
  9. MetadataArgs,
  10. MetadataOperationData,
  11. )
  12. from services.metadata_service import MetadataService
  13. class DatasetMetadataCreateServiceApi(DatasetApiResource):
  14. def post(self, tenant_id, dataset_id):
  15. parser = reqparse.RequestParser()
  16. parser.add_argument("type", type=str, required=True, nullable=True, location="json")
  17. parser.add_argument("name", type=str, required=True, nullable=True, location="json")
  18. args = parser.parse_args()
  19. metadata_args = MetadataArgs(**args)
  20. dataset_id_str = str(dataset_id)
  21. dataset = DatasetService.get_dataset(dataset_id_str)
  22. if dataset is None:
  23. raise NotFound("Dataset not found.")
  24. DatasetService.check_dataset_permission(dataset, current_user)
  25. metadata = MetadataService.create_metadata(dataset_id_str, metadata_args)
  26. return marshal(metadata, dataset_metadata_fields), 201
  27. def get(self, tenant_id, dataset_id):
  28. dataset_id_str = str(dataset_id)
  29. dataset = DatasetService.get_dataset(dataset_id_str)
  30. if dataset is None:
  31. raise NotFound("Dataset not found.")
  32. return MetadataService.get_dataset_metadatas(dataset), 200
  33. class DatasetMetadataServiceApi(DatasetApiResource):
  34. def patch(self, tenant_id, dataset_id, metadata_id):
  35. parser = reqparse.RequestParser()
  36. parser.add_argument("name", type=str, required=True, nullable=True, location="json")
  37. args = parser.parse_args()
  38. dataset_id_str = str(dataset_id)
  39. metadata_id_str = str(metadata_id)
  40. dataset = DatasetService.get_dataset(dataset_id_str)
  41. if dataset is None:
  42. raise NotFound("Dataset not found.")
  43. DatasetService.check_dataset_permission(dataset, current_user)
  44. metadata = MetadataService.update_metadata_name(dataset_id_str, metadata_id_str, args.get("name"))
  45. return marshal(metadata, dataset_metadata_fields), 200
  46. def delete(self, tenant_id, dataset_id, metadata_id):
  47. dataset_id_str = str(dataset_id)
  48. metadata_id_str = str(metadata_id)
  49. dataset = DatasetService.get_dataset(dataset_id_str)
  50. if dataset is None:
  51. raise NotFound("Dataset not found.")
  52. DatasetService.check_dataset_permission(dataset, current_user)
  53. MetadataService.delete_metadata(dataset_id_str, metadata_id_str)
  54. return 204
  55. class DatasetMetadataBuiltInFieldServiceApi(DatasetApiResource):
  56. def get(self, tenant_id):
  57. built_in_fields = MetadataService.get_built_in_fields()
  58. return {"fields": built_in_fields}, 200
  59. class DatasetMetadataBuiltInFieldActionServiceApi(DatasetApiResource):
  60. def post(self, tenant_id, dataset_id, action):
  61. dataset_id_str = str(dataset_id)
  62. dataset = DatasetService.get_dataset(dataset_id_str)
  63. if dataset is None:
  64. raise NotFound("Dataset not found.")
  65. DatasetService.check_dataset_permission(dataset, current_user)
  66. if action == "enable":
  67. MetadataService.enable_built_in_field(dataset)
  68. elif action == "disable":
  69. MetadataService.disable_built_in_field(dataset)
  70. return 200
  71. class DocumentMetadataEditServiceApi(DatasetApiResource):
  72. def post(self, tenant_id, dataset_id):
  73. dataset_id_str = str(dataset_id)
  74. dataset = DatasetService.get_dataset(dataset_id_str)
  75. if dataset is None:
  76. raise NotFound("Dataset not found.")
  77. DatasetService.check_dataset_permission(dataset, current_user)
  78. parser = reqparse.RequestParser()
  79. parser.add_argument("operation_data", type=list, required=True, nullable=True, location="json")
  80. args = parser.parse_args()
  81. metadata_args = MetadataOperationData(**args)
  82. MetadataService.update_documents_metadata(dataset, metadata_args)
  83. return 200
  84. api.add_resource(DatasetMetadataCreateServiceApi, "/datasets/<uuid:dataset_id>/metadata")
  85. api.add_resource(DatasetMetadataServiceApi, "/datasets/<uuid:dataset_id>/metadata/<uuid:metadata_id>")
  86. api.add_resource(DatasetMetadataBuiltInFieldServiceApi, "/datasets/metadata/built-in")
  87. api.add_resource(
  88. DatasetMetadataBuiltInFieldActionServiceApi, "/datasets/<uuid:dataset_id>/metadata/built-in/<string:action>"
  89. )
  90. api.add_resource(DocumentMetadataEditServiceApi, "/datasets/<uuid:dataset_id>/documents/metadata")