Example #1
0
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
Example #2
0
 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
Example #4
0
 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)
Example #5
0
File: shots.py Project: cgwire/zou
    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())
Example #6
0
 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))