def import_entry(self, data): task = Task.get_by(shotgun_id=data["shotgun_id"]) if task is None: task = Task.get_by( name=data["name"], project_id=data["project_id"], task_type_id=data["task_type_id"], entity_id=data["entity_id"], ) if task is None: task = Task(**data) task.save() current_app.logger.info("Task created: %s" % task) else: existing_task = Task.get_by( name=data["name"], project_id=data["project_id"], task_type_id=data["task_type_id"], entity_id=data["entity_id"], ) if existing_task is not None: data.pop("name", None) data.pop("project_id", None) data.pop("task_type_id", None) data.pop("entity_id", None) task.update(data) tasks_service.clear_task_cache(str(task.id)) current_app.logger.info("Task updated: %s" % task) return task
def test_import_version(self): sg_version = { "code": "S01_Animation", "description": "description test", "id": 2, "user": { "id": 1, "name": "Jhon Doe", "type": "HumanUser" }, "entity": { "id": 1, "name": "SH01", "type": "Shot" }, "project": { "id": 1, "name": "Cosmos Landromat", "type": "Project" }, "sg_task": { "id": 1, "name": "Animation", "type": "Task" }, "sg_uploaded_movie": { "content_type": "video/mp4", "id": 1, "link_type": "upload", "name": "movie_new.mp4", "type": "Attachment", "url": "https://sg-media.amazonaws.com/9e73/movie_new.mp4" }, "type": "Version" } api_path = "/import/shotgun/versions" self.preview_files = self.post(api_path, [sg_version], 200) self.assertEqual(len(self.preview_files), 1) self.preview_files = self.get("data/preview-files") self.assertEqual(len(self.preview_files), 1) preview_file = self.preview_files[0] task = Task.get_by(shotgun_id=sg_version["sg_task"]["id"]) person = Person.get_by(shotgun_id=sg_version["user"]["id"]) self.assertEqual(preview_file["name"], sg_version["code"]) self.assertEqual(preview_file["source"], "Shotgun") self.assertEqual(preview_file["task_id"], str(task.id)) self.assertEqual(preview_file["name"], sg_version["code"]) self.assertEqual(preview_file["description"], sg_version["description"]) self.assertEqual(preview_file["shotgun_id"], sg_version["id"]) self.assertEqual(preview_file["uploaded_movie_url"], sg_version["sg_uploaded_movie"]["url"]) self.assertEqual(preview_file["uploaded_movie_url"], sg_version["sg_uploaded_movie"]["url"]) self.assertEqual(preview_file["person_id"], str(person.id))
def get_task_by_shotgun_id(shotgun_id): """ Get task matching given shotgun id as a dictionary. """ task = Task.get_by(shotgun_id=shotgun_id) if task is None: raise TaskNotFoundException return task.serialize()
def import_entry(self, data): task = Task.get_by(shotgun_id=data["shotgun_id"]) if task is None: task = Task.get_by( name=data["name"], project_id=data["project_id"], task_type_id=data["task_type_id"], entity_id=data["entity_id"] ) if task is None: task = Task(**data) task.save() current_app.logger.info("Task created: %s" % task) else: task.update(data) current_app.logger.info("Task updated: %s" % task) return task
def import_entry(self, data): task = Task.get_by(shotgun_id=data["shotgun_id"]) if task is None: task = Task(**data) task.save() current_app.logger.info("Task created: %s" % task) else: task.update(data) current_app.logger.info("Task updated: %s" % task) return task
def guess_task(entity, task_type, task_name): if entity is None: raise WrongPathFormatException("No asset or shot found in given path.") criterions = {"entity_id": entity.id, "task_type_id": task_type.id} if len(task_name) > 0: criterions["name"] = task_name task = Task.get_by(**criterions) if task is None: raise TaskNotFoundException else: return task
def extract_data(self, sg_note): task = Task.get_by(shotgun_id=sg_note["tasks"][0]["id"]) person_id = self.person_ids.get(sg_note["user"]["id"], None) date = datetime.datetime.strptime(sg_note["created_at"][:19], "%Y-%m-%dT%H:%M:%S") return { "text": sg_note["content"], "shotgun_id": sg_note["id"], "object_id": task.id, "object_type": "Task", "person_id": person_id, "created_at": date, }
def test_import_note(self): self.load_note() self.assertEqual(len(self.notes), 1) self.comments = self.get("data/comments") self.assertEqual(len(self.comments), 1) note = self.comments[0] task = Task.get_by(shotgun_id=self.sg_note["tasks"][0]["id"]) person = Person.get_by(shotgun_id=self.sg_note["user"]["id"]) self.assertEqual(note["text"], self.sg_note["content"]) self.assertEqual(note["object_type"], "Task") self.assertEqual(note["shotgun_id"], self.sg_note["id"]) self.assertEqual(note["object_id"], str(task.id)) self.assertEqual(note["person_id"], str(person.id)) self.assertEqual(note["created_at"][:19], self.sg_note["created_at"][:19])
def is_note_linked_to_task(self, sg_note): if len(sg_note["tasks"]) == 0: return False task = Task.get_by(shotgun_id=sg_note["tasks"][0]["id"]) return task is not None
def get_task_by_shotgun_id(shotgun_id): task = Task.get_by(shotgun_id=shotgun_id) if task is None: raise TaskNotFoundException return task.serialize()