mirror of https://github.com/logos-co/open-law.git
delete nested book, book version items
This commit is contained in:
parent
df52c9ce63
commit
3137ada193
|
@ -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
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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
|
||||
):
|
||||
|
|
Loading…
Reference in New Issue