def basic_interface_data(ctx, rd): ans = { 'username': rd.username, 'output_format': prefs['output_format'].upper(), 'input_formats': {x.upper(): True for x in available_input_formats()}, 'gui_pubdate_display_format': tweaks['gui_pubdate_display_format'], 'gui_timestamp_display_format': tweaks['gui_timestamp_display_format'], 'gui_last_modified_display_format': tweaks['gui_last_modified_display_format'], 'completion_mode': tweaks['completion_mode'], 'use_roman_numerals_for_series_number': get_use_roman(), 'translations': get_translations(), 'icon_map': icon_map(), 'icon_path': ctx.url_for('/icon', which=''), 'custom_list_template': getattr(ctx, 'custom_list_template', None) or custom_list_template(), 'search_the_net_urls': getattr(ctx, 'search_the_net_urls', None) or [], 'num_per_page': rd.opts.num_per_page, 'donate_link': localize_website_link('https://calibre-ebook.com/donate') } ans['library_map'], ans['default_library_id'] = ctx.library_info(rd) return ans
def basic_interface_data(ctx, rd): ans = { 'username': rd.username, 'output_format': prefs['output_format'].upper(), 'input_formats': {x.upper(): True for x in available_input_formats()}, 'gui_pubdate_display_format': tweaks['gui_pubdate_display_format'], 'gui_timestamp_display_format': tweaks['gui_timestamp_display_format'], 'gui_last_modified_display_format': tweaks['gui_last_modified_display_format'], 'use_roman_numerals_for_series_number': get_use_roman(), 'translations': get_translations(), 'icon_map': icon_map(), 'icon_path': ctx.url_for('/icon', which=''), } ans['library_map'], ans['default_library_id'] = ctx.library_info(rd) return ans
def interface_data(ctx, rd): ''' Return the data needed to create the server main UI Optional: ?num=50&sort=timestamp.desc&library_id=<default library> &search=''&extra_books='' ''' ans = { 'username':rd.username, 'output_format':prefs['output_format'].upper(), 'input_formats':{x.upper():True for x in available_input_formats()}, 'gui_pubdate_display_format':tweaks['gui_pubdate_display_format'], 'gui_timestamp_display_format':tweaks['gui_timestamp_display_format'], 'gui_last_modified_display_format':tweaks['gui_last_modified_display_format'], 'use_roman_numerals_for_series_number': get_use_roman(), } ans['library_map'], ans['default_library'] = ctx.library_info(rd) ud = {} if rd.username: # Override session data with stored values for the authenticated user, # if any ud = ctx.user_manager.get_session_data(rd.username) lid = ud.get('library_id') if lid and lid in ans['library_map']: rd.query.set('library_id', lid) usort = ud.get('sort') if usort: rd.query.set('sort', usort) ans['library_id'], db, sorts, orders = get_basic_query_data(ctx, rd) ans['user_session_data'] = ud try: num = int(rd.query.get('num', DEFAULT_NUMBER_OF_BOOKS)) except Exception: raise HTTPNotFound('Invalid number of books: %r' % rd.query.get('num')) with db.safe_read_lock: try: ans['search_result'] = search_result(ctx, rd, db, rd.query.get('search', ''), num, 0, ','.join(sorts), ','.join(orders)) except ParseException: ans['search_result'] = search_result(ctx, rd, db, '', num, 0, ','.join(sorts), ','.join(orders)) sf = db.field_metadata.ui_sortable_field_keys() sf.pop('ondevice', None) ans['sortable_fields'] = sorted((( sanitize_sort_field_name(db.field_metadata, k), v) for k, v in sf.iteritems()), key=lambda (field, name):sort_key(name)) ans['field_metadata'] = db.field_metadata.all_metadata() ans['icon_map'] = icon_map() ans['icon_path'] = ctx.url_for('/icon', which='') mdata = ans['metadata'] = {} try: extra_books = set(int(x) for x in rd.query.get('extra_books', '').split(',')) except Exception: extra_books = () for coll in (ans['search_result']['book_ids'], extra_books): for book_id in coll: if book_id not in mdata: data = book_as_json(db, book_id) if data is not None: mdata[book_id] = data return ans
def write_generated_cover(db, book_id, width, height, destf): mi = db.get_metadata(book_id) set_use_roman(get_use_roman()) if height is None: prefs = cprefs else: ratio = height / float(cprefs['cover_height']) prefs = override_prefs(cprefs) scale_cover(prefs, ratio) cdata = generate_cover(mi, prefs=prefs) destf.write(cdata)
def basic_interface_data(ctx, rd): ans = { 'username':rd.username, 'output_format':prefs['output_format'].upper(), 'input_formats':{x.upper():True for x in available_input_formats()}, 'gui_pubdate_display_format':tweaks['gui_pubdate_display_format'], 'gui_timestamp_display_format':tweaks['gui_timestamp_display_format'], 'gui_last_modified_display_format':tweaks['gui_last_modified_display_format'], 'use_roman_numerals_for_series_number': get_use_roman(), 'translations': get_translations(), 'allow_console_print':getattr(rd.opts, 'allow_console_print', False), 'icon_map': icon_map(), 'icon_path': ctx.url_for('/icon', which=''), } ans['library_map'], ans['default_library_id'] = ctx.library_info(rd) return ans
def basic_interface_data(ctx, rd): ans = { 'username': rd.username, 'output_format': prefs['output_format'].upper(), 'input_formats': {x.upper(): True for x in available_input_formats()}, 'gui_pubdate_display_format': tweaks['gui_pubdate_display_format'], 'gui_timestamp_display_format': tweaks['gui_timestamp_display_format'], 'gui_last_modified_display_format': tweaks['gui_last_modified_display_format'], 'completion_mode': tweaks['completion_mode'], 'use_roman_numerals_for_series_number': get_use_roman(), 'translations': get_translations(), 'icon_map': icon_map(), 'icon_path': ctx.url_for('/icon', which=''), 'custom_list_template': getattr(ctx, 'custom_list_template', None) or custom_list_template(), 'search_the_net_urls': getattr(ctx, 'search_the_net_urls', None) or [], 'num_per_page': rd.opts.num_per_page, 'default_book_list_mode': rd.opts.book_list_mode, 'donate_link': localize_website_link('https://calibre-ebook.com/donate') } ans['library_map'], ans['default_library_id'] = ctx.library_info(rd) return ans