diff --git a/main.py b/main.py
index 9620cc7..c934e62 100644
--- a/main.py
+++ b/main.py
@@ -1,5 +1,6 @@
from flask import Flask, render_template, request, redirect
from flask_sqlalchemy import SQLAlchemy
+from sqlalchemy.exc import SQLAlchemyError
from flask_marshmallow import Marshmallow
from flask_bootstrap import Bootstrap
from wtforms import SubmitField, StringField, HiddenField, SelectField, IntegerField, TextAreaField, validators
@@ -416,14 +417,28 @@ def book(id):
st.SetMessage( "This is a parent book, cannot delete it without deleting sub books first" )
return redirect( '/book/{}'.format(book.id) )
else:
+ st.SetAlert("warning")
st.SetMessage("WARNING: Deleting being tested at present.
")
st.AppendMessage("Deleted {}".format(book.title) )
pid = 0
if len(book.parent) > 0:
pid = book.parent[0].id
- db.session.delete(book)
- db.session.commit()
- st.SetAlert("warning")
+ try:
+ db.session.delete(book)
+ db.session.commit()
+ except SQLAlchemyError as e:
+ st.SetAlert( "danger" )
+ print("actual sql alchemy error")
+ st.SetMessage( e.orig )
+ return redirect( '/book/{}'.format(id) )
+ except Exception as e:
+ st.SetAlert( "danger" )
+ print("generic error")
+ if 'Dependency rule tried to blank-out primary key':
+ st.SetMessage( "Failed to delete book: The book has a link to an another table (probably a series) -- {} ".format( str(e) ) )
+ else:
+ st.SetMessage( "Failed to delete book:nbsp; {} ".format( str(e) ) )
+ return redirect( '/book/{}'.format(id) )
if pid > 0:
return redirect( '/book/{}'.format(pid) )
else: