reword BUG-42 to be more specific, BUG-41 allowing duplicate series links fixed
This commit is contained in:
72
main.py
72
main.py
@@ -579,6 +579,36 @@ def RemoveDuplicateAuthorInForm( request ):
|
||||
message="Removed duplicate Author!!!"
|
||||
return ret, message
|
||||
|
||||
################################################################################
|
||||
# Go through request.form, find series and remove any that are duplicates as
|
||||
# that is not allowed / DB integrity issue. This just sets a message that
|
||||
# will allow the book to be create/saved still, but the duplicate series will
|
||||
# be removed
|
||||
def RemoveDuplicateSeriesInForm( book, request ):
|
||||
processed=[]
|
||||
message=""
|
||||
|
||||
cnt=1
|
||||
while f'bsl-book_id-{cnt}' in request.form:
|
||||
print( f"cnt={cnt}, found series id = {request.form[f'bsl-series_id-{cnt}']} " )
|
||||
if request.form[ f"bsl-series_id-{cnt}"] not in processed:
|
||||
if book.IsParent():
|
||||
newbsl=Book_Series_Link( book_id=book.id, series_id=request.form[f'bsl-series_id-{cnt}'] )
|
||||
else:
|
||||
newbsl=Book_Series_Link( book_id=book.id, series_id=request.form[f'bsl-series_id-{cnt}'], book_num=request.form[f'bsl-book_num-{cnt}'] )
|
||||
|
||||
# add the contains (null for book_num) bsl for the parent book
|
||||
if book.IsChild():
|
||||
parent_bsl=Book_Series_Link( book_id=book.parent[0].id, series_id=request.form[f'bsl-series_id-{cnt}'] )
|
||||
db.session.add(parent_bsl)
|
||||
|
||||
db.session.add(newbsl)
|
||||
processed.append( request.form[ f"bsl-series_id-{cnt}"] )
|
||||
else:
|
||||
message="Removed duplicate Series!!!"
|
||||
cnt += 1
|
||||
db.session.commit()
|
||||
return message
|
||||
|
||||
################################################################################
|
||||
# /book -> GET/POST -> creates a new book and when created, takes you back to
|
||||
@@ -656,20 +686,13 @@ def new_book():
|
||||
newbsl=Book_Series_Link( book_id=book.id, series_id=s.series_id, book_num=max_bn+1 )
|
||||
db.session.add(newbsl)
|
||||
db.session.commit()
|
||||
message=RemoveDuplicateSeriesInForm( book, request )
|
||||
if message == "":
|
||||
st.SetMessage( "Created new Book ({})".format(book.title) )
|
||||
else:
|
||||
st.SetAlert("warning")
|
||||
st.SetMessage( f"Created new Book ({book.title})<br>BUT {message}" )
|
||||
|
||||
cnt=1
|
||||
for field in request.form:
|
||||
if 'bsl-book_id-' in field and field != 'bsl-book_id-NUM':
|
||||
cnt=int(re.findall( '\d+', field )[0])
|
||||
newbsl=Book_Series_Link( book_id=book.id, series_id=request.form[ f"bsl-series_id-{cnt}"], book_num=request.form[ f"bsl-book_num-{cnt}"] )
|
||||
db.session.add(newbsl)
|
||||
db.session.commit()
|
||||
cnt=cnt+1
|
||||
return redirect( '/book/{}'.format(book.id) )
|
||||
else:
|
||||
alert="danger"
|
||||
@@ -815,22 +838,23 @@ def book(id):
|
||||
if book.IsChild():
|
||||
Book_Series_Link.query.filter(Book_Series_Link.book_id == book.parent[0].id ).delete()
|
||||
|
||||
cnt=1
|
||||
for field in request.form:
|
||||
if 'bsl-book_id-' in field and field != 'bsl-book_id-NUM':
|
||||
cnt=int(re.findall( '\d+', field )[0])
|
||||
if book.IsParent():
|
||||
newbsl=Book_Series_Link( book_id=request.form[f'bsl-book_id-{cnt}'],
|
||||
series_id=request.form[f'bsl-series_id-{cnt}'] )
|
||||
else:
|
||||
newbsl=Book_Series_Link( book_id=request.form[f'bsl-book_id-{cnt}'],
|
||||
series_id=request.form[f'bsl-series_id-{cnt}'],
|
||||
book_num=request.form[f'bsl-book_num-{cnt}'] )
|
||||
# add the contains (null for book_num) bsl for the parent book
|
||||
if book.IsChild():
|
||||
parent_bsl=Book_Series_Link( book_id=book.parent[0].id, series_id=request.form[f'bsl-series_id-{cnt}'] )
|
||||
db.session.add(parent_bsl)
|
||||
db.session.add(newbsl)
|
||||
# cnt=1
|
||||
# for field in request.form:
|
||||
# if 'bsl-book_id-' in field and field != 'bsl-book_id-NUM':
|
||||
# cnt=int(re.findall( '\d+', field )[0])
|
||||
# if book.IsParent():
|
||||
# newbsl=Book_Series_Link( book_id=request.form[f'bsl-book_id-{cnt}'],
|
||||
# series_id=request.form[f'bsl-series_id-{cnt}'] )
|
||||
# else:
|
||||
# newbsl=Book_Series_Link( book_id=request.form[f'bsl-book_id-{cnt}'],
|
||||
# series_id=request.form[f'bsl-series_id-{cnt}'],
|
||||
# book_num=request.form[f'bsl-book_num-{cnt}'] )
|
||||
# # add the contains (null for book_num) bsl for the parent book
|
||||
# if book.IsChild():
|
||||
# parent_bsl=Book_Series_Link( book_id=book.parent[0].id, series_id=request.form[f'bsl-series_id-{cnt}'] )
|
||||
# db.session.add(parent_bsl)
|
||||
# db.session.add(newbsl)
|
||||
message=RemoveDuplicateSeriesInForm( book, request )
|
||||
db.session.commit()
|
||||
|
||||
# reset rating on this/these series as the book has changed (and maybe the rating has changed)
|
||||
|
||||
Reference in New Issue
Block a user