Beispiel #1
0
def get_shots_for_project(project_id, only_assigned=False):
    """
    Retrieve all shots related to given project.
    """
    return entities_service.get_entities_for_project(
        project_id, get_shot_type()["id"], "Shot", only_assigned=only_assigned
    )
Beispiel #2
0
def get_episodes_for_project(project_id, only_assigned=False):
    """
    Retrieve all episodes related to given project.
    """
    if only_assigned:
        Sequence = aliased(Entity, name="sequence")
        Shot = aliased(Entity, name="shot")
        Asset = aliased(Entity, name="asset")
        query = (
            Entity.query.join(Sequence, Entity.id == Sequence.parent_id)
            .join(Shot, Sequence.id == Shot.parent_id)
            .join(Task, Shot.id == Task.entity_id)
            .filter(Entity.project_id == project_id)
            .filter(user_service.build_assignee_filter())
        )
        shot_episodes = fields.serialize_models(query.all())
        shot_episode_ids = {episode["id"]: True for episode in shot_episodes}
        query = (
            Entity.query.join(Asset, Entity.id == Asset.source_id)
            .join(Task, Asset.id == Task.entity_id)
            .filter(Entity.project_id == project_id)
            .filter(user_service.build_assignee_filter())
        )
        asset_episodes = fields.serialize_models(query.all())
        result = shot_episodes
        for episode in asset_episodes:
            if episode["id"] not in shot_episode_ids:
                result.append(episode)
        return result
    else:
        return entities_service.get_entities_for_project(
            project_id, get_episode_type()["id"], "Episode"
        )
Beispiel #3
0
def get_scenes_for_project(project_id):
    """
    Retrieve all scenes related to given project.
    """
    return entities_service.get_entities_for_project(project_id,
                                                     get_scene_type()["id"],
                                                     "Scene")
Beispiel #4
0
def get_shots_for_project(project_id):
    """
    Retrieve all shots related to given project.
    """
    return entities_service.get_entities_for_project(project_id,
                                                     get_shot_type()["id"],
                                                     "Shot")
Beispiel #5
0
def get_episodes_for_project(project_id):
    """
    Retrieve all episodes related to given project.
    """
    return entities_service.get_entities_for_project(project_id,
                                                     get_episode_type()["id"],
                                                     "Episode")
Beispiel #6
0
def get_sequences_for_project(project_id, only_assigned=False):
    """
    Retrieve all sequences related to given project.
    """
    if only_assigned:
        Shot = aliased(Entity, name="shot")
        query = (Entity.query.join(Shot, Entity.id == Shot.parent_id).join(
            Task, Shot.id == Task.entity_id).filter(
                Entity.project_id == project_id).filter(
                    user_service.build_assignee_filter()))
        return fields.serialize_models(query.all())
    else:
        return entities_service.get_entities_for_project(
            project_id,
            get_sequence_type()["id"], "Sequence")