6
0

Result.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import typing as T
  2. from contextlib import closing
  3. from json import dumps, loads
  4. from pycs import db
  5. from pycs.database.base import BaseModel
  6. class Result(BaseModel):
  7. file_id = db.Column(
  8. db.Integer,
  9. db.ForeignKey("file.id", ondelete="CASCADE"),
  10. nullable=False)
  11. origin = db.Column(db.String, nullable=False)
  12. type = db.Column(db.String, nullable=False)
  13. label_id = db.Column(
  14. db.Integer,
  15. db.ForeignKey("label.id", ondelete="SET NULL"),
  16. nullable=True)
  17. data = db.Column(db.String)
  18. def set_origin(self, origin: str):
  19. """
  20. set this results origin
  21. :param origin: either 'user' or 'pipeline'
  22. :return:
  23. """
  24. self.origin = origin
  25. self.commit()
  26. def set_label(self, label: int):
  27. """
  28. set this results origin
  29. :param label: label ID
  30. :return:
  31. """
  32. self.label_id = label
  33. self.commit()
  34. def set_data(self, data: T.Optional[dict]):
  35. """
  36. set this results data object
  37. :param data: data object
  38. :return:
  39. """
  40. data = data if data is None else json.dumps(data)
  41. self.data = data
  42. self.commit()