6
0

MediaFile.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. from os.path import join
  2. from uuid import uuid1
  3. from pycs.observable import ObservableDict
  4. class MediaFile(ObservableDict):
  5. def __init__(self, obj, project_id, type):
  6. if 'predictionResults' not in obj.keys():
  7. obj['predictionResults'] = {}
  8. self.project_id = project_id
  9. self.type = type
  10. super().__init__(obj)
  11. @property
  12. def directory(self):
  13. return join('projects', self.project_id, self.type)
  14. @property
  15. def full_name(self):
  16. return self['id'] + self['extension']
  17. @property
  18. def path(self):
  19. return join(self.directory, self.full_name)
  20. def add_global_result(self, result, origin='user'):
  21. self.remove_global_result()
  22. self.add_result(result, origin)
  23. def remove_global_result(self):
  24. delete = []
  25. for result_id in self['predictionResults']:
  26. if 'x' not in self['predictionResults'][result_id]:
  27. delete.append(result_id)
  28. for result_id in delete:
  29. del self['predictionResults'][result_id]
  30. def add_result(self, result, origin='user'):
  31. result['id'] = str(uuid1())
  32. result['origin'] = origin
  33. self['predictionResults'][result['id']] = result
  34. def remove_result(self, identifier):
  35. del self['predictionResults'][identifier]
  36. def remove_pipeline_results(self):
  37. remove = list(filter(lambda k: self['predictionResults'][k]['origin'] == 'pipeline', self['predictionResults'].keys()))
  38. for key in remove:
  39. del self['predictionResults'][key]
  40. def remove_results(self):
  41. self['predictionResults'] = {}
  42. def update_result(self, identifier, result, origin='user'):
  43. result['id'] = identifier
  44. result['origin'] = origin
  45. self['predictionResults'][identifier] = result
  46. def resize(self, maximum_width):
  47. raise NotImplementedError