You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

file_fields.py 2.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. from flask_restx import Api, Namespace, fields
  2. from libs.helper import TimestampField
  3. upload_config_fields = {
  4. "file_size_limit": fields.Integer,
  5. "batch_count_limit": fields.Integer,
  6. "image_file_size_limit": fields.Integer,
  7. "video_file_size_limit": fields.Integer,
  8. "audio_file_size_limit": fields.Integer,
  9. "workflow_file_upload_limit": fields.Integer,
  10. }
  11. def build_upload_config_model(api_or_ns: Api | Namespace):
  12. """Build the upload config model for the API or Namespace.
  13. Args:
  14. api_or_ns: Flask-RestX Api or Namespace instance
  15. Returns:
  16. The registered model
  17. """
  18. return api_or_ns.model("UploadConfig", upload_config_fields)
  19. file_fields = {
  20. "id": fields.String,
  21. "name": fields.String,
  22. "size": fields.Integer,
  23. "extension": fields.String,
  24. "mime_type": fields.String,
  25. "created_by": fields.String,
  26. "created_at": TimestampField,
  27. "preview_url": fields.String,
  28. }
  29. def build_file_model(api_or_ns: Api | Namespace):
  30. """Build the file model for the API or Namespace.
  31. Args:
  32. api_or_ns: Flask-RestX Api or Namespace instance
  33. Returns:
  34. The registered model
  35. """
  36. return api_or_ns.model("File", file_fields)
  37. remote_file_info_fields = {
  38. "file_type": fields.String(attribute="file_type"),
  39. "file_length": fields.Integer(attribute="file_length"),
  40. }
  41. def build_remote_file_info_model(api_or_ns: Api | Namespace):
  42. """Build the remote file info model for the API or Namespace.
  43. Args:
  44. api_or_ns: Flask-RestX Api or Namespace instance
  45. Returns:
  46. The registered model
  47. """
  48. return api_or_ns.model("RemoteFileInfo", remote_file_info_fields)
  49. file_fields_with_signed_url = {
  50. "id": fields.String,
  51. "name": fields.String,
  52. "size": fields.Integer,
  53. "extension": fields.String,
  54. "url": fields.String,
  55. "mime_type": fields.String,
  56. "created_by": fields.String,
  57. "created_at": TimestampField,
  58. }
  59. def build_file_with_signed_url_model(api_or_ns: Api | Namespace):
  60. """Build the file with signed URL model for the API or Namespace.
  61. Args:
  62. api_or_ns: Flask-RestX Api or Namespace instance
  63. Returns:
  64. The registered model
  65. """
  66. return api_or_ns.model("FileWithSignedUrl", file_fields_with_signed_url)