def load(cls, path): result = RenderJobList() result.path = path with open(path, 'r') as f: reader = csv.DictReader(f) for row in reader: job = RenderJob.from_dict(row) parentid = row['parent'] if parentid: parent = next((x for x in result.rootjobs if x.id == parentid), None) if parent is None: raise Exception(f'Parent "{parentid}" not found."') parent.add_child(job) else: result.rootjobs.append(job) return result
def from_dict(cls, obj): result = RenderJobList() result.rootjobs = list(map(lambda j: RenderJob.from_dict(j), obj['rootjobs'])) return result