Exemplo n.º 1
0
def init_data():
    projects_service.get_open_status()
    projects_service.get_closed_status()
    print("Project status initialized.")

    assets_service.get_or_create_type("Characters")
    assets_service.get_or_create_type("Props")
    assets_service.get_or_create_type("Environment")
    assets_service.get_or_create_type("FX")
    assets_service.get_or_create_type("Camera")
    print("Asset types initialized.")

    shots_service.get_episode_type()
    shots_service.get_sequence_type()
    shots_service.get_shot_type()
    print("Shot types initialized.")

    modeling = tasks_service.get_or_create_department("Modeling")
    animation = tasks_service.get_or_create_department("Animation")
    fx = tasks_service.get_or_create_department("FX")
    compositing = tasks_service.get_or_create_department("Compositing")
    concept = tasks_service.get_or_create_department("Concept")
    layout = tasks_service.get_or_create_department("Layout")

    tasks_service.get_or_create_task_type(concept, "Concept", "#8D6E63", 1)
    tasks_service.get_or_create_task_type(modeling, "Texture", "#64B5F6", 2)
    tasks_service.get_or_create_task_type(modeling, "Modeling", "#78909C", 3)
    tasks_service.get_or_create_task_type(animation, "Setup", "#9CCC65", 4)
    tasks_service.get_or_create_task_type(concept, "Storyboard", "#43A047", 1,
                                          True)
    tasks_service.get_or_create_task_type(layout, "Layout", "#7CB342", 2, True)
    tasks_service.get_or_create_task_type(animation, "Animation", "#009688", 3,
                                          True)
    tasks_service.get_or_create_task_type(compositing, "Lighting", "#F9A825",
                                          4, True)
    tasks_service.get_or_create_task_type(fx, "FX", "#26C6DA", 5, True)
    tasks_service.get_or_create_task_type(compositing, "Render", "#F06292", 6,
                                          True)
    tasks_service.get_or_create_task_type(compositing, "Compositing",
                                          "#ff5252", 7, True)
    print("Task types initialized.")

    tasks_service.get_or_create_status("Todo", "todo", "#f5f5f5")
    tasks_service.get_or_create_status("Work In Progress", "wip", "#3273dc")
    tasks_service.get_or_create_status("Waiting For Approval",
                                       "wfa",
                                       "#ab26ff",
                                       is_reviewable=True)
    tasks_service.get_or_create_status("Retake",
                                       "retake",
                                       "#ff3860",
                                       is_reviewable=True)
    tasks_service.get_or_create_status("Done", "done", "#22d160", is_done=True)
    print("Task status initialized.")
Exemplo n.º 2
0
    def test_is_asset_ready(self):
        self.generate_fixture_department()
        self.generate_fixture_task_type()
        self.generate_fixture_task_status()
        self.generate_fixture_person()
        self.generate_fixture_assigner()
        self.task_type_compositing = tasks_service.get_or_create_task_type(
            self.department_animation.serialize(),
            "compositing",
            color="#FFFFFF",
            short_name="compo",
            for_entity="Shot",
        )
        self.task_type_layout_id = str(self.task_type_layout.id)
        self.task_type_animation_id = str(self.task_type_animation.id)
        self.task_type_compositing_id = self.task_type_compositing["id"]
        projects_service.create_project_task_type_link(
            self.project_id, self.task_type_layout_id, 1
        )
        projects_service.create_project_task_type_link(
            self.project_id, self.task_type_animation_id, 2
        )
        projects_service.create_project_task_type_link(
            self.project_id, self.task_type_compositing_id, 3
        )
        self.task_layout = self.generate_fixture_shot_task(
            task_type_id=self.task_type_layout_id
        )
        self.task_animation = self.generate_fixture_shot_task(
            task_type_id=self.task_type_animation_id
        )
        self.task_compositing = self.generate_fixture_shot_task(
            task_type_id=self.task_type_compositing_id
        )
        priority_map = breakdown_service._get_task_type_priority_map(
            self.project_id
        )
        self.assertEqual(priority_map[self.task_type_layout_id], 1)
        self.assertEqual(priority_map[self.task_type_animation_id], 2)
        self.assertEqual(priority_map[self.task_type_compositing_id], 3)
        asset = {"ready_for": str(self.task_type_animation.id)}
        self.assertTrue(
            breakdown_service._is_asset_ready(
                asset, self.task_layout, priority_map
            )
        )
        self.assertTrue(
            breakdown_service._is_asset_ready(
                asset, self.task_animation, priority_map
            )
        )
        self.assertFalse(
            breakdown_service._is_asset_ready(
                asset, self.task_compositing, priority_map
            )
        )

        self.shot_id = str(self.shot.id)
        self.sequence_id = str(self.sequence.id)
        self.asset_id = str(self.asset.id)
        self.asset_character_id = str(self.asset_character.id)
        new_casting = [
            {"asset_id": self.asset_id, "nb_occurences": 1},
            {"asset_id": self.asset_character_id, "nb_occurences": 3},
        ]
        breakdown_service.update_casting(self.shot_id, new_casting)
        asset = assets_service.get_asset_raw(self.asset_id)
        asset.update({"ready_for": self.task_type_animation_id})
        char = assets_service.get_asset_raw(self.asset_character_id)
        char.update({"ready_for": self.task_type_compositing_id})

        breakdown_service.refresh_casting_stats(asset.serialize())
        self.task_layout = tasks_service.get_task(self.task_layout.id)
        self.task_animation = tasks_service.get_task(self.task_animation.id)
        self.task_compositing = tasks_service.get_task(
            self.task_compositing.id
        )
        self.assertEqual(self.task_layout["nb_assets_ready"], 2)
        self.assertEqual(self.task_animation["nb_assets_ready"], 2)
        self.assertEqual(self.task_compositing["nb_assets_ready"], 1)
Exemplo n.º 3
0
def init_data():
    """
    Put the minimum required data into the database to start with it.
    """
    projects_service.get_open_status()
    projects_service.get_closed_status()
    print("Project status initialized.")

    assets_service.get_or_create_asset_type("Characters")
    assets_service.get_or_create_asset_type("Props")
    assets_service.get_or_create_asset_type("Environment")
    assets_service.get_or_create_asset_type("FX")
    print("Asset types initialized.")

    shots_service.get_episode_type()
    shots_service.get_sequence_type()
    shots_service.get_shot_type()
    print("Shot types initialized.")

    modeling = tasks_service.get_or_create_department("Modeling")
    animation = tasks_service.get_or_create_department("Animation")
    fx = tasks_service.get_or_create_department("FX")
    compositing = tasks_service.get_or_create_department("Compositing")
    concept = tasks_service.get_or_create_department("Concept")
    layout = tasks_service.get_or_create_department("Layout")

    tasks_service.get_or_create_task_type(concept, "Concept", "#8D6E63", 1)
    tasks_service.get_or_create_task_type(modeling, "Modeling", "#78909C", 2)
    tasks_service.get_or_create_task_type(modeling, "Shading", "#64B5F6", 3)
    tasks_service.get_or_create_task_type(animation, "Rigging", "#9CCC65", 4)

    tasks_service.get_or_create_task_type(
        concept,
        "Storyboard",
        "#43A047",
        priority=1,
        for_shots=True,
        for_entity="Shot",
    )
    tasks_service.get_or_create_task_type(
        layout,
        "Layout",
        "#7CB342",
        priority=2,
        for_shots=True,
        for_entity="Shot",
    )
    tasks_service.get_or_create_task_type(
        animation,
        "Animation",
        "#009688",
        priority=3,
        for_shots=True,
        for_entity="Shot",
    )
    tasks_service.get_or_create_task_type(
        compositing,
        "Lighting",
        "#F9A825",
        priority=4,
        for_shots=True,
        for_entity="Shot",
    )
    tasks_service.get_or_create_task_type(fx,
                                          "FX",
                                          "#26C6DA",
                                          priority=5,
                                          for_shots=True,
                                          for_entity="Shot")
    tasks_service.get_or_create_task_type(
        compositing,
        "Rendering",
        "#F06292",
        priority=6,
        for_shots=True,
        for_entity="Shot",
    )
    tasks_service.get_or_create_task_type(
        compositing,
        "Compositing",
        "#ff5252",
        priority=7,
        for_shots=True,
        for_entity="Shot",
    )
    print("Task types initialized.")

    tasks_service.get_or_create_status("Todo", "todo", "#f5f5f5")
    tasks_service.get_or_create_status("Work In Progress", "wip", "#3273dc")
    tasks_service.get_or_create_status("Waiting For Approval", "wfa",
                                       "#ab26ff")
    tasks_service.get_or_create_status("Retake",
                                       "retake",
                                       "#ff3860",
                                       is_retake=True)
    tasks_service.get_or_create_status("Done", "done", "#22d160", is_done=True)
    print("Task status initialized.")
Exemplo n.º 4
0
    def import_row(self, row):
        project_name = row["Project"]
        department_name = row["Department"]
        task_type_name = row["Task Type"]
        task_status_name = row["Task Status"]
        entity_type_name = row["Asset Type"]
        entity_name = row["Asset"]
        episode_name = row["Episode"]
        sequence_name = row["Sequence"]
        shot_name = row["Shot"]
        name = row["Name"]
        assigner_name = row["Assigner"]
        assignee_name = row["Assignee"]
        duration = int(row["Duration"]) * 3600
        estimation = int(row["Estimation"]) * 3600
        start_date = self.normalize_date(row["Start Date"])
        real_start_date = self.normalize_date(row["Real Start Date"])
        due_date = self.normalize_date(row["Due Date"])
        end_date = self.normalize_date(row["End Date"])

        self.add_to_cache_if_absent(self.task_statuses,
                                    tasks_service.get_or_create_status,
                                    task_status_name)
        task_status_id = self.get_id_from_cache(self.task_statuses,
                                                task_status_name)

        self.add_to_cache_if_absent(self.departments,
                                    tasks_service.get_or_create_department,
                                    department_name)
        department_id = self.get_id_from_cache(self.departments,
                                               department_name)

        task_type_key = "%s-%s" % (department_id, task_type_name)
        if task_type_key not in self.task_types:
            department = self.departments[department_name]
            self.task_types[task_type_key] = \
                tasks_service.get_or_create_task_type(
                    department,
                    task_type_name
                )

        task_type_id = self.get_id_from_cache(self.task_types, task_type_key)
        project_id = self.projects[project_name].id
        assigner_id = self.persons[assigner_name].id
        assignee = self.persons.get(assignee_name, None)

        if len(shot_name) > 0:
            episode_id = self.episodes[str(project_id) + episode_name]["id"]
            sequence_id = self.sequences[str(project_id) + str(episode_id) +
                                         sequence_name]["id"]
            entity_id = self.shots[str(project_id) + str(sequence_id) +
                                   shot_name]["id"]
        else:
            entity_type_id = self.entity_types[entity_type_name].id
            entity_id = self.entities[str(project_id) + str(entity_type_id) +
                                      entity_name].id

        task = Task.create(name=name,
                           project_id=project_id,
                           task_type_id=task_type_id,
                           entity_id=entity_id,
                           task_status_id=task_status_id,
                           assigner_id=assigner_id,
                           duration=duration,
                           estimation=estimation,
                           start_date=start_date,
                           end_date=end_date,
                           real_start_date=real_start_date,
                           due_date=due_date)
        if assignee is not None:
            task.assignees.append(assignee)
        task.save()

        return task