123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- from json import load, dump
- from os.path import join, exists
- from uuid import uuid1
- from pycs.projects.VideoFile import VideoFile
- class UnmanagedVideoFile(VideoFile):
- def __init__(self, obj, project):
- obj['prev'] = None
- obj['next'] = None
- super().__init__(obj, project, 'data')
- del self['predictionResults']
- def prev(self, value):
- self['prev'] = value['id']
- def next(self, value):
- self['next'] = value['id']
- def length(self, value):
- self['length'] = value
- @property
- def data_path(self):
- return join('projects', self.project['id'], 'data', self['id'] + '.json')
- def __load(self):
- if not exists(self.data_path):
- return {}
- with open(self.data_path, 'r') as f:
- return load(f)
- def __write(self, data):
- with open(self.data_path, 'w') as f:
- dump(data, f, indent=4)
- def get_data(self):
- copy = self.copy()
- copy['predictionResults'] = self.__load()
- return copy
- def add_global_result(self, result, origin='user'):
- self.remove_global_result()
- self.add_result(result, origin)
- def remove_global_result(self):
- data = self.__load()
- delete = []
- for result_id in data:
- if 'x' not in data[result_id]:
- delete.append(result_id)
- for result_id in delete:
- del data[result_id]
- self.__write(data)
- def add_result(self, result, origin='user'):
- data = self.__load()
- result['id'] = str(uuid1())
- result['origin'] = origin
- data[result['id']] = result
- self.__write(data)
- def remove_result(self, identifier):
- data = self.__load()
- del data[identifier]
- self.__write(data)
- def remove_pipeline_results(self):
- data = self.__load()
- remove = list(filter(lambda k: data[k]['origin'] == 'pipeline', data.keys()))
- for key in remove:
- del data[key]
- self.__write(data)
- def remove_results(self):
- self.__write({})
- def update_result(self, identifier, result, origin='user'):
- data = self.__load()
- result['id'] = identifier
- result['origin'] = origin
- data[identifier] = result
- self.__write(data)
|