def get_preview_files_for_shot(shot_id): """ Get all preview files available for given shot. """ tasks = tasks_service.get_tasks_for_shot(shot_id) previews = {} for task in tasks: preview_files = (PreviewFile.query.filter_by( task_id=task["id"]).filter_by( extension="mp4").join(Task).join(TaskType).order_by( TaskType.priority.desc()).order_by(TaskType.name).order_by( PreviewFile.revision.desc()).all()) task_type_id = task["task_type_id"] if len(preview_files) > 0: previews[task_type_id] = [ { "id": str(preview_file.id), "revision": preview_file.revision, "extension": preview_file.extension, "annotations": preview_file.annotations, "created_at": fields.serialize_value(preview_file.created_at), "task_id": str(preview_file.task_id), } for preview_file in preview_files ] # Do not add too much field to avoid building too big responses return previews
def get(self, shot_id): """ Retrieve all tasks related to a given shot. """ shot = shots_service.get_shot(shot_id) user_service.check_project_access(shot["project_id"]) return tasks_service.get_tasks_for_shot(shot_id)
def get_preview_files_for_shot(shot_id): """ Get all preview files available for given shot. """ tasks = tasks_service.get_tasks_for_shot(shot_id) previews = {} for task in tasks: preview_files = PreviewFile.query \ .filter_by(task_id=task["id"]) \ .filter_by(extension="mp4") \ .join(Task) \ .join(TaskType) \ .order_by(TaskType.priority.desc()) \ .order_by(TaskType.name) \ .order_by(PreviewFile.revision.desc()) \ .all() task_type_id = task["task_type_id"] if len(preview_files) > 0: previews[task_type_id] = [ { "id": str(preview_file.id), "revision": preview_file.revision, "extension": preview_file.extension, "task_id": str(preview_file.task_id) } for preview_file in preview_files ] # Do not add too much field to avoid building too big responses return previews
def get(self, shot_id): """ Retrieve all tasks related to a given shot. """ shot = shots_service.get_shot(shot_id) if not permissions.has_manager_permissions(): user_service.check_has_task_related(shot["project_id"]) return tasks_service.get_tasks_for_shot(shot_id)
def create_and_update_tasks( self, tasks_update, entity, shot_creation=False ): if tasks_update: if shot_creation: tasks_map = { str(task_type.id): create_task( task_type.serialize(), entity.serialize() ) for task_type in self.task_types_in_project_for_shots } else: tasks_map = { task["task_type_id"]: task for task in get_tasks_for_shot(str(entity.id)) } for task_update in tasks_update: if task_update["task_type_id"] not in tasks_map: tasks_map[task_update["task_type_id"]] = create_task( get_task_type(task_update["task_type_id"]), entity.serialize(), ) task = tasks_map[task_update["task_type_id"]] if ( task_update["comment"] is not None or task_update["task_status_id"] != task["task_status_id"] ): try: create_comment( self.current_user_id, task["id"], task_update["task_status_id"] or task["task_status_id"], task_update["comment"] or "", [], {}, "", ) except WrongParameterException: pass elif shot_creation: self.created_shots.append(entity.serialize())
def test_get_tasks_for_shot(self): tasks = tasks_service.get_tasks_for_shot(self.shot.id) self.assertEqual(len(tasks), 1) self.assertEqual(tasks[0]["id"], str(self.shot_task.id))