示例#1
0
    def common_filters(self, allow_show_archived=False):
        if not allow_show_archived:
            archived_books = (
                ub.session.query(ub.ArchivedBook)
                    .filter(ub.ArchivedBook.user_id == int(current_user.id))
                    .filter(ub.ArchivedBook.is_archived == True)
                    .all()
            )
            archived_book_ids = [archived_book.book_id for archived_book in archived_books]
            archived_filter = Books.id.notin_(archived_book_ids)
        else:
            archived_filter = true()

        if current_user.filter_language() != "all":
            lang_filter = Books.languages.any(Languages.lang_code == current_user.filter_language())
        else:
            lang_filter = true()
        negtags_list = current_user.list_denied_tags()
        postags_list = current_user.list_allowed_tags()
        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))
        if self.config.config_restricted_column:
            pos_cc_list = current_user.allowed_column_value.split(',')
            pos_content_cc_filter = true() if pos_cc_list == [''] else \
                getattr(Books, 'custom_column_' + str(self.config.config_restricted_column)). \
                    any(cc_classes[self.config.config_restricted_column].value.in_(pos_cc_list))
            neg_cc_list = current_user.denied_column_value.split(',')
            neg_content_cc_filter = false() if neg_cc_list == [''] else \
                getattr(Books, 'custom_column_' + str(self.config.config_restricted_column)). \
                    any(cc_classes[self.config.config_restricted_column].value.in_(neg_cc_list))
        else:
            pos_content_cc_filter = true()
            neg_content_cc_filter = false()
        return and_(lang_filter, pos_content_tags_filter, ~neg_content_tags_filter,
                    pos_content_cc_filter, ~neg_content_cc_filter, archived_filter)
示例#2
0
def common_filters():
    if current_user.filter_language() != "all":
        lang_filter = db.Books.languages.any(
            db.Languages.lang_code == current_user.filter_language())
    else:
        lang_filter = true()
    negtags_list = current_user.list_denied_tags()
    postags_list = current_user.list_allowed_tags()
    neg_content_tags_filter = false() if negtags_list == [
        ''
    ] else db.Books.tags.any(db.Tags.name.in_(negtags_list))
    pos_content_tags_filter = true() if postags_list == [
        ''
    ] else db.Books.tags.any(db.Tags.name.in_(postags_list))
    if config.config_restricted_column:
        pos_cc_list = current_user.allowed_column_value.split(',')
        pos_content_cc_filter = true() if pos_cc_list == [''] else \
            getattr(db.Books, 'custom_column_' + str(config.config_restricted_column)).\
                any(db.cc_classes[config.config_restricted_column].value.in_(pos_cc_list))
        neg_cc_list = current_user.denied_column_value.split(',')
        neg_content_cc_filter = false() if neg_cc_list == [''] else \
            getattr(db.Books, 'custom_column_' + str(config.config_restricted_column)).\
                any(db.cc_classes[config.config_restricted_column].value.in_(neg_cc_list))
    else:
        pos_content_cc_filter = true()
        neg_content_cc_filter = false()
    return and_(lang_filter, pos_content_tags_filter, ~neg_content_tags_filter,
                pos_content_cc_filter, ~neg_content_cc_filter)
示例#3
0
def tags_filters():
    negtags_list = current_user.list_denied_tags()
    postags_list = current_user.list_allowed_tags()
    neg_content_tags_filter = false() if negtags_list == [
        ''
    ] else db.Tags.name.in_(negtags_list)
    pos_content_tags_filter = true() if postags_list == [
        ''
    ] else db.Tags.name.in_(postags_list)
    return and_(pos_content_tags_filter, ~neg_content_tags_filter)
示例#4
0
    def common_filters(self,
                       allow_show_archived=False,
                       return_all_languages=False):
        if not allow_show_archived:
            archived_books = (ub.session.query(ub.ArchivedBook).filter(
                ub.ArchivedBook.user_id == int(current_user.id)).filter(
                    ub.ArchivedBook.is_archived == True).all())
            archived_book_ids = [
                archived_book.book_id for archived_book in archived_books
            ]
            archived_filter = Books.id.notin_(archived_book_ids)
        else:
            archived_filter = true()

        if current_user.filter_language() == "all" or return_all_languages:
            lang_filter = true()
        else:
            lang_filter = Books.languages.any(
                Languages.lang_code == current_user.filter_language())
        negtags_list = current_user.list_denied_tags()
        postags_list = current_user.list_allowed_tags()
        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))
        if self.config.config_restricted_column:
            try:
                pos_cc_list = current_user.allowed_column_value.split(',')
                pos_content_cc_filter = true() if pos_cc_list == [''] else \
                    getattr(Books, 'custom_column_' + str(self.config.config_restricted_column)). \
                        any(cc_classes[self.config.config_restricted_column].value.in_(pos_cc_list))
                neg_cc_list = current_user.denied_column_value.split(',')
                neg_content_cc_filter = false() if neg_cc_list == [''] else \
                    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:
            pos_content_cc_filter = true()
            neg_content_cc_filter = false()
        return and_(lang_filter, pos_content_tags_filter,
                    ~neg_content_tags_filter, pos_content_cc_filter,
                    ~neg_content_cc_filter, archived_filter)