12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- from os.path import join
- from uuid import uuid1
- from pycs.observable import ObservableDict
- class MediaFile(ObservableDict):
- def __init__(self, obj, project, type):
- if 'predictionResults' not in obj.keys():
- obj['predictionResults'] = {}
- self.project = project
- self.type = type
- super().__init__(obj)
- @property
- def directory(self):
- if self.project['unmanaged'] is not None and self.type == 'data':
- return self.project['unmanaged']
- else:
- return join('projects', self.project['id'], self.type)
- @property
- def full_name(self):
- return self['id'] + self['extension']
- @property
- def path(self):
- return join(self.directory, self.full_name)
- def add_global_result(self, result, origin='user'):
- self.remove_global_result()
- self.add_result(result, origin)
- def remove_global_result(self):
- delete = []
- for result_id in self['predictionResults']:
- if 'x' not in self['predictionResults'][result_id]:
- delete.append(result_id)
- for result_id in delete:
- del self['predictionResults'][result_id]
- def add_result(self, result, origin='user'):
- result['id'] = str(uuid1())
- result['origin'] = origin
- self['predictionResults'][result['id']] = result
- def remove_result(self, identifier):
- del self['predictionResults'][identifier]
- def remove_pipeline_results(self):
- remove = list(filter(lambda k: self['predictionResults'][k]['origin'] == 'pipeline', self['predictionResults'].keys()))
- for key in remove:
- del self['predictionResults'][key]
- def remove_results(self):
- self['predictionResults'] = {}
- def update_result(self, identifier, result, origin='user'):
- result['id'] = identifier
- result['origin'] = origin
- self['predictionResults'][identifier] = result
- def resize(self, maximum_width):
- raise NotImplementedError
|