def remove_shot(shot_id, force=False): """ Remove given shot from database. If it has tasks linked to it, it marks the shot as canceled. Deletion can be forced. """ shot = get_shot_raw(shot_id) is_tasks_related = Task.query.filter_by(entity_id=shot_id).count() > 0 if is_tasks_related and not force: shot.update({"canceled": True}) clear_shot_cache(shot_id) events.emit("shot:update", {"shot_id": shot_id}) else: from zou.app.services import tasks_service tasks = Task.query.filter_by(entity_id=shot_id).all() for task in tasks: deletion_service.remove_task(task.id, force=True) tasks_service.clear_task_cache(str(task.id)) EntityVersion.delete_all_by(entity_id=shot_id) Subscription.delete_all_by(entity_id=shot_id) shot.delete() clear_shot_cache(shot_id) events.emit("shot:delete", {"shot_id": shot_id}) deleted_shot = shot.serialize(obj_type="Shot") return deleted_shot
def test_remove_task(self): self.working_file.delete() self.output_file.delete() deletion_service.remove_task(self.task_id) self.assertRaises( TaskNotFoundException, tasks_service.get_task, self.task_id )
def remove_asset(asset_id, force=False): asset = get_asset_raw(asset_id) is_tasks_related = Task.query.filter_by(entity_id=asset_id).count() > 0 if is_tasks_related and not force: asset.update({"canceled": True}) clear_asset_cache(str(asset_id)) events.emit( "asset:update", {"asset_id": asset_id}, project_id=str(asset.project_id), ) else: from zou.app.services import tasks_service tasks = Task.query.filter_by(entity_id=asset_id).all() for task in tasks: deletion_service.remove_task(task.id, force=True) tasks_service.clear_task_cache(str(task.id)) asset.delete() clear_asset_cache(str(asset_id)) events.emit( "asset:delete", {"asset_id": asset_id}, project_id=str(asset.project_id), ) deleted_asset = asset.serialize(obj_type="Asset") return deleted_asset
def remove_shot(shot_id, force=False): """ Remove given shot from database. If it has tasks linked to it, it marks the shot as canceled. Deletion can be forced. """ shot = get_shot_raw(shot_id) is_tasks_related = Task.query.filter_by(entity_id=shot_id).count() > 0 if is_tasks_related and not force: shot.update({"canceled": True}) else: tasks = Task.query.filter_by(entity_id=shot_id).all() for task in tasks: deletion_service.remove_task(task.id, force=True) subscriptions = Subscription.query.filter_by(entity_id=shot_id).all() for subscription in subscriptions: subscription.delete() shot.delete() deleted_shot = shot.serialize(obj_type="Shot") events.emit("shot:delete", { "shot_id": shot_id }) return deleted_shot
def delete(self, instance_id): """ Delete a model corresponding at given ID and return it as a JSON object. """ parser = reqparse.RequestParser() parser.add_argument("force", default=False, type=bool) args = parser.parse_args() instance = self.get_model_or_404(instance_id) try: instance_dict = instance.serialize() self.check_delete_permissions(instance_dict) deletion_service.remove_task(instance_id, force=args["force"]) events.emit( "%s:deletion" % self.model.__tablename__, {"%s_id" % self.model.__tablename__: instance.id} ) self.post_delete(instance_dict) except IntegrityError as exception: current_app.logger.error(str(exception)) return {"message": str(exception)}, 400 return {"deletion_success": True}, 204
def test_remove_task_force(self): tasks_service.create_comment(self.task.id, self.task_status.id, self.person.id, "first comment") TimeSpent.create(person_id=self.person.id, task_id=self.task.id, date=datetime.date(2017, 9, 23), duration=3600) deletion_service.remove_task(self.task_id, force=True) self.assertRaises(TaskNotFoundException, tasks_service.get_task, self.task_id)
def test_get_task(self): self.assertRaises(TaskNotFoundException, tasks_service.get_task, "wrong-id") task = tasks_service.get_task(self.task_id) self.assertEqual(str(self.task_id), task["id"]) self.output_file.delete() self.working_file.delete() deletion_service.remove_task(task["id"]) self.assertRaises(TaskNotFoundException, tasks_service.get_task, str(self.task_id))
def delete_func(self, asset): try: asset = assets_service.get_asset_by_shotgun_id(asset.shotgun_id) tasks = tasks_service.get_tasks_for_asset(asset["id"]) if self.is_working_files_linked(tasks): assets_service.cancel_asset(asset["id"]) else: for task in tasks: deletion_service.remove_task(task["id"]) assets_service.remove_asset(asset["id"]) return asset except AssetNotFoundException: return None
def remove_asset(asset_id, force=False): asset = get_asset_raw(asset_id) is_tasks_related = Task.query.filter_by(entity_id=asset_id).count() > 0 if is_tasks_related and not force: asset.update({"canceled": True}) else: tasks = Task.query.filter_by(entity_id=asset_id).all() for task in tasks: deletion_service.remove_task(task.id, force=True) asset.delete() deleted_asset = asset.serialize(obj_type="Asset") events.emit("asset:delete", {"asset_id": asset_id}) return deleted_asset
def delete(self, instance_id): """ Delete a model corresponding at given ID and return it as a JSON object. """ parser = reqparse.RequestParser() parser.add_argument("force", default=False, type=bool) args = parser.parse_args() instance = self.get_model_or_404(instance_id) try: instance_dict = instance.serialize() self.check_delete_permissions(instance_dict) deletion_service.remove_task(instance_id, force=args["force"]) tasks_service.clear_task_cache(instance_id) self.post_delete(instance_dict) except IntegrityError as exception: current_app.logger.error(str(exception), exc_info=1) return {"message": str(exception)}, 400 return "", 204
def remove_edit(edit_id, force=False): """ Remove given edit from database. If it has tasks linked to it, it marks the edit as canceled. Deletion can be forced. """ edit = get_edit_raw(edit_id) is_tasks_related = Task.query.filter_by(entity_id=edit_id).count() > 0 if is_tasks_related and not force: edit.update({"canceled": True}) clear_edit_cache(edit_id) events.emit( "edit:update", {"edit_id": edit_id}, project_id=str(edit.project_id), ) else: from zou.app.services import tasks_service tasks = Task.query.filter_by(entity_id=edit_id).all() for task in tasks: deletion_service.remove_task(task.id, force=True) tasks_service.clear_task_cache(str(task.id)) EntityVersion.delete_all_by(entity_id=edit_id) Subscription.delete_all_by(entity_id=edit_id) EntityLink.delete_all_by(entity_in_id=edit_id) edit.delete() clear_edit_cache(edit_id) events.emit( "edit:delete", {"edit_id": edit_id}, project_id=str(edit.project_id), ) deleted_edit = edit.serialize(obj_type="Edit") return deleted_edit
def delete_func(self, entity): deletion_service.remove_task(entity.id) tasks_service.clear_task_cache(str(entity.id))
def delete_func(self, entity): deletion_service.remove_task(entity.id)