def test_update_task(self): done_status = tasks_service.get_done_status() tasks_service.update_task(self.task.id, {"task_status_id": done_status["id"]}) self.assertEquals(str(self.task.task_status_id), done_status["id"]) self.assertIsNotNone(self.task.end_date) self.assertLess(self.task.end_date, datetime.datetime.now())
def test_get_todos(self): task_id = self.task.id shot_task_id = self.shot_task.id path = "data/user/tasks/" tasks = self.get(path) self.assertEquals(len(tasks), 0) self.assign_user(task_id) self.assign_user(shot_task_id) path = "data/user/tasks/" tasks = self.get(path) self.assertEquals(len(tasks), 2) tasks_service.update_task( shot_task_id, {"task_status_id": tasks_service.get_done_status()["id"]}) self.assign_user(task_id) self.assign_user(shot_task_id) path = "data/user/tasks/" tasks = self.get(path) self.assertEquals(len(tasks), 1)
def _manage_status_change(task_status, task, comment): status_changed = task_status["id"] != task["task_status_id"] new_data = { "task_status_id": task_status["id"], "last_comment_date": comment["created_at"], } if status_changed: if task_status["is_retake"]: retake_count = task["retake_count"] if retake_count is None or retake_count == "NoneType": retake_count = 0 new_data["retake_count"] = retake_count + 1 if task_status["is_done"]: new_data["end_date"] = datetime.datetime.now() else: new_data["end_date"] = None if (task_status["short_name"] == "wip" and task["real_start_date"] is None): new_data["real_start_date"] = datetime.datetime.now() tasks_service.update_task(task["id"], new_data) task.update(new_data) if status_changed: events.emit("task:status-changed", { "task_id": task["id"], "new_task_status_id": new_data["task_status_id"], "previous_task_status_id": task["task_status_id"], "person_id": comment["person_id"] }, project_id=task["project_id"]) return task, status_changed
def post(self, task_id): (task_status_id, comment, person_id) = self.get_arguments() task = tasks_service.get_task(task_id) if not permissions.has_manager_permissions(): user_service.check_assigned(task_id) task_status = tasks_service.get_task_status(task_status_id) if person_id: person = persons_service.get_person(person_id) else: person = persons_service.get_current_user() comment = tasks_service.create_comment(object_id=task_id, object_type="Task", task_status_id=task_status_id, person_id=person["id"], text=comment) status_changed = task_status_id != task["task_status_id"] tasks_service.update_task(task_id, {"task_status_id": task_status_id}) notifications_service.create_notifications_for_task_and_comment( task, comment, change=status_changed) comment["task_status"] = task_status comment["person"] = person events.emit("comment:new", {"id": comment["id"]}) return comment, 201
def test_get_todos(self): task_id = self.task.id shot_task_id = self.shot_task.id path = "data/user/tasks/" tasks = self.get(path) self.assertEqual(len(tasks), 0) self.assign_user(task_id) self.assign_user(shot_task_id) path = "data/user/tasks/" tasks = self.get(path) self.assertEqual(len(tasks), 2) tasks_service.update_task( shot_task_id, { "task_status_id": tasks_service.get_or_create_status( "Done", "done", "#22d160", is_done=True)["id"] }, ) path = "data/user/tasks/" tasks = self.get(path) self.assertEqual(len(tasks), 1)
def update_task_status(self, task_id): tasks_service.get_task(task_id) new_status_id = tasks_service.get_todo_status()["id"] comments = tasks_service.get_comments(task_id) if len(comments) > 0: new_status_id = comments[0]["task_status_id"] tasks_service.update_task(task_id, {"task_status_id": new_status_id})
def import_row(self, row, project_id, task_type_id, episode_id=None): key = slugify("%s%s" % (row["Parent"], row["Entity"])) if self.assets_map.get(key): entity_id = self.assets_map[key] elif self.shots_map.get(key): entity_id = self.shots_map[key] else: raise RowException("Entity not found") new_data = {} if row.get("Estimation") is not None: new_data["estimation"] = round( float(row["Estimation"]) * self.organisation.hours_by_day * 60) if row.get("Start date") is not None: new_data["start_date"] = date_helpers.get_date_from_string( row["Start date"]) if row.get("Due date") is not None: new_data["due_date"] = date_helpers.get_date_from_string( row["Due date"]) elif new_data.get("start_date") and new_data.get("estimation"): new_data["due_date"] = date_helpers.add_business_days_to_date( new_data["start_date"], float(row["Estimation"]) - 1) tasks_service.update_task(self.tasks_map[entity_id], new_data)
def test_get_done_tasks_for_person(self): self.task_id = self.task.id tasks = self.get("/data/persons/%s/done-tasks" % self.person.id) self.assertEqual(len(tasks), 0) done_status = tasks_service.get_done_status() tasks_service.update_task(self.task_id, {"task_status_id": done_status["id"]}) tasks = self.get("/data/persons/%s/done-tasks" % self.person.id) self.assertEquals(len(tasks), 1)
def post(self, task_id): (task_status_id, comment, person_id) = self.get_arguments() task = tasks_service.get_task(task_id) user_service.check_project_access(task["project_id"]) task_status = tasks_service.get_task_status(task_status_id) if person_id: person = persons_service.get_person(person_id) else: person = persons_service.get_current_user() comment = tasks_service.create_comment( object_id=task_id, object_type="Task", task_status_id=task_status_id, person_id=person["id"], text=comment, ) status_changed = task_status_id != task["task_status_id"] new_data = { "task_status_id": task_status_id, "last_comment_date": comment["created_at"], } if status_changed: if task_status["is_retake"]: retake_count = task["retake_count"] if retake_count is None or retake_count == "NoneType": retake_count = 0 new_data["retake_count"] = retake_count + 1 if task_status["is_done"]: new_data["end_date"] = datetime.datetime.now() else: new_data["end_date"] = None if (task_status["short_name"] == "wip" and task["real_start_date"] is None): new_data["real_start_date"] = datetime.datetime.now() tasks_service.update_task(task_id, new_data) task = tasks_service.get_task_with_relations(task_id) notifications_service.create_notifications_for_task_and_comment( task, comment, change=status_changed) news_service.create_news_for_task_and_comment(task, comment, change=status_changed) comment["task_status"] = task_status comment["person"] = person return comment, 201
def test_get_open_projects(self): projects = self.get("data/user/projects/open") self.assertEquals(len(projects), 0) tasks_service.update_task(self.task_id, {"assignees": [self.user]}) projects = self.get("data/user/projects/open") self.assertEquals(len(projects), 1) tasks_service.update_task(self.task_id, {"project_id": self.project_closed_id}) projects = self.get("data/user/projects/open") self.assertEquals(len(projects), 0)
def test_get_done_tasks_for_person(self): projects = [self.project.serialize()] tasks = tasks_service.get_person_done_tasks(self.user.id, projects) self.assertEqual(len(tasks), 0) tasks_service.assign_task(self.task.id, self.user.id) tasks = tasks_service.get_person_done_tasks(self.user.id, projects) self.assertEqual(len(tasks), 0) done_status = tasks_service.get_done_status() tasks_service.update_task(self.task.id, {"task_status_id": done_status["id"]}) tasks = tasks_service.get_person_done_tasks(self.user.id, projects) self.assertEqual(len(tasks), 1)
def test_get_done_tasks_for_person(self): self.generate_fixture_task() self.task_id = self.task.id tasks = self.get("/data/persons/%s/done-tasks" % self.person.id) self.assertEqual(len(tasks), 0) done_status = tasks_service.get_or_create_status("Done", "done", "#22d160", is_done=True) tasks_service.update_task(self.task_id, {"task_status_id": done_status["id"]}) tasks = self.get("/data/persons/%s/done-tasks" % self.person.id) self.assertEqual(len(tasks), 1)
def test_get_done_tasks(self): task_id = self.task.id path = "data/user/done-tasks/" tasks = self.get(path) self.assertEquals(len(tasks), 0) self.assign_user(task_id) path = "data/user/done-tasks/" tasks = self.get(path) self.assertEquals(len(tasks), 0) done_status = tasks_service.get_done_status() tasks_service.update_task(task_id, {"task_status_id": done_status["id"]}) path = "data/user/done-tasks/" tasks = self.get(path) self.assertEquals(len(tasks), 1)
def post(self, task_id): ( task_status_id, comment, person_id ) = self.get_arguments() task = tasks_service.get_task(task_id) user_service.check_project_access(task["project_id"]) task_status = tasks_service.get_task_status(task_status_id) if person_id: person = persons_service.get_person(person_id) else: person = persons_service.get_current_user() comment = tasks_service.create_comment( object_id=task_id, object_type="Task", task_status_id=task_status_id, person_id=person["id"], text=comment ) status_changed = task_status_id != task["task_status_id"] tasks_service.update_task( task_id, {"task_status_id": task_status_id} ) notifications_service.create_notifications_for_task_and_comment( task, comment, change=status_changed ) comment["task_status"] = task_status comment["person"] = person return comment, 201
def test_get_done_tasks(self): task_id = self.task.id path = "data/user/done-tasks/" tasks = self.get(path) self.assertEqual(len(tasks), 0) self.assign_user(task_id) path = "data/user/done-tasks/" tasks = self.get(path) self.assertEqual(len(tasks), 0) done_status = tasks_service.get_or_create_status("Done", "done", "#22d160", is_done=True) tasks_service.update_task(task_id, {"task_status_id": done_status["id"]}) path = "data/user/done-tasks/" tasks = self.get(path) self.assertEqual(len(tasks), 1)
def post(self, task_id): (task_status_id, comment, person_id, created_at, checklist) = self.get_arguments() task = tasks_service.get_task(task_id) user_service.check_project_access(task["project_id"]) user_service.check_entity_access(task["entity_id"]) task_status = tasks_service.get_task_status(task_status_id) if not permissions.has_manager_permissions(): person_id = None created_at = None if person_id: person = persons_service.get_person(person_id) else: person = persons_service.get_current_user() comment = tasks_service.create_comment(object_id=task_id, object_type="Task", files=request.files, person_id=person["id"], task_status_id=task_status_id, text=comment, checklist=checklist, created_at=created_at) status_changed = task_status_id != task["task_status_id"] new_data = { "task_status_id": task_status_id, "last_comment_date": comment["created_at"], } if status_changed: if task_status["is_retake"]: retake_count = task["retake_count"] if retake_count is None or retake_count == "NoneType": retake_count = 0 new_data["retake_count"] = retake_count + 1 if task_status["is_done"]: new_data["end_date"] = datetime.datetime.now() else: new_data["end_date"] = None if (task_status["short_name"] == "wip" and task["real_start_date"] is None): new_data["real_start_date"] = datetime.datetime.now() tasks_service.update_task(task_id, new_data) if status_changed: events.emit( "task:status-changed", { "task_id": task_id, "new_task_status_id": new_data["task_status_id"], "previous_task_status_id": task["task_status_id"] }) task = tasks_service.get_task_with_relations(task_id) notifications_service.create_notifications_for_task_and_comment( task, comment, change=status_changed) news_service.create_news_for_task_and_comment(task, comment, change=status_changed) comment["task_status"] = task_status comment["person"] = person return comment, 201