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 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