Ejemplo n.º 1
0
 def get(self, project_id, sequence_id):
     """
     Resource to retrieve the casting of shots from given sequence.
     """
     user_service.check_project_access(project_id)
     shots_service.get_sequence(sequence_id)
     return breakdown_service.get_sequence_casting(sequence_id)
Ejemplo n.º 2
0
 def get(self, sequence_id):
     """
     Retrieve all scenes related to a given sequence.
     """
     sequence = shots_service.get_sequence(sequence_id)
     user_service.check_project_access(sequence["project_id"])
     return shots_service.get_scenes_for_sequence(sequence_id)
Ejemplo n.º 3
0
def generate_playlisted_shot_from_task(task_id):
    """
    Generate the data structure of a playlisted shot for a given task. It
    doesn't persist anything.
    """
    previews = {}
    task = tasks_service.get_task(task_id)
    shot = shots_service.get_shot(task["entity_id"])
    sequence = shots_service.get_sequence(shot["parent_id"])
    preview_files = get_preview_files_for_shot(shot["id"])
    task_type_id = task["task_type_id"]
    playlisted_shot = {
        "id": shot["id"],
        "name": shot["name"],
        "preview_file_task_id": task_id,
        "sequence_id": sequence["id"],
        "sequence_name": sequence["name"]
    }
    if task_type_id in preview_files and len(preview_files[task_type_id]) > 0:
        preview_file = preview_files[task_type_id][0]
        playlisted_shot.update({
            "preview_file_id":
            preview_file["id"],
            "preview_file_extension":
            preview_file["extension"],
            "preview_file_annotations":
            preview_file["annotations"]
        })
    playlisted_shot["preview_files"] = preview_files
    return playlisted_shot
Ejemplo n.º 4
0
    def get(self, task_id):
        task = tasks_service.get_task(task_id)
        if not permissions.has_manager_permissions():
            user_service.check_has_task_related(task["project_id"])

        result = task
        task_type = tasks_service.get_task_type(task["task_type_id"])
        result["task_type"] = task_type
        assigner = persons_service.get_person(task["assigner_id"])
        result["assigner"] = assigner
        project = projects_service.get_project(task["project_id"])
        result["project"] = project
        task_status = tasks_service.get_task_status(task["task_status_id"])
        result["task_status"] = task_status
        entity = tasks_service.get_entity(task["entity_id"])
        result["entity"] = entity
        if entity["parent_id"] is not None:
            sequence = shots_service.get_sequence(entity["parent_id"])
            result["sequence"] = sequence
            if sequence["parent_id"] is not None:
                episode = shots_service.get_episode(sequence["parent_id"])
                result["episode"] = episode
        entity_type = tasks_service.get_entity_type(entity["entity_type_id"])
        result["entity_type"] = entity_type
        assignees = []
        for assignee_id in task["assignees"]:
            assignees.append(persons_service.get_person(assignee_id))
        result["persons"] = assignees
        result["type"] = "Task"

        return result, 200
Ejemplo n.º 5
0
 def get(self, sequence_id):
     """
     Retrieve all scenes related to a given sequence.
     """
     sequence = shots_service.get_sequence(sequence_id)
     if not permissions.has_manager_permissions():
         user_service.check_has_task_related(sequence["project_id"])
     return shots_service.get_scenes_for_sequence(sequence_id)
Ejemplo n.º 6
0
 def delete(self, sequence_id):
     """
     Delete given sequence.
     """
     force = self.get_force()
     sequence = shots_service.get_sequence(sequence_id)
     user_service.check_manager_project_access(sequence["project_id"])
     shots_service.remove_sequence(sequence_id, force=force)
     return "", 204
Ejemplo n.º 7
0
 def get(self, sequence_id):
     """
     Retrieve all tasks related to a given shot.
     """
     sequence = shots_service.get_sequence(sequence_id)
     user_service.check_project_access(sequence["project_id"])
     relations = self.get_relations()
     return tasks_service.get_tasks_for_sequence(sequence_id,
                                                 relations=relations)
Ejemplo n.º 8
0
 def get(self, sequence_id):
     """
     Retrieve all shot entries for a given sequence.
     Filters can be specified in the query string.
     """
     sequence = shots_service.get_sequence(sequence_id)
     user_service.check_project_access(sequence["project_id"])
     criterions = query.get_query_criterions_from_request(request)
     criterions["parent_id"] = sequence_id
     return shots_service.get_shots(criterions)
Ejemplo n.º 9
0
 def get(self):
     """
     Retrieve all shot entries. Filters can be specified in the query string.
     """
     criterions = query.get_query_criterions_from_request(request)
     if "sequence_id" in criterions:
         sequence = shots_service.get_sequence(criterions["sequence_id"])
         criterions["project_id"] = sequence["project_id"]
     user_service.check_project_access(criterions)
     return shots_service.get_shots(criterions)
Ejemplo n.º 10
0
 def get(self, sequence_id):
     """
     Return tasks related to given sequence for current user.
     ---
     tags:
     - User
     parameters:
       - in: path
         name: sequence_id
         required: True
         schema:
             type: UUID
             example: a24a6ea4-ce75-4665-a070-57453082c25
     responses:
         200:
             description: Tasks related to given sequence
     """
     shots_service.get_sequence(sequence_id)
     return user_service.get_tasks_for_entity(sequence_id)
Ejemplo n.º 11
0
 def get(self, sequence_id):
     """
     Return scenes related to given sequence if the current user has access to it.
     ---
     tags:
     - User
     parameters:
       - in: path
         name: sequence_id
         required: True
         schema:
             type: UUID
             example: a24a6ea4-ce75-4665-a070-57453082c25
     responses:
         200:
             description: Scenes related to given sequence
     """
     shots_service.get_sequence(sequence_id)
     return user_service.get_scenes_for_sequence(sequence_id)
Ejemplo n.º 12
0
 def get(self, sequence_id):
     """
     Retrieve all shot entries for a given sequence.
     Filters can be specified in the query string.
     """
     sequence = shots_service.get_sequence(sequence_id)
     if not permissions.has_manager_permissions():
         user_service.check_has_task_related(sequence["project_id"])
     criterions = query.get_query_criterions_from_request(request)
     criterions["parent_id"] = sequence_id
     return shots_service.get_shots(criterions)
Ejemplo n.º 13
0
 def get(self, sequence_id):
     """
     Retrieve all shot entries for a given sequence.
     Filters can be specified in the query string.
     """
     sequence = shots_service.get_sequence(sequence_id)
     user_service.check_project_access(sequence["project_id"])
     criterions = query.get_query_criterions_from_request(request)
     criterions["parent_id"] = sequence_id
     if permissions.has_vendor_permissions():
         criterions["assigned_to"] = persons_service.get_current_user()["id"]
     return shots_service.get_shots(criterions)
Ejemplo n.º 14
0
 def get(self, sequence_id):
     """
     Retrieve all tasks related to a given sequence.
     """
     sequence = shots_service.get_sequence(sequence_id)
     user_service.check_project_access(sequence["project_id"])
     user_service.check_entity_access(sequence["id"])
     if permissions.has_vendor_permissions():
         raise permissions.PermissionDenied
     relations = self.get_relations()
     return tasks_service.get_shot_tasks_for_sequence(sequence_id,
                                                      relations=relations)
Ejemplo n.º 15
0
def get_base_shot_for_playlist(entity, task_id):
    shot = shots_service.get_shot(entity["id"])
    sequence = shots_service.get_sequence(shot["parent_id"])
    playlisted_entity = {
        "id": shot["id"],
        "name": shot["name"],
        "preview_file_task_id": task_id,
        "sequence_id": sequence["id"],
        "sequence_name": sequence["name"],
        "parent_name": sequence["name"],
    }
    return playlisted_entity
Ejemplo n.º 16
0
 def get(self):
     """
     Retrieve all shot entries. Filters can be specified in the query string.
     """
     criterions = query.get_query_criterions_from_request(request)
     if "sequence_id" in criterions:
         sequence = shots_service.get_sequence(criterions["sequence_id"])
         criterions["project_id"] = sequence["project_id"]
         criterions["parent_id"] = sequence["id"]
         del criterions["sequence_id"]
     if permissions.has_vendor_permissions():
         criterions["assigned_to"] = persons_service.get_current_user()["id"]
     user_service.check_project_access(criterions.get("project_id", None))
     return shots_service.get_shots(criterions)
Ejemplo n.º 17
0
def generate_playlisted_shot_from_task(task_id):
    previews = {}
    task = tasks_service.get_task(task_id)
    shot = shots_service.get_shot(task["entity_id"])
    sequence = shots_service.get_sequence(shot["parent_id"])
    preview_files = get_preview_files_for_task(task_id)
    task_type_id = task["task_type_id"]
    shot["preview_file_task_id"] = task_id
    shot["sequence_id"] = sequence["id"]
    shot["sequence_name"] = sequence["name"]
    if len(preview_files) > 0:
        previews[task_type_id] = get_playlist_preview_file_list(preview_files)
        shot["preview_file_id"] = previews[task_type_id][0]["id"]
        shot["preview_file_extension"] = previews[task_type_id][0]["extension"]
        shot["preview_file_annotations"] = previews[task_type_id][0][
            "annotations"]
    shot["preview_files"] = previews
    return shot
Ejemplo n.º 18
0
def get_full_task(task_id):
    task = get_task_with_relations(task_id)
    task_type = get_task_type(task["task_type_id"])
    project = projects_service.get_project(task["project_id"])
    task_status = get_task_status(task["task_status_id"])
    entity = entities_service.get_entity(task["entity_id"])
    entity_type = entities_service.get_entity_type(entity["entity_type_id"])
    assignees = [
        persons_service.get_person(assignee_id)
        for assignee_id in task["assignees"]
    ]

    task.update({
        "entity": entity,
        "task_type": task_type,
        "task_status": task_status,
        "project": project,
        "entity_type": entity_type,
        "persons": assignees,
        "type": "Task",
    })

    try:
        assigner = persons_service.get_person(task["assigner_id"])
        task["assigner"] = assigner
    except PersonNotFoundException:
        pass

    if entity["parent_id"] is not None:
        if entity_type["name"] == "Edit":
            episode_id = entity["parent_id"]
        else:
            sequence = shots_service.get_sequence(entity["parent_id"])
            task["sequence"] = sequence
            episode_id = sequence["parent_id"]
        if episode_id is not None:
            episode = shots_service.get_episode(episode_id)
            task["episode"] = episode

    return task
Ejemplo n.º 19
0
    def get(self, task_id):
        task = tasks_service.get_task(task_id)
        if not permissions.has_manager_permissions():
            user_service.check_has_task_related(task["project_id"])

        task_type = tasks_service.get_task_type(task["task_type_id"])
        project = projects_service.get_project(task["project_id"])
        task_status = tasks_service.get_task_status(task["task_status_id"])
        entity = entities_service.get_entity(task["entity_id"])
        entity_type = entities_service.get_entity_type(
            entity["entity_type_id"])
        assignees = []
        for assignee_id in task["assignees"]:
            assignees.append(persons_service.get_person(assignee_id))

        task.update({
            "entity": entity,
            "task_type": task_type,
            "task_status": task_status,
            "project": project,
            "entity_type": entity_type,
            "persons": assignees,
            "type": "Task"
        })

        try:
            assigner = persons_service.get_person(task["assigner_id"])
            task["assigner"] = assigner
        except PersonNotFoundException:
            pass

        if entity["parent_id"] is not None:
            sequence = shots_service.get_sequence(entity["parent_id"])
            task["sequence"] = sequence
            if sequence["parent_id"] is not None:
                episode = shots_service.get_episode(sequence["parent_id"])
                task["episode"] = episode

        return task, 200
Ejemplo n.º 20
0
def _create_episode_casting_link(entity, asset_id, nb_occurences=1, label=""):
    """
    When an asset is casted in a shot, the asset is automatically casted in
    the episode.
    """
    if shots_service.is_shot(entity):
        sequence = shots_service.get_sequence(entity["parent_id"])
        if sequence["parent_id"] is not None:
            link = EntityLink.get_by(entity_in_id=sequence["parent_id"],
                                     entity_out_id=asset_id)
            if link is None:
                link = EntityLink.create(
                    entity_in_id=sequence["parent_id"],
                    entity_out_id=asset_id,
                    nb_occurences=1,
                    label=label,
                )
                events.emit(
                    "asset:update",
                    {"asset_id": asset_id},
                    project_id=entity["project_id"],
                )
    return entity
Ejemplo n.º 21
0
 def test_get_sequence(self):
     self.assertEquals(
         str(self.sequence.id),
         shots_service.get_sequence(self.sequence.id)["id"]
     )
Ejemplo n.º 22
0
 def get(self, sequence_id):
     shots_service.get_sequence(sequence_id)
     return user_service.get_task_types_for_entity(sequence_id)
Ejemplo n.º 23
0
 def get(self, sequence_id):
     shots_service.get_sequence(sequence_id)
     return user_service.get_scenes_for_sequence(sequence_id)
Ejemplo n.º 24
0
def get_tasks_for_sequence(sequence_id):
    """
    Get all tasks for given sequence.
    """
    sequence = shots_service.get_sequence(sequence_id)
    return get_task_dicts_for_entity(sequence["id"])
Ejemplo n.º 25
0
def get_tasks_for_sequence(sequence_id, relations=False):
    """
    Get all tasks for given sequence.
    """
    sequence = shots_service.get_sequence(sequence_id)
    return get_task_dicts_for_entity(sequence["id"], relations=relations)
Ejemplo n.º 26
0
 def get(self, sequence_id):
     shots_service.get_sequence(sequence_id)
     return user_service.get_sequence_shots(sequence_id)
Ejemplo n.º 27
0
def get_tasks_for_sequence(sequence_id):
    sequence = shots_service.get_sequence(sequence_id)
    return get_task_dicts_for_entity(sequence["id"])