mirror of
				https://github.com/janeczku/calibre-web
				synced 2025-10-31 07:13:02 +00:00 
			
		
		
		
	Improved error handling for disapearing custom column linked to read status
This commit is contained in:
		| @@ -474,14 +474,14 @@ def update_table_settings(): | |||||||
|     return "" |     return "" | ||||||
|  |  | ||||||
| def check_valid_read_column(column): | 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) \ |         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(): |               .filter(and_(db.Custom_Columns.datatype == 'bool', db.Custom_Columns.mark_for_delete == 0)).all(): | ||||||
|             return False |             return False | ||||||
|     return True |     return True | ||||||
|  |  | ||||||
| def check_valid_restricted_column(column): | 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) \ |         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(): |               .filter(and_(db.Custom_Columns.datatype == 'text', db.Custom_Columns.mark_for_delete == 0)).all(): | ||||||
|             return False |             return False | ||||||
|   | |||||||
| @@ -22,7 +22,21 @@ $(function() { | |||||||
| }); | }); | ||||||
|  |  | ||||||
| $("#have_read_cb").on("change", 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('<div class="row-fluid text-center" style="margin-top: -20px;">' + | ||||||
|  |                         '<div id="flash_' + item.type + '" class="alert alert-' + item.type + '">' + item.message + '</div>' + | ||||||
|  |                         '</div>'); | ||||||
|  |                 }); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     }); | ||||||
| }); | }); | ||||||
|  |  | ||||||
| $(function() { | $(function() { | ||||||
|   | |||||||
							
								
								
									
										22
									
								
								cps/web.py
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								cps/web.py
									
									
									
									
									
								
							| @@ -185,10 +185,11 @@ def toggle_read(book_id): | |||||||
|                 calibre_db.session.commit() |                 calibre_db.session.commit() | ||||||
|         except (KeyError, AttributeError): |         except (KeyError, AttributeError): | ||||||
|             log.error(u"Custom Column No.%d is not exisiting in calibre database", config.config_read_column) |             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: |         except (OperationalError, InvalidRequestError) as e: | ||||||
|             calibre_db.session.rollback() |             calibre_db.session.rollback() | ||||||
|             log.error(u"Read status could not set: %e", e) |             log.error(u"Read status could not set: %e", e) | ||||||
|  |             return "Read status could not set: {}".format(e), 400 | ||||||
|     return "" |     return "" | ||||||
|  |  | ||||||
| @web.route("/ajax/togglearchived/<int:book_id>", methods=['POST']) | @web.route("/ajax/togglearchived/<int:book_id>", methods=['POST']) | ||||||
| @@ -1117,12 +1118,19 @@ def adv_search_ratings(q, rating_high, rating_low): | |||||||
| def adv_search_read_status(q, read_status): | def adv_search_read_status(q, read_status): | ||||||
|     if read_status: |     if read_status: | ||||||
|         if config.config_read_column: |         if config.config_read_column: | ||||||
|             if read_status == "True": |             try: | ||||||
|                 q = q.join(db.cc_classes[config.config_read_column], isouter=True) \ |                 if read_status == "True": | ||||||
|                     .filter(db.cc_classes[config.config_read_column].value == True) |                     q = q.join(db.cc_classes[config.config_read_column], isouter=True) \ | ||||||
|             else: |                         .filter(db.cc_classes[config.config_read_column].value == True) | ||||||
|                 q = q.join(db.cc_classes[config.config_read_column], isouter=True) \ |                 else: | ||||||
|                     .filter(coalesce(db.cc_classes[config.config_read_column].value, False) != True) |                     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: |         else: | ||||||
|             if read_status == "True": |             if read_status == "True": | ||||||
|                 q = q.join(ub.ReadBook, db.Books.id == ub.ReadBook.book_id, isouter=True) \ |                 q = q.join(ub.ReadBook, db.Books.id == ub.ReadBook.book_id, isouter=True) \ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Ozzieisaacs
					Ozzieisaacs