def get_or_create_status( name, short_name="", color="#f5f5f5", is_done=False, is_retake=False ): """ Create a new task status if it doesn't exist. If it exists, it returns the status from database. """ task_status = TaskStatus.get_by(name=name) if task_status is None and len(short_name) > 0: task_status = TaskStatus.get_by(short_name=short_name) if task_status is None: task_status = TaskStatus.create( name=name, short_name=short_name or name.lower(), color=color, is_reviewable=True, is_done=is_done, is_retake=is_retake ) events.emit("task_status:new", { "task_status_id": task_status.id }) return task_status.serialize()
def get_or_create_status( name, short_name="", color="#f5f5f5", is_done=False, is_retake=False, is_feedback_request=False, is_default=None, ): """ Create a new task status if it doesn't exist. If it exists, it returns the status from database. """ if is_default: task_status = TaskStatus.get_by(is_default=is_default, ) else: task_status = TaskStatus.get_by(name=name) if task_status is None and len(short_name) > 0: task_status = TaskStatus.get_by(short_name=short_name) if task_status is None: task_status = TaskStatus.create( name=name, short_name=short_name or name.lower(), color=color, is_done=is_done, is_retake=is_retake, is_feedback_request=is_feedback_request, is_default=is_default, ) events.emit("task-status:new", {"task_status_id": task_status.id}) return task_status.serialize()
def test_import_task(self): self.load_task() self.assertEqual(len(self.tasks), 1) self.tasks = self.get("data/tasks") self.assertEqual(len(self.tasks), 1) task = self.tasks[0] task = tasks_service.get_task_with_relations(task["id"]) project = Project.get_by(name=self.sg_task["project"]["name"]) task_type = \ TaskType.get_by(name=self.sg_task["step"]["name"]) task_status = TaskStatus.get_by( short_name=self.sg_task["sg_status_list"]) assets = assets_service.get_assets( {"shotgun_id": self.sg_task["entity"]["id"]}) entity = assets[0] assigner = Person.get_by( last_name=self.sg_task["created_by"]["name"].split(" ")[1]) assignee = Person.get_by( last_name=self.sg_task["task_assignees"][0]["name"].split(" ")[1]) self.assertEqual(task["name"], self.sg_task["cached_display_name"]) self.assertEqual(task["duration"], self.sg_task["duration"]) self.assertEqual(task["shotgun_id"], self.sg_task["id"]) self.assertEqual(task["project_id"], str(project.id)) self.assertEqual(task["task_type_id"], str(task_type.id)) self.assertEqual(task["task_status_id"], str(task_status.id)) self.assertEqual(task["entity_id"], entity["id"]) self.assertEqual(task["assigner_id"], str(assigner.id)) self.assertEqual(task["assignees"][0], str(assignee.id))
def get_or_create_status(name, short_name="", color="#f5f5f5", is_reviewable=False, is_done=False): status = TaskStatus.get_by(name=name) if status is None and len(short_name) > 0: status = TaskStatus.get_by(short_name=short_name) if status is None: status = TaskStatus.create(name=name, short_name=short_name or name.lower(), color=color, is_reviewable=is_reviewable, is_done=is_done) return status.serialize()
def get_status(status_name, short_name=""): status = TaskStatus.get_by( name=app.config[status_name] ) if status is None: status = TaskStatus.get_by( short_name=short_name ) if status is None: status = TaskStatus( name=app.config[status_name], short_name=short_name, color="#FFFFFF" ) status.save() return status
def reset_task_data(task_id): clear_task_cache(task_id) task = Task.get(task_id) retake_count = 0 real_start_date = None last_comment_date = None end_date = None task_status_id = TaskStatus.get_by(short_name="todo").id comments = ( Comment.query.join(TaskStatus) .filter(Comment.object_id == task_id) .order_by(Comment.created_at) .add_columns( TaskStatus.is_retake, TaskStatus.is_done, TaskStatus.short_name ) .all() ) previous_is_retake = False for ( comment, task_status_is_retake, task_status_is_done, task_status_short_name, ) in comments: if task_status_is_retake and not previous_is_retake: retake_count += 1 previous_is_retake = task_status_is_retake if task_status_short_name.lower() == "wip" and real_start_date is None: real_start_date = comment.created_at if task_status_is_done: end_date = comment.created_at else: end_date = None task_status_id = comment.task_status_id last_comment_date = comment.created_at duration = 0 time_spents = TimeSpent.get_all_by(task_id=task.id) for time_spent in time_spents: duration += time_spent.duration task.update( { "duration": duration, "retake_count": retake_count, "real_start_date": real_start_date, "last_comment_date": last_comment_date, "end_date": end_date, "task_status_id": task_status_id, } ) project_id = str(task.project_id) events.emit("task:update", {"task_id": task.id}, project_id) return task.serialize()
def get_or_create_task_status(name): task_status = TaskStatus.get_by(name=name) if task_status is None: task_status = TaskStatus( name=name, short_name=name, color="#000000" ) task_status.save() return task_status
def get_or_create_status( name, short_name="", color="#f5f5f5", is_reviewable=False, is_done=False ): """ Create a new task status if it doesn't exist. If it exists, it returns the status from database. """ status = TaskStatus.get_by(name=name) if status is None and len(short_name) > 0: status = TaskStatus.get_by(short_name=short_name) if status is None: status = TaskStatus.create( name=name, short_name=short_name or name.lower(), color=color, is_reviewable=is_reviewable, is_done=is_done ) return status.serialize()
def post(self, file_id): ( task_status_id, # NOT USED CURRENTLY comment, person_id, created_at, checklist) = self.get_arguments() output_file = files_service.get_output_file(file_id) # TODO: test and maybe check_asset_access if output_file.get("entity_id"): instance = entities_service.get_entity(output_file["entity_id"]) elif output_file.get("asset_instance_id"): instance = assets_service.get_asset_instance( output_file["asset_instance_id"]) user_service.check_project_access(instance["project_id"]) # TODO: improve this task_status = TaskStatus.get_by(short_name="wip") if not task_status: print("no task status") return None, 404 task_status_id = 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=file_id, object_type="OutputFile", files=request.files, person_id=person["id"], task_status_id=task_status_id, text=comment, checklist=checklist, created_at=created_at) comment["task_status"] = task_status.serialize() comment["person"] = person return comment, 201
def get_existing_status(self, data): task_status = TaskStatus.get_by(shotgun_id=data["shotgun_id"]) if task_status is None: task_status = TaskStatus.get_by(short_name=data["short_name"]) return task_status
def pre_update(self, instance_dict, data): if data.get("is_default", False): status = TaskStatus.get_by(is_default=True) if status: status.update({"is_default": False}) return instance_dict
def check_creation_integrity(self, data): if data.get("is_default", False): status = TaskStatus.get_by(is_default=True) if status: status.update({"is_default": False}) return data