-
-from sqlobject.sqlbuilder import AND, func
+from sqlobject.sqlbuilder import AND, OR, func
+from .config import get_config
from .db import Author, Book, Extension, Genre, Language
__all__ = [
def search_books(search_type, case_sensitive, values, join_expressions=None,
- orderBy=None):
- return _search(Book, search_type, case_sensitive, values,
- join_expressions=join_expressions, orderBy=orderBy)
+ orderBy=None, use_filters=False):
+ if use_filters:
+ config = get_config()
+ lang_filter = config.getlist('filters', 'lang')
+ deleted_filter = config.getint('filters', 'deleted')
+ if lang_filter:
+ if join_expressions is None:
+ join_expressions = []
+ lang_conditions = []
+ for lang in lang_filter:
+ lvalues = {'name': lang}
+ conditions = mk_search_conditions(
+ Language, search_type, case_sensitive, lvalues)
+ lang_conditions.append(conditions)
+ join_expressions.append(Book.j.language)
+ join_expressions.append(OR(*lang_conditions))
+ conditions = mk_search_conditions(
+ Book, search_type, case_sensitive, values,
+ join_expressions=join_expressions)
+ if use_filters and not deleted_filter:
+ conditions.append(Book.q.deleted == False) # noqa: E712
+ return Book.select(AND(*conditions), orderBy=orderBy)
def search_extensions(search_type, case_sensitive, values, orderBy=None):