raws.py 518 B

1234567891011121314151617
  1. from flask_restful import fields # type: ignore
  2. from core.file import File
  3. class FilesContainedField(fields.Raw):
  4. def format(self, value):
  5. return self._format_file_object(value)
  6. def _format_file_object(self, v):
  7. if isinstance(v, File):
  8. return v.model_dump()
  9. if isinstance(v, dict):
  10. return {k: self._format_file_object(vv) for k, vv in v.items()}
  11. if isinstance(v, list):
  12. return [self._format_file_object(vv) for vv in v]
  13. return v