def test_create_asset_type_with_task_types(self): self.generate_fixture_department() self.department_id = self.department.id self.generate_fixture_task_type() task_types = [str(task_type.id) for task_type in TaskType.query.all()] task_types = [ str(self.task_type_concept.id), str(self.task_type_modeling.id), ] data = {"name": "FX", "task_types": task_types} self.asset_type = self.post("data/entity-types", data) self.assertIsNotNone(self.asset_type["id"]) self.assertEquals( set(self.asset_type["task_types"]), set(task_types), ) asset_types = self.get("data/entity-types") self.assertEqual(len(asset_types), 4) created_asset_type = EntityType.get(self.asset_type["id"]) self.assertEquals( set( str(task_type.id) for task_type in created_asset_type.task_types), set(task_types), )
def update_entity_preview(entity_id, preview_file_id): """ Update given entity main preview. If entity or preview is not found, it raises an exception. """ entity = Entity.get(entity_id) if entity is None: raise EntityNotFoundException preview_file = PreviewFile.get(preview_file_id) if preview_file is None: raise PreviewFileNotFoundException entity.update({"preview_file_id": preview_file.id}) events.emit( "preview-file:set-main", { "entity_id": entity_id, "preview_file_id": preview_file_id }, ) entity_type = EntityType.get(entity.entity_type_id) entity_type_name = "asset" if entity_type.name in ["Shot", "Scene", "Sequence", "Episode"]: entity_type_name = entity_type.name.lower() events.emit( "%s:update" % entity_type_name, {"%s_id" % entity_type_name: str(entity.id)}, ) return entity.serialize()
def task_to_review(task_id, person, comment, preview_path=""): task = get_task_raw(task_id) to_review_status = get_to_review_status() task_dict_before = task.serialize() task.update({"task_status_id": to_review_status["id"]}) task.save() project = Project.get(task.project_id) entity = Entity.get(task.entity_id) entity_type = EntityType.get(entity.entity_type_id) task_dict_after = task.serialize() task_dict_after["project"] = project.serialize() task_dict_after["entity"] = entity.serialize() task_dict_after["entity_type"] = entity_type.serialize() task_dict_after["person"] = person task_dict_after["comment"] = comment task_dict_after["preview_path"] = preview_path events.emit("task:to-review", { "task_before": task_dict_before, "task_after": task_dict_after }) return task_dict_after
def task_to_review(task_id, person, comment, preview_path=""): """ Change the task status to "waiting for approval" if it is not already the case. It emits a *task:to-review* event. Change the real start date time to now. """ task = get_task_raw(task_id) to_review_status = get_to_review_status() task_dict_before = task.serialize() task.update({"task_status_id": to_review_status["id"]}) task.save() project = Project.get(task.project_id) entity = Entity.get(task.entity_id) entity_type = EntityType.get(entity.entity_type_id) task_dict_after = task.serialize() task_dict_after["project"] = project.serialize() task_dict_after["entity"] = entity.serialize() task_dict_after["entity_type"] = entity_type.serialize() task_dict_after["person"] = person task_dict_after["comment"] = comment task_dict_after["preview_path"] = preview_path events.emit("task:to-review", { "task_before": task_dict_before, "task_after": task_dict_after }) return task_dict_after
def to_review_task(task, output_file_dict): to_review_status = get_to_review_status() task_dict_before = task.serialize() task.update({"task_status_id": to_review_status.id}) task.save() project = Project.get(task.project_id) entity = Entity.get(task.entity_id) entity_type = EntityType.get(entity.entity_type_id) person = Person.get(output_file_dict["person_id"]) task_dict_after = task.serialize() task_dict_after["output_file"] = output_file_dict task_dict_after["project"] = project.serialize() task_dict_after["entity"] = entity.serialize() task_dict_after["entity_type"] = entity_type.serialize() task_dict_after["person"] = person.serialize() events.emit("task:to-review", { "task_before": task_dict_before, "task_after": task_dict_after }) return task
def get_folder_from_asset_type(asset): if asset is not None: asset_type = EntityType.get(asset.entity_type_id) folder = asset_type.name else: raise MalformedFileTreeException("Given asset is null.") return folder
def get_asset_type_raw(asset_type_id): try: asset_type = EntityType.get(asset_type_id) except StatementError: raise AssetTypeNotFoundException if asset_type is None or not is_asset_type(asset_type): raise AssetTypeNotFoundException return asset_type
def get_asset_type_raw(asset_type_id): """ Return given asset type instance as active record. """ try: asset_type = EntityType.get(asset_type_id) except StatementError: raise AssetTypeNotFoundException if asset_type is None or not is_asset_type(asset_type): raise AssetTypeNotFoundException return asset_type
def task_to_review(task_id, person, comment, preview_path={}, change_status=True): """ Deprecated Change the task status to "waiting for approval" if it is not already the case. It emits a *task:to-review* event. """ task = get_task_raw(task_id) to_review_status = get_to_review_status() task_dict_before = task.serialize() if change_status: task.update({"task_status_id": to_review_status["id"]}) task.save() clear_task_cache(task_id) project = Project.get(task.project_id) entity = Entity.get(task.entity_id) entity_type = EntityType.get(entity.entity_type_id) task_dict_after = task.serialize() task_dict_after["project"] = project.serialize() task_dict_after["entity"] = entity.serialize() task_dict_after["entity_type"] = entity_type.serialize() task_dict_after["person"] = person task_dict_after["comment"] = comment task_dict_after["preview_path"] = preview_path events.emit( "task:to-review", { "task_id": task_id, "task_shotgun_id": task_dict_before["shotgun_id"], "entity_type_name": entity_type.name, "previous_task_status_id": task_dict_before["task_status_id"], "entity_shotgun_id": entity.shotgun_id, "project_shotgun_id": project.shotgun_id, "person_shotgun_id": person["shotgun_id"], "comment": comment, "preview_path": preview_path, "change_status": change_status, }, ) return task_dict_after
def get_full_entity_name(entity_id): """ Get full entity name whether it's an asset or a shot. If it's a shot the result is "Episode name / Sequence name / Shot name". If it's an asset the result is "Asset type name / Asset name". """ entity = Entity.get(entity_id) if shots_service.is_shot(entity.serialize()): sequence = Entity.get(entity.parent_id) if sequence.parent_id is None: return "%s / %s" % (sequence.name, entity.name) else: episode = Entity.get(sequence.parent_id) return "%s / %s / %s" % (episode.name, sequence.name, entity.name) else: asset_type = EntityType.get(entity.entity_type_id) name = "%s / %s" % (asset_type.name, entity.name) return name
def get_entity_type(entity_type_id): return EntityType.get(entity_type_id).serialize()