MediaFile.py 1.8 KB

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