예제 #1
0
    def generate_fixture_task(self,
                              name="Master",
                              entity_id=None,
                              task_type_id=None):
        if entity_id is None:
            entity_id = self.asset.id

        if task_type_id is None:
            task_type_id = self.task_type.id

        start_date = fields.get_date_object("2017-02-20")
        due_date = fields.get_date_object("2017-02-28")
        real_start_date = fields.get_date_object("2017-02-22")
        self.task = Task.create(name=name,
                                project_id=self.project.id,
                                task_type_id=task_type_id,
                                task_status_id=self.task_status.id,
                                entity_id=entity_id,
                                assignees=[self.person],
                                assigner_id=self.assigner.id,
                                duration=50,
                                estimation=40,
                                start_date=start_date,
                                due_date=due_date,
                                real_start_date=real_start_date)
        self.task_id = self.task.id
        self.project.team.append(self.person)
        self.project.save()
        return self.task
예제 #2
0
def create_task(task_type, entity, name="main"):
    """
    Create a new task for given task type and entity.
    """
    task_status = get_todo_status()
    try:
        try:
            current_user_id = persons_service.get_current_user()["id"]
        except RuntimeError:
            current_user_id = None
        task = Task.create(
            name=name,
            duration=0,
            estimation=0,
            completion_rate=0,
            start_date=None,
            end_date=None,
            due_date=None,
            real_start_date=None,
            project_id=entity["project_id"],
            task_type_id=task_type["id"],
            task_status_id=task_status["id"],
            entity_id=entity["id"],
            assigner_id=current_user_id,
            assignees=[],
        )
        task_dict = _finalize_task_creation(task_type, task_status, task)
        return task_dict
    except IntegrityError:
        pass  # Tasks already exists, no need to create it.
    return None
예제 #3
0
파일: base.py 프로젝트: cube-creative/zou
 def generate_fixture_shot_task_standard(self):
     self.shot_task_standard = Task.create(
         name="Super animation",
         project_id=self.project_standard.id,
         task_type_id=self.task_type_animation.id,
         task_status_id=self.task_status.id,
         entity_id=self.shot_standard.id,
         assignees=[self.person],
         assigner_id=self.assigner.id)
예제 #4
0
파일: base.py 프로젝트: cube-creative/zou
 def generate_fixture_sequence_task(self, name="Master"):
     self.sequence_task = Task.create(
         name=name,
         project_id=self.project.id,
         task_type_id=self.task_type_animation.id,
         task_status_id=self.task_status.id,
         entity_id=self.sequence.id,
         assignees=[self.person],
         assigner_id=self.assigner.id,
     )
예제 #5
0
 def generate_fixture_scene_task(self, name="Master"):
     self.scene_task = Task.create(
         name=name,
         project_id=self.project.id,
         task_type_id=self.task_type_animation.id,
         task_status_id=self.task_status.id,
         entity_id=self.scene.id,
         assignees=[self.person],
         assigner_id=self.assigner.id,
     )
     self.project.team.append(self.person)
     self.project.save()
     return self.scene_task
예제 #6
0
def create_task(task_type, entity, name="main"):
    """
    Create a new task for given task type and entity.
    """
    task_status = get_todo_status()
    try:
        try:
            current_user_id = persons_service.get_current_user()["id"]
        except RuntimeError:
            current_user_id = None
        task = Task.create(
            name=name,
            duration=0,
            estimation=0,
            completion_rate=0,
            start_date=None,
            end_date=None,
            due_date=None,
            real_start_date=None,
            project_id=entity["project_id"],
            task_type_id=task_type["id"],
            task_status_id=task_status["id"],
            entity_id=entity["id"],
            assigner_id=current_user_id,
            assignees=[],
        )
        task_dict = task.serialize(relations=True)
        task_dict.update(
            {
                "task_status_id": task_status["id"],
                "task_status_name": task_status["name"],
                "task_status_short_name": task_status["short_name"],
                "task_status_color": task_status["color"],
                "task_type_id": task_type["id"],
                "task_type_name": task_type["name"],
                "task_type_color": task_type["color"],
                "task_type_priority": task_type["priority"],
            }
        )
        events.emit(
            "task:new",
            {"task_id": task.id},
            project_id=entity["project_id"]
        )
        return task_dict

    except IntegrityError:
        pass  # Tasks already exists, no need to create it.
예제 #7
0
파일: base.py 프로젝트: cgwire/zou
    def generate_fixture_edit_task(self, name="Edit", task_type_id=None):
        if task_type_id is None:
            task_type_id = self.task_type_edit.id

        self.edit_task = Task.create(
            name=name,
            project_id=self.project.id,
            task_type_id=task_type_id,
            task_status_id=self.task_status.id,
            entity_id=self.edit.id,
            assignees=[self.person],
            assigner_id=self.assigner.id,
        )
        self.project.team.append(self.person)
        self.project.save()
        return self.edit_task
예제 #8
0
파일: base.py 프로젝트: cube-creative/zou
 def generate_fixture_task_standard(self):
     start_date = fields.get_date_object("2017-02-20")
     due_date = fields.get_date_object("2017-02-28")
     real_start_date = fields.get_date_object("2017-02-22")
     self.task_standard = Task.create(name="Super modeling",
                                      project_id=self.project_standard.id,
                                      task_type_id=self.task_type.id,
                                      task_status_id=self.task_status.id,
                                      entity_id=self.asset_standard.id,
                                      assignees=[self.person],
                                      assigner_id=self.assigner.id,
                                      duration=50,
                                      estimation=40,
                                      start_date=start_date,
                                      due_date=due_date,
                                      real_start_date=real_start_date)
예제 #9
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