def test_delete_news_for_comment(self): self.generate_fixture_comment() news_service.create_news_for_task_and_comment(self.task_dict, self.comment) news_service.delete_news_for_comment(self.comment["id"]) news_list = News.get_all() self.assertEqual(len(news_list), 0)
def _manage_subscriptions(task, comment, status_changed): 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 )
def test_get_last_news_for_project_with_dates(self): self.generate_fixture_comment() for i in range(1, 7): comment = comments_service.new_comment( self.task.id, self.task_status.id, self.user["id"], "comment %s" % i, ) news_service.create_news_for_task_and_comment( self.task_dict, comment, created_at=datetime.now() - timedelta(days=i), ) news_list = news_service.get_last_news_for_project( self.task_dict["project_id"] ) self.assertEqual(len(news_list["data"]), 6) date = (datetime.now() - timedelta(days=2)).strftime("%Y-%m-%d") news_list = news_service.get_last_news_for_project( self.task_dict["project_id"], after=date ) self.assertEqual(len(news_list["data"]), 2) news_list = news_service.get_last_news_for_project( self.task_dict["project_id"], before=date ) self.assertEqual(len(news_list["data"]), 4)
def test_create_news_for_task_and_comment(self): self.generate_fixture_comment() news_service.create_news_for_task_and_comment(self.task_dict, self.comment) news_list = News.get_all() self.assertEqual(len(news_list), 1) self.assertEqual(str(news_list[0].author_id), self.user["id"]) self.assertEqual(str(news_list[0].task_id), self.task_dict["id"]) self.assertEqual(str(news_list[0].comment_id), self.comment["id"])
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_last_news_for_project(self): self.generate_fixture_comment() for i in range(1, 81): comment = comments_service.new_comment( self.task.id, self.task_status.id, self.user["id"], "comment %s" % i, ) news = news_service.create_news_for_task_and_comment( self.task_dict, comment) news_list = self.get("/data/projects/%s/news" % self.task_dict["project_id"]) self.assertEqual(len(news_list["data"]), 50) news = news_list["data"][0] self.assertEqual(news["project_name"], "Cosmos Landromat") self.assertEqual(news["full_entity_name"], "E01 / S01 / P01") self.assertEqual(news["project_id"], self.task_dict["project_id"]) news_list = self.get("/data/projects/%s/news?page=2" % self.task_dict["project_id"]) self.assertEqual(len(news_list["data"]), 30) news = self.get("/data/projects/%s/news/%s" % (self.task_dict["project_id"], news["id"])) self.assertIsNotNone(news["created_at"])
def test_get_last_news_for_project(self): self.generate_fixture_comment() for i in range(1, 81): comment = comments_service.new_comment( self.task.id, self.task_status.id, self.user["id"], "comment %s" % i ) news = news_service.create_news_for_task_and_comment( self.task_dict, comment ) news_list = news_service.get_last_news_for_project( self.task_dict["project_id"] ) self.assertEqual(len(news_list), 50) news = news_list[0] self.assertEqual(news["project_name"], "Cosmos Landromat") self.assertEqual(news["full_entity_name"], "E01 / S01 / P01") self.assertEqual(news["project_id"], self.task_dict["project_id"]) news_list = news_service.get_last_news_for_project( self.task_dict["project_id"], page=2 ) self.assertEqual(len(news_list), 30) news_list = news_service.get_last_news_for_project( self.task_dict["project_id"], news_id=news["id"] ) self.assertEqual(len(news_list), 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