$def with (items, key, sponsorship_count=None, reading_log_counts=None, lists=None, user=None, logged_in_user=None, public=False, sort_order='desc') $# Displays a user's reading log $# :param list items: $# :param Literal['currently-reading', 'want-to-read', 'already-read', 'sponsorships', 'loans', 'waitlist'] key: $# :param int? sponsorship_count: number of books the user is sponsoring $# :param Dict[Literal['currently-reading', 'want-to-read', 'already-read'], int] reading_log_counts: $# :param list? lists: $# :param user: $# :param bool public: $ title = _('My Books') $ urlbase = ctx.path.rsplit('/', 1)[0] $ username = user.key.split('/')[-1] $ owners_page = logged_in_user and urlbase.startswith('/people/'+logged_in_user.key.split('/')[-1]) $ meta_photo_url = "https://archive.org/services/img/%s" % get_internet_archive_id(user.key) $ sort_order = sort_order $ current_page = int(input(page=1).page) $ total_items = sponsorship_count if key == 'sponsorships' else int(reading_log_counts[key]) $ userDisplayName = user.displayname or ctx.user.displayname $ userKey = user.key or ctx.user.key $ header_title = unicode(render_template('account/readinglog_shelf_name', key)).strip() $if key == 'currently-reading': $ og_title = _("Books %(username)s is reading", username=userDisplayName) $ og_description = _("%(username)s is reading %(total)d books. Join %(username)s on OpenLibrary.org and tell the world what you're reading.", username=userDisplayName, total=total_items) $elif key == 'want-to-read': $ og_title = _("Books %(username)s wants to read", username=userDisplayName) $ og_description = _("%(username)s wants to read %(total)d books. Join %(username)s on OpenLibrary.org and share the books that you'll soon be reading!", username=userDisplayName, total=total_items) $elif key == 'already-read': $ og_title = _("Books %(username)s has read", username=userDisplayName) $ og_description = _("%(username)s has read %(total)d books. Join %(username)s on OpenLibrary.org and tell the world about the books that you care about.", username=userDisplayName, total=total_items) $elif key == 'sponsorships': $ header_title = _("Sponsorships") $ og_title = _("Books %(userdisplayname)s is sponsoring", userdisplayname=userDisplayName) $ og_description = "{username} is sponsoring {total} books. Join {username} on OpenLibrary.org and share the books that you'll soon be reading!".format(username=userDisplayName, total=total_items) $if owners_page: $var title: $header_title $else: $var title: $userDisplayName » $header_title $if og_title: $putctx("description", og_description) $add_metatag(property="og:title", content=og_title) $add_metatag(property="og:url", content=request.canonical_url) $add_metatag(property="og:site_name", content="Open Library") $add_metatag(property="og:description", content=og_description) $add_metatag(property="og:image", content=meta_photo_url)

$if not owners_page: $userDisplayName » $header_title $else: $header_title

$if owners_page: $_('Stats')
$if owners_page:

$if public: $_('Your reading log is currently set to public') or $else: $_('Your reading log is currently set to private') — $_('Manage your privacy settings')

$_('Sorting by') $if sort_order == 'desc': $_("Date Added (newest)") | $_("Date Added (oldest)") $else: $_("Date Added (newest)") | $_("Date Added (oldest)") $:macros.Pager(current_page, total_items, results_per_page=25)
    $if items: $ bookshelf_id = {'want-to-read': 1, 'currently-reading': 2, 'already-read': 3}.get(key, None) $for item in items: $if key == 'loans': $ edition = get_document(item['book']) $ work = get_document(edition.works[0]) if (edition.get('type', {}).get('key') == '/type/work' and edition.works and edition.works[0]) else None $ decorations = owners_page and macros.ManageLoansButtons(item, edition) or '' $:macros.SearchResultsWork(work or edition, decorations=decorations, cta=False) $elif key == 'waitlists': $ edition = item $ decorations = owners_page and macros.ManageWaitlistButton(edition) or '' $:macros.SearchResultsWork(edition, decorations=decorations, cta=False) $else: $ work = item $ decorations = (bookshelf_id and owners_page) and macros.ReadingLogButton(work, read_status=bookshelf_id) $:macros.SearchResultsWork(work, decorations=decorations, cta=False) $else:
  • $_('No books are on this shelf')
$:macros.Pager(current_page, total_items, results_per_page=25)