def render_element_index(database_column, linked_table, folder): shift = 0 off = int(request.args.get("offset") or 0) entries = calibre_db.session.query( func.upper(func.substr(database_column, 1, 1)).label('id'), None, None) # query = calibre_db.generate_linked_query(config.config_read_column, db.Books) if linked_table is not None: entries = entries.join(linked_table).join(db.Books) entries = entries.filter(calibre_db.common_filters()).group_by( func.upper(func.substr(database_column, 1, 1))).all() elements = [] if off == 0: elements.append({'id': "00", 'name': _("All")}) shift = 1 for entry in entries[off + shift - 1:int(off + int(config.config_books_per_page) - shift)]: elements.append({'id': entry.id, 'name': entry.id}) pagination = Pagination( (int(off) / (int(config.config_books_per_page)) + 1), config.config_books_per_page, len(entries) + 1) return render_xml_template('feed.xml', letterelements=elements, folder=folder, pagination=pagination)
def get_open_tasks(): try: page = int(request.args.get("page",1)) except ValueError: page = 1 with db.session_scope() as sess: per_page = 10 task_count = sess.query(db.OpenTask)\ .filter(db.OpenTask.solved == False).count() open_tasks = sess.query(db.OpenTask)\ .order_by(db.OpenTask.datetime.asc(), func.substr(db.OpenTask.id, 0, func.length(db.OpenTask.id) - 2))\ .filter(db.OpenTask.solved == False)\ .offset((page-1) * per_page).limit(per_page)\ .all() pagination = Pagination(page=page, total=task_count, search=False, per_page=per_page, bs_version=3) return render_template("task_list.html", tasks = open_tasks, pagination = pagination)
def feed_seriesindex(): shift = 0 off = int(request.args.get("offset") or 0) entries = calibre_db.session.query(func.upper(func.substr(db.Series.sort, 1, 1)).label('id'))\ .join(db.books_series_link).join(db.Books).filter(calibre_db.common_filters())\ .group_by(func.upper(func.substr(db.Series.sort, 1, 1))).all() elements = [] if off == 0: elements.append({'id': "00", 'name':_("All")}) shift = 1 for entry in entries[ off + shift - 1: int(off + int(config.config_books_per_page) - shift)]: elements.append({'id': entry.id, 'name': entry.id}) pagination = Pagination((int(off) / (int(config.config_books_per_page)) + 1), config.config_books_per_page, len(entries) + 1) return render_xml_template('feed.xml', letterelements=elements, folder='opds.feed_letter_series', pagination=pagination)
def language(self): return func.substr(self.expr, 1, 2)
def territory(self): return func.substr(self.expr, 4, 2)
def language(self): return func.substr(self.expr, 1, 2)
def territory(self): return func.substr(self.expr, 4, 2)