diff --git a/cps/admin.py b/cps/admin.py
index fb01e24e..36599d61 100644
--- a/cps/admin.py
+++ b/cps/admin.py
@@ -474,14 +474,14 @@ def update_table_settings():
return ""
def check_valid_read_column(column):
- if column is not "0":
+ if column != "0":
if not calibre_db.session.query(db.Custom_Columns).filter(db.Custom_Columns.id == column) \
.filter(and_(db.Custom_Columns.datatype == 'bool', db.Custom_Columns.mark_for_delete == 0)).all():
return False
return True
def check_valid_restricted_column(column):
- if column is not "0":
+ if column != "0":
if not calibre_db.session.query(db.Custom_Columns).filter(db.Custom_Columns.id == column) \
.filter(and_(db.Custom_Columns.datatype == 'text', db.Custom_Columns.mark_for_delete == 0)).all():
return False
diff --git a/cps/static/js/details.js b/cps/static/js/details.js
index 395518cb..81c1a395 100644
--- a/cps/static/js/details.js
+++ b/cps/static/js/details.js
@@ -22,7 +22,21 @@ $(function() {
});
$("#have_read_cb").on("change", function() {
- $(this).closest("form").submit();
+ $.post({
+ url: this.closest("form").action,
+ error: function(response) {
+ var data = [{type:"danger", message:response.responseText}]
+ $("#flash_success").remove();
+ $("#flash_danger").remove();
+ if (!jQuery.isEmptyObject(data)) {
+ data.forEach(function (item) {
+ $(".navbar").after('
' +
+ '
' + item.message + '
' +
+ '
');
+ });
+ }
+ }
+ });
});
$(function() {
diff --git a/cps/web.py b/cps/web.py
index 4203a812..0f45d0fe 100644
--- a/cps/web.py
+++ b/cps/web.py
@@ -185,10 +185,11 @@ def toggle_read(book_id):
calibre_db.session.commit()
except (KeyError, AttributeError):
log.error(u"Custom Column No.%d is not exisiting in calibre database", config.config_read_column)
+ return "Custom Column No.{} is not exisiting in calibre database".format(config.config_read_column), 400
except (OperationalError, InvalidRequestError) as e:
calibre_db.session.rollback()
log.error(u"Read status could not set: %e", e)
-
+ return "Read status could not set: {}".format(e), 400
return ""
@web.route("/ajax/togglearchived/", methods=['POST'])
@@ -1117,12 +1118,19 @@ def adv_search_ratings(q, rating_high, rating_low):
def adv_search_read_status(q, read_status):
if read_status:
if config.config_read_column:
- if read_status == "True":
- q = q.join(db.cc_classes[config.config_read_column], isouter=True) \
- .filter(db.cc_classes[config.config_read_column].value == True)
- else:
- q = q.join(db.cc_classes[config.config_read_column], isouter=True) \
- .filter(coalesce(db.cc_classes[config.config_read_column].value, False) != True)
+ try:
+ if read_status == "True":
+ q = q.join(db.cc_classes[config.config_read_column], isouter=True) \
+ .filter(db.cc_classes[config.config_read_column].value == True)
+ else:
+ q = q.join(db.cc_classes[config.config_read_column], isouter=True) \
+ .filter(coalesce(db.cc_classes[config.config_read_column].value, False) != True)
+ except (KeyError, AttributeError):
+ log.error(u"Custom Column No.%d is not exisiting in calibre database", config.config_read_column)
+ flash(_("Custom Column No.%(column)d is not existing in calibre database",
+ column=config.config_read_column),
+ category="error")
+ return q
else:
if read_status == "True":
q = q.join(ub.ReadBook, db.Books.id == ub.ReadBook.book_id, isouter=True) \