mirror of
				https://github.com/janeczku/calibre-web
				synced 2025-10-31 15:23:02 +00:00 
			
		
		
		
	Improved error handling for disapearing custom column linked to visiblility restrictions
This commit is contained in:
		| @@ -749,10 +749,10 @@ def add_restriction(res_type, user_id): | |||||||
|             usr = current_user |             usr = current_user | ||||||
|         if 'submit_allow' in element: |         if 'submit_allow' in element: | ||||||
|             usr.allowed_tags = restriction_addition(element, usr.list_allowed_tags) |             usr.allowed_tags = restriction_addition(element, usr.list_allowed_tags) | ||||||
|             ub.session_commit("Changed allowed tags of user {} to {}".format(usr.name, usr.list_allowed_tags)) |             ub.session_commit("Changed allowed tags of user {} to {}".format(usr.name, usr.list_allowed_tags())) | ||||||
|         elif 'submit_deny' in element: |         elif 'submit_deny' in element: | ||||||
|             usr.denied_tags = restriction_addition(element, usr.list_denied_tags) |             usr.denied_tags = restriction_addition(element, usr.list_denied_tags) | ||||||
|             ub.session_commit("Changed denied tags of user {} to {}".format(usr.name, usr.list_denied_tags)) |             ub.session_commit("Changed denied tags of user {} to {}".format(usr.name, usr.list_denied_tags())) | ||||||
|     if res_type == 3:  # CustomC per user |     if res_type == 3:  # CustomC per user | ||||||
|         if isinstance(user_id, int): |         if isinstance(user_id, int): | ||||||
|             usr = ub.session.query(ub.User).filter(ub.User.id == int(user_id)).first() |             usr = ub.session.query(ub.User).filter(ub.User.id == int(user_id)).first() | ||||||
| @@ -761,11 +761,11 @@ def add_restriction(res_type, user_id): | |||||||
|         if 'submit_allow' in element: |         if 'submit_allow' in element: | ||||||
|             usr.allowed_column_value = restriction_addition(element, usr.list_allowed_column_values) |             usr.allowed_column_value = restriction_addition(element, usr.list_allowed_column_values) | ||||||
|             ub.session_commit("Changed allowed columns of user {} to {}".format(usr.name, |             ub.session_commit("Changed allowed columns of user {} to {}".format(usr.name, | ||||||
|                                                                                 usr.list_allowed_column_values)) |                                                                                 usr.list_allowed_column_values())) | ||||||
|         elif 'submit_deny' in element: |         elif 'submit_deny' in element: | ||||||
|             usr.denied_column_value = restriction_addition(element, usr.list_denied_column_values) |             usr.denied_column_value = restriction_addition(element, usr.list_denied_column_values) | ||||||
|             ub.session_commit("Changed denied columns of user {} to {}".format(usr.name, |             ub.session_commit("Changed denied columns of user {} to {}".format(usr.name, | ||||||
|                                                                                usr.list_denied_column_values)) |                                                                                usr.list_denied_column_values())) | ||||||
|     return "" |     return "" | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										31
									
								
								cps/db.py
									
									
									
									
									
								
							
							
						
						
									
										31
									
								
								cps/db.py
									
									
									
									
									
								
							| @@ -44,6 +44,7 @@ from flask_login import current_user | |||||||
| from babel import Locale as LC | from babel import Locale as LC | ||||||
| from babel.core import UnknownLocaleError | from babel.core import UnknownLocaleError | ||||||
| from flask_babel import gettext as _ | from flask_babel import gettext as _ | ||||||
|  | from flask import flash | ||||||
|  |  | ||||||
| from . import logger, ub, isoLanguages | from . import logger, ub, isoLanguages | ||||||
| from .pagination import Pagination | from .pagination import Pagination | ||||||
| @@ -122,7 +123,7 @@ class Identifiers(Base): | |||||||
|         elif format_type == "goodreads": |         elif format_type == "goodreads": | ||||||
|             return u"Goodreads" |             return u"Goodreads" | ||||||
|         elif format_type == "babelio": |         elif format_type == "babelio": | ||||||
|             return u"Babelio"         |             return u"Babelio" | ||||||
|         elif format_type == "google": |         elif format_type == "google": | ||||||
|             return u"Google Books" |             return u"Google Books" | ||||||
|         elif format_type == "kobo": |         elif format_type == "kobo": | ||||||
| @@ -151,7 +152,7 @@ class Identifiers(Base): | |||||||
|         elif format_type == "goodreads": |         elif format_type == "goodreads": | ||||||
|             return u"https://www.goodreads.com/book/show/{0}".format(self.val) |             return u"https://www.goodreads.com/book/show/{0}".format(self.val) | ||||||
|         elif format_type == "babelio": |         elif format_type == "babelio": | ||||||
|             return u"https://www.babelio.com/livres/titre/{0}".format(self.val)         |             return u"https://www.babelio.com/livres/titre/{0}".format(self.val) | ||||||
|         elif format_type == "douban": |         elif format_type == "douban": | ||||||
|             return u"https://book.douban.com/subject/{0}".format(self.val) |             return u"https://book.douban.com/subject/{0}".format(self.val) | ||||||
|         elif format_type == "google": |         elif format_type == "google": | ||||||
| @@ -606,14 +607,24 @@ class CalibreDB(): | |||||||
|         neg_content_tags_filter = false() if negtags_list == [''] else Books.tags.any(Tags.name.in_(negtags_list)) |         neg_content_tags_filter = false() if negtags_list == [''] else Books.tags.any(Tags.name.in_(negtags_list)) | ||||||
|         pos_content_tags_filter = true() if postags_list == [''] else Books.tags.any(Tags.name.in_(postags_list)) |         pos_content_tags_filter = true() if postags_list == [''] else Books.tags.any(Tags.name.in_(postags_list)) | ||||||
|         if self.config.config_restricted_column: |         if self.config.config_restricted_column: | ||||||
|             pos_cc_list = current_user.allowed_column_value.split(',') |             try: | ||||||
|             pos_content_cc_filter = true() if pos_cc_list == [''] else \ |                 pos_cc_list = current_user.allowed_column_value.split(',') | ||||||
|                 getattr(Books, 'custom_column_' + str(self.config.config_restricted_column)). \ |                 pos_content_cc_filter = true() if pos_cc_list == [''] else \ | ||||||
|                     any(cc_classes[self.config.config_restricted_column].value.in_(pos_cc_list)) |                     getattr(Books, 'custom_column_' + str(self.config.config_restricted_column)). \ | ||||||
|             neg_cc_list = current_user.denied_column_value.split(',') |                         any(cc_classes[self.config.config_restricted_column].value.in_(pos_cc_list)) | ||||||
|             neg_content_cc_filter = false() if neg_cc_list == [''] else \ |                 neg_cc_list = current_user.denied_column_value.split(',') | ||||||
|                 getattr(Books, 'custom_column_' + str(self.config.config_restricted_column)). \ |                 neg_content_cc_filter = false() if neg_cc_list == [''] else \ | ||||||
|                     any(cc_classes[self.config.config_restricted_column].value.in_(neg_cc_list)) |                     getattr(Books, 'custom_column_' + str(self.config.config_restricted_column)). \ | ||||||
|  |                         any(cc_classes[self.config.config_restricted_column].value.in_(neg_cc_list)) | ||||||
|  |             except (KeyError, AttributeError): | ||||||
|  |                 pos_content_cc_filter = false() | ||||||
|  |                 neg_content_cc_filter = true() | ||||||
|  |                 log.error(u"Custom Column No.%d is not existing in calibre database", | ||||||
|  |                           self.config.config_restricted_column) | ||||||
|  |                 flash(_("Custom Column No.%(column)d is not existing in calibre database", | ||||||
|  |                         column=self.config.config_restricted_column), | ||||||
|  |                       category="error") | ||||||
|  |  | ||||||
|         else: |         else: | ||||||
|             pos_content_cc_filter = true() |             pos_content_cc_filter = true() | ||||||
|             neg_content_cc_filter = false() |             neg_content_cc_filter = false() | ||||||
|   | |||||||
| @@ -184,8 +184,8 @@ def toggle_read(book_id): | |||||||
|                 calibre_db.session.add(new_cc) |                 calibre_db.session.add(new_cc) | ||||||
|                 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 existing in calibre database", config.config_read_column) | ||||||
|             return "Custom Column No.{} is not exisiting in calibre database".format(config.config_read_column), 400 |             return "Custom Column No.{} is not existing 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) | ||||||
| @@ -1126,7 +1126,7 @@ def adv_search_read_status(q, read_status): | |||||||
|                     q = q.join(db.cc_classes[config.config_read_column], isouter=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) |                         .filter(coalesce(db.cc_classes[config.config_read_column].value, False) != True) | ||||||
|             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 existing in calibre database", config.config_read_column) | ||||||
|                 flash(_("Custom Column No.%(column)d is not existing in calibre database", |                 flash(_("Custom Column No.%(column)d is not existing in calibre database", | ||||||
|                         column=config.config_read_column), |                         column=config.config_read_column), | ||||||
|                       category="error") |                       category="error") | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Ozzieisaacs
					Ozzieisaacs