delete nested book, book version items

This commit is contained in:
SvyatoslavArtymovych 2023-05-15 18:09:03 +03:00
parent df52c9ce63
commit 3137ada193
4 changed files with 49 additions and 1 deletions

View File

@ -2,8 +2,32 @@ from app import models as m
from app.logger import log
def delete_nested_book_entities(book: m.Book):
for version in book.versions:
version: m.BookVersion
version.is_deleted = True
log(log.INFO, "Delete version [%s]", version.id)
version.save(False)
delete_nested_version_entities(version)
def delete_nested_version_entities(book_version: m.BookVersion):
root_collection: m.Collection = book_version.root_collection
root_collection.is_deleted = True
log(log.INFO, "Delete root collection [%s]", root_collection.id)
root_collection.save(False)
for collection in root_collection.children:
collection: m.Collection
collection.is_deleted = True
log(log.INFO, "Delete collection [%s]", collection.id)
collection.save(False)
delete_nested_collection_entities(collection)
def delete_nested_collection_entities(collection: m.Collection):
collection.is_deleted = True
for section in collection.sections:
section: m.Section
section.is_deleted = True

View File

@ -15,6 +15,7 @@ from app.controllers import (
book_validator,
)
from app.controllers.delete_nested_book_entities import (
delete_nested_book_entities,
delete_nested_collection_entities,
delete_nested_section_entities,
delete_nested_interpretation_entities,
@ -133,6 +134,7 @@ def delete(book_id: int):
return redirect(url_for("book.my_library"))
book.is_deleted = True
delete_nested_book_entities(book)
log(log.INFO, "Book deleted: [%s]", book)
book.save()
flash("Success!", "success")

View File

@ -6,6 +6,7 @@ from app import models as m, db
from tests.utils import (
login,
logout,
check_if_nested_book_entities_is_deleted,
check_if_nested_collection_entities_is_deleted,
check_if_nested_section_entities_is_deleted,
check_if_nested_interpretation_entities_is_deleted,
@ -106,6 +107,7 @@ def test_create_edit_delete_book(client: FlaskClient):
assert b"Success!" in response.data
book = db.session.get(m.Book, book.id)
assert book.is_deleted == True
check_if_nested_book_entities_is_deleted(book)
def test_add_contributor(client: FlaskClient):

View File

@ -58,6 +58,26 @@ def create_test_book(owner_id: int, entity_id: int = randint(1, 100)):
).save()
def check_if_nested_book_entities_is_deleted(book: m.Book, is_deleted: bool = True):
for version in book.versions:
version: m.BookVersion
assert version.is_deleted == is_deleted
check_if_nested_version_entities_is_deleted(version)
def check_if_nested_version_entities_is_deleted(
book_version: m.BookVersion, is_deleted: bool = True
):
root_collection: m.Collection = book_version.root_collection
assert root_collection.is_deleted == is_deleted
for collection in root_collection.children:
collection: m.Collection
assert collection.is_deleted == is_deleted
check_if_nested_collection_entities_is_deleted(collection)
def check_if_nested_collection_entities_is_deleted(
collection: m.Collection, is_deleted: bool = True
):