Improved error handling for disapearing custom column linked to visiblility restrictions
This commit is contained in:
		
							parent
							
								
									b97373bf37
								
							
						
					
					
						commit
						541c8c4b93
					
				| 
						 | 
					@ -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")
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user