From cdbf06198c05f276c35231e4e6951c57575ae328 Mon Sep 17 00:00:00 2001 From: STAMATIOSL Date: Sat, 19 Jun 2021 11:44:34 +0300 Subject: [PATCH 01/14] Add the date_added filter --- openlibrary/templates/account/books.html | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/openlibrary/templates/account/books.html b/openlibrary/templates/account/books.html index 2f59e06f5c5..d922cdd72e7 100644 --- a/openlibrary/templates/account/books.html +++ b/openlibrary/templates/account/books.html @@ -100,6 +100,12 @@

  • $lst['name'] ($(len(lst.seeds)))
  • + $if key == 'want-to-read': +
    $:macros.Pager(current_page, total_items, results_per_page=25) From 8c3d28edcdf92bf88f925a4facd71098ac8d7581 Mon Sep 17 00:00:00 2001 From: STAMATIOSL Date: Sat, 19 Jun 2021 12:21:19 +0300 Subject: [PATCH 02/14] Update the date_added filter --- openlibrary/templates/account/books.html | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/openlibrary/templates/account/books.html b/openlibrary/templates/account/books.html index d922cdd72e7..d19eacc9ddf 100644 --- a/openlibrary/templates/account/books.html +++ b/openlibrary/templates/account/books.html @@ -1,4 +1,4 @@ -$def with (items, key, sponsorship_count=None, reading_log_counts=None, lists=None, user=None, logged_in_user=None, public=False) +$def with (items, key, sponsorship_count=None, reading_log_counts=None, lists=None, user=None, logged_in_user=None, public=False, date_added=None) $# Displays a user's reading log $# :param list items: $# :param Literal['currently-reading', 'want-to-read', 'already-read', 'sponsorships', 'loans', 'waitlist'] key: @@ -14,6 +14,8 @@ $ 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) +$ date_added = date_added + $ 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 @@ -103,8 +105,8 @@

    $if key == 'want-to-read':

    From 7b66d1e1e4136b5752f690433547a9ebfb244c8c Mon Sep 17 00:00:00 2001 From: Eva Zisouli <56540005+Evazisouli@users.noreply.github.com> Date: Sat, 19 Jun 2021 12:28:18 +0300 Subject: [PATCH 03/14] Modify get_users_logged_books with three if cases --- openlibrary/core/bookshelves.py | 77 +++++++++++++++++++++++++-------- 1 file changed, 59 insertions(+), 18 deletions(-) diff --git a/openlibrary/core/bookshelves.py b/openlibrary/core/bookshelves.py index e9cdc6fc73d..4ca5b28e46e 100644 --- a/openlibrary/core/bookshelves.py +++ b/openlibrary/core/bookshelves.py @@ -116,7 +116,7 @@ def count_total_books_logged_by_user_per_shelf(cls, username, bookshelf_ids=None return dict([(i['bookshelf_id'], i['count']) for i in result]) if result else {} @classmethod - def get_users_logged_books(cls, username, bookshelf_id=None, limit=100, page=1): + def get_users_logged_books(cls, username, bookshelf_id=None, limit=100, page=1, date_added=None): """Returns a list of Reading Log database records for books which the user has logged. Records are described in core/schema.py and include: @@ -129,24 +129,65 @@ def get_users_logged_books(cls, username, bookshelf_id=None, limit=100, page=1): created (datetime) - date the book was logged """ - oldb = db.get_db() - page = int(page) if page else 1 - data = { - 'username': username, - 'limit': limit, - 'offset': limit * (page - 1), - 'bookshelf_id': bookshelf_id - } - query = ("SELECT * from bookshelves_books WHERE " - "bookshelf_id=$bookshelf_id AND username=$username " - "LIMIT $limit OFFSET $offset") - if bookshelf_id is None: + if date_added is None: + oldb = db.get_db() + page = int(page) if page else 1 + data = { + 'username': username, + 'limit': limit, + 'offset': limit * (page - 1), + 'bookshelf_id': bookshelf_id + } + query = ("SELECT * from bookshelves_books WHERE " + "bookshelf_id=$bookshelf_id AND username=$username " + "LIMIT $limit OFFSET $offset") + if bookshelf_id is None: + query = ("SELECT * from bookshelves_books WHERE " + "username=$username") + # XXX Removing limit, offset, etc from data looks like a bug + # unrelated / not fixing in this PR. + data = { 'username': username } + return list(oldb.query(query, vars=data)) + elif date_added=="descending": + oldb = db.get_db() + page = int(page) if page else 1 + data = { + 'username': username, + 'limit': limit, + 'offset': limit * (page - 1), + 'bookshelf_id': bookshelf_id + } + query = ("SELECT * from bookshelves_books WHERE " + "bookshelf_id=$bookshelf_id AND username=$username " + "ORDER BY created DESC " + "LIMIT $limit OFFSET $offset") + if bookshelf_id is None: + query = ("SELECT * from bookshelves_books WHERE " + "username=$username") + # XXX Removing limit, offset, etc from data looks like a bug + # unrelated / not fixing in this PR. + data = { 'username': username } + return list(oldb.query(query, vars=data)) + else : + oldb = db.get_db() + page = int(page) if page else 1 + data = { + 'username': username, + 'limit': limit, + 'offset': limit * (page - 1), + 'bookshelf_id': bookshelf_id + } query = ("SELECT * from bookshelves_books WHERE " - "username=$username") - # XXX Removing limit, offset, etc from data looks like a bug - # unrelated / not fixing in this PR. - data = { 'username': username } - return list(oldb.query(query, vars=data)) + "bookshelf_id=$bookshelf_id AND username=$username " + "ORDER BY created ASC " + "LIMIT $limit OFFSET $offset") + if bookshelf_id is None: + query = ("SELECT * from bookshelves_books WHERE " + "username=$username") + # XXX Removing limit, offset, etc from data looks like a bug + # unrelated / not fixing in this PR. + data = { 'username': username } + return list(oldb.query(query, vars=data)) @classmethod def get_users_read_status_of_work(cls, username, work_id): From cca7f09cef981bec98e7266a3a2c19b4cfe1a0ec Mon Sep 17 00:00:00 2001 From: Eva Zisouli <56540005+Evazisouli@users.noreply.github.com> Date: Sat, 19 Jun 2021 12:34:32 +0300 Subject: [PATCH 04/14] Add the date_added parameter in methods --- openlibrary/plugins/upstream/account.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/openlibrary/plugins/upstream/account.py b/openlibrary/plugins/upstream/account.py index a5075a4a300..be7e172af04 100644 --- a/openlibrary/plugins/upstream/account.py +++ b/openlibrary/plugins/upstream/account.py @@ -712,20 +712,20 @@ def process_logged_books(self, logged_books): if logged_books[i]['edition_id'] else '') return works - def get_want_to_read(self, page=1, limit=RESULTS_PER_PAGE): + def get_want_to_read(self, page=1, limit=RESULTS_PER_PAGE, date_added=None): return self.process_logged_books(Bookshelves.get_users_logged_books( self.user.get_username(), bookshelf_id=Bookshelves.PRESET_BOOKSHELVES['Want to Read'], - page=page, limit=limit)) + page=page, limit=limit, date_added=date_added)) - def get_currently_reading(self, page=1, limit=RESULTS_PER_PAGE): + def get_currently_reading(self, page=1, limit=RESULTS_PER_PAGE, date_added=None): return self.process_logged_books(Bookshelves.get_users_logged_books( self.user.get_username(), bookshelf_id=Bookshelves.PRESET_BOOKSHELVES['Currently Reading'], - page=page, limit=limit)) + page=page, limit=limit, date_added=None)) - def get_already_read(self, page=1, limit=RESULTS_PER_PAGE): + def get_already_read(self, page=1, limit=RESULTS_PER_PAGE, date_added=None): return self.process_logged_books(Bookshelves.get_users_logged_books( self.user.get_username(), bookshelf_id=Bookshelves.PRESET_BOOKSHELVES['Already Read'], - page=page, limit=limit)) + page=page, limit=limit, date_added=None)) def get_works(self, key, page=1, limit=RESULTS_PER_PAGE): """ From e0cba14cbec5940a0bc36f8b422e8d75ad4d7dfd Mon Sep 17 00:00:00 2001 From: STAMATIOSL Date: Sat, 19 Jun 2021 12:40:46 +0300 Subject: [PATCH 05/14] Modify public_my_books --- openlibrary/plugins/upstream/account.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/openlibrary/plugins/upstream/account.py b/openlibrary/plugins/upstream/account.py index be7e172af04..3d689406371 100644 --- a/openlibrary/plugins/upstream/account.py +++ b/openlibrary/plugins/upstream/account.py @@ -727,13 +727,13 @@ def get_already_read(self, page=1, limit=RESULTS_PER_PAGE, date_added=None): self.user.get_username(), bookshelf_id=Bookshelves.PRESET_BOOKSHELVES['Already Read'], page=page, limit=limit, date_added=None)) - def get_works(self, key, page=1, limit=RESULTS_PER_PAGE): + def get_works(self, key, page=1, limit=RESULTS_PER_PAGE, date_added=None): """ :rtype: list of openlibrary.plugins.upstream.models.Work """ key = key.lower() if key in self.KEYS: - return self.KEYS[key](page=page, limit=limit) + return self.KEYS[key](page=page, limit=limit, date_added=date_added) else: # must be a list or invalid page! #works = web.ctx.site.get_many([ ... ]) raise @@ -751,7 +751,8 @@ class public_my_books(delegate.page): def GET(self, username, key='loans'): """check if user's reading log is public""" - i = web.input(page=1) + i = web.input(page=1, sort=None) + date_added=i.sort user = web.ctx.site.get('/people/%s' % username) if not user: return render.notfound("User %s" % username, create=False) @@ -767,11 +768,11 @@ def GET(self, username, key='loans'): 'isbn_%s' % len(s['isbn']): s['isbn'] })[0]) for s in sponsorships) else: - books = readlog.get_works(key, page=i.page) + books = readlog.get_works(key, page=i.page, date_added=i.sort) return render['account/books']( books, key, sponsorship_count=len(sponsorships), reading_log_counts=readlog.reading_log_counts, lists=readlog.lists, - user=user, logged_in_user=logged_in_user, public=is_public + user=user, logged_in_user=logged_in_user, public=is_public, date_added=str(date_added) ) raise web.seeother(user.key) From 448ae77a8a671eab653cdc7c0ec5a95fbfa019de Mon Sep 17 00:00:00 2001 From: Eva Zisouli <56540005+Evazisouli@users.noreply.github.com> Date: Sun, 20 Jun 2021 11:17:53 +0300 Subject: [PATCH 06/14] Modify database code --- openlibrary/core/bookshelves.py | 60 +++++++++------------------------ 1 file changed, 15 insertions(+), 45 deletions(-) diff --git a/openlibrary/core/bookshelves.py b/openlibrary/core/bookshelves.py index 4ca5b28e46e..f17c9f262e3 100644 --- a/openlibrary/core/bookshelves.py +++ b/openlibrary/core/bookshelves.py @@ -129,65 +129,35 @@ def get_users_logged_books(cls, username, bookshelf_id=None, limit=100, page=1, created (datetime) - date the book was logged """ + oldb = db.get_db() + page = int(page) if page else 1 + data = { + 'username': username, + 'limit': limit, + 'offset': limit * (page - 1), + 'bookshelf_id': bookshelf_id + } if date_added is None: - oldb = db.get_db() - page = int(page) if page else 1 - data = { - 'username': username, - 'limit': limit, - 'offset': limit * (page - 1), - 'bookshelf_id': bookshelf_id - } query = ("SELECT * from bookshelves_books WHERE " "bookshelf_id=$bookshelf_id AND username=$username " "LIMIT $limit OFFSET $offset") - if bookshelf_id is None: - query = ("SELECT * from bookshelves_books WHERE " - "username=$username") - # XXX Removing limit, offset, etc from data looks like a bug - # unrelated / not fixing in this PR. - data = { 'username': username } - return list(oldb.query(query, vars=data)) elif date_added=="descending": - oldb = db.get_db() - page = int(page) if page else 1 - data = { - 'username': username, - 'limit': limit, - 'offset': limit * (page - 1), - 'bookshelf_id': bookshelf_id - } query = ("SELECT * from bookshelves_books WHERE " "bookshelf_id=$bookshelf_id AND username=$username " "ORDER BY created DESC " "LIMIT $limit OFFSET $offset") - if bookshelf_id is None: - query = ("SELECT * from bookshelves_books WHERE " - "username=$username") - # XXX Removing limit, offset, etc from data looks like a bug - # unrelated / not fixing in this PR. - data = { 'username': username } - return list(oldb.query(query, vars=data)) else : - oldb = db.get_db() - page = int(page) if page else 1 - data = { - 'username': username, - 'limit': limit, - 'offset': limit * (page - 1), - 'bookshelf_id': bookshelf_id - } query = ("SELECT * from bookshelves_books WHERE " "bookshelf_id=$bookshelf_id AND username=$username " "ORDER BY created ASC " "LIMIT $limit OFFSET $offset") - if bookshelf_id is None: - query = ("SELECT * from bookshelves_books WHERE " - "username=$username") - # XXX Removing limit, offset, etc from data looks like a bug - # unrelated / not fixing in this PR. - data = { 'username': username } - return list(oldb.query(query, vars=data)) + if bookshelf_id is None: + query = ("SELECT * from bookshelves_books WHERE " + "username=$username") + # XXX Removing limit, offset, etc from data looks like a bug + # unrelated / not fixing in this PR. + data = { 'username': username } + return list(oldb.query(query, vars=data)) @classmethod def get_users_read_status_of_work(cls, username, work_id): From 8ac592179c47a2345df01c46b87d7096021a196e Mon Sep 17 00:00:00 2001 From: STAMATIOSL Date: Sun, 27 Jun 2021 12:54:08 +0300 Subject: [PATCH 07/14] Modify template --- openlibrary/templates/account/books.html | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/openlibrary/templates/account/books.html b/openlibrary/templates/account/books.html index d19eacc9ddf..7bc3b1ae207 100644 --- a/openlibrary/templates/account/books.html +++ b/openlibrary/templates/account/books.html @@ -1,4 +1,4 @@ -$def with (items, key, sponsorship_count=None, reading_log_counts=None, lists=None, user=None, logged_in_user=None, public=False, date_added=None) +$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: @@ -14,7 +14,7 @@ $ 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) -$ date_added = date_added +$ sort_order = sort_order $ current_page = int(input(page=1).page) $ total_items = sponsorship_count if key == 'sponsorships' else int(reading_log_counts[key]) @@ -67,6 +67,17 @@

    $if owners_page: $_('Stats') + + $_('Sorting by') + $if sort_order == 'desc': + $_("Date Added (newest)") + | + $_("Date Added (oldest)") + $else: + $_("Date Added (newest)") + | + $_("Date Added (oldest)") +

    $if owners_page: @@ -102,12 +113,6 @@

  • $lst['name'] ($(len(lst.seeds)))
  • - $if key == 'want-to-read': -
    $:macros.Pager(current_page, total_items, results_per_page=25) From 259eb7f52fb455b7ece0a746bf11bd1ccbeb2d9f Mon Sep 17 00:00:00 2001 From: STAMATIOSL Date: Sun, 27 Jun 2021 12:55:59 +0300 Subject: [PATCH 08/14] Modify public_my_books with parameters --- openlibrary/plugins/upstream/account.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/openlibrary/plugins/upstream/account.py b/openlibrary/plugins/upstream/account.py index 3d689406371..176a08c701f 100644 --- a/openlibrary/plugins/upstream/account.py +++ b/openlibrary/plugins/upstream/account.py @@ -727,13 +727,13 @@ def get_already_read(self, page=1, limit=RESULTS_PER_PAGE, date_added=None): self.user.get_username(), bookshelf_id=Bookshelves.PRESET_BOOKSHELVES['Already Read'], page=page, limit=limit, date_added=None)) - def get_works(self, key, page=1, limit=RESULTS_PER_PAGE, date_added=None): + def get_works(self, key, page=1, limit=RESULTS_PER_PAGE, sort='created', sort_order='desc'): """ :rtype: list of openlibrary.plugins.upstream.models.Work """ key = key.lower() if key in self.KEYS: - return self.KEYS[key](page=page, limit=limit, date_added=date_added) + return self.KEYS[key](page=page, limit=limit, sort=sort, sort_order=sort_order) else: # must be a list or invalid page! #works = web.ctx.site.get_many([ ... ]) raise @@ -751,8 +751,7 @@ class public_my_books(delegate.page): def GET(self, username, key='loans'): """check if user's reading log is public""" - i = web.input(page=1, sort=None) - date_added=i.sort + i = web.input(page=1, sort='desc') user = web.ctx.site.get('/people/%s' % username) if not user: return render.notfound("User %s" % username, create=False) @@ -768,11 +767,11 @@ def GET(self, username, key='loans'): 'isbn_%s' % len(s['isbn']): s['isbn'] })[0]) for s in sponsorships) else: - books = readlog.get_works(key, page=i.page, date_added=i.sort) + books = readlog.get_works(key, page=i.page, sort='created', sort_order=i.sort) return render['account/books']( books, key, sponsorship_count=len(sponsorships), reading_log_counts=readlog.reading_log_counts, lists=readlog.lists, - user=user, logged_in_user=logged_in_user, public=is_public, date_added=str(date_added) + user=user, logged_in_user=logged_in_user, public=is_public, sort_order=str(i.sort) ) raise web.seeother(user.key) From dbefa1c1b0b2f794d58e3cdf61bced991b773625 Mon Sep 17 00:00:00 2001 From: Eva Zisouli <56540005+Evazisouli@users.noreply.github.com> Date: Sun, 27 Jun 2021 13:05:52 +0300 Subject: [PATCH 09/14] Update the methods to take the new params --- openlibrary/plugins/upstream/account.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/openlibrary/plugins/upstream/account.py b/openlibrary/plugins/upstream/account.py index 176a08c701f..1a18f478d36 100644 --- a/openlibrary/plugins/upstream/account.py +++ b/openlibrary/plugins/upstream/account.py @@ -712,20 +712,20 @@ def process_logged_books(self, logged_books): if logged_books[i]['edition_id'] else '') return works - def get_want_to_read(self, page=1, limit=RESULTS_PER_PAGE, date_added=None): + def get_want_to_read(self, page=1, limit=RESULTS_PER_PAGE, sort='created', sort_order='desc'): return self.process_logged_books(Bookshelves.get_users_logged_books( self.user.get_username(), bookshelf_id=Bookshelves.PRESET_BOOKSHELVES['Want to Read'], - page=page, limit=limit, date_added=date_added)) + page=page, limit=limit, sort=sort + ' ' + sort_order)) - def get_currently_reading(self, page=1, limit=RESULTS_PER_PAGE, date_added=None): + def get_currently_reading(self, page=1, limit=RESULTS_PER_PAGE, sort='created', sort_order='desc'): return self.process_logged_books(Bookshelves.get_users_logged_books( self.user.get_username(), bookshelf_id=Bookshelves.PRESET_BOOKSHELVES['Currently Reading'], - page=page, limit=limit, date_added=None)) + page=page, limit=limit, sort=sort + ' ' + sort_order)) - def get_already_read(self, page=1, limit=RESULTS_PER_PAGE, date_added=None): + def get_already_read(self, page=1, limit=RESULTS_PER_PAGE, sort='created', sort_order='desc'): return self.process_logged_books(Bookshelves.get_users_logged_books( self.user.get_username(), bookshelf_id=Bookshelves.PRESET_BOOKSHELVES['Already Read'], - page=page, limit=limit, date_added=None)) + page=page, limit=limit, sort=sort + ' ' + sort_order)) def get_works(self, key, page=1, limit=RESULTS_PER_PAGE, sort='created', sort_order='desc'): """ From 86442afa1211d6db0050406db0c6f0fb72b685d1 Mon Sep 17 00:00:00 2001 From: Eva Zisouli <56540005+Evazisouli@users.noreply.github.com> Date: Sun, 27 Jun 2021 13:07:26 +0300 Subject: [PATCH 10/14] Update def get_users_logged_books --- openlibrary/core/bookshelves.py | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/openlibrary/core/bookshelves.py b/openlibrary/core/bookshelves.py index f17c9f262e3..ce5dae8b059 100644 --- a/openlibrary/core/bookshelves.py +++ b/openlibrary/core/bookshelves.py @@ -1,3 +1,4 @@ +from typing import Literal from openlibrary.utils.dateutil import DATE_ONE_MONTH_AGO, DATE_ONE_WEEK_AGO from . import db @@ -116,7 +117,7 @@ def count_total_books_logged_by_user_per_shelf(cls, username, bookshelf_ids=None return dict([(i['bookshelf_id'], i['count']) for i in result]) if result else {} @classmethod - def get_users_logged_books(cls, username, bookshelf_id=None, limit=100, page=1, date_added=None): + def get_users_logged_books(cls, username, bookshelf_id=None, limit=100, page=1, sort: Literal['created asc', 'created desc'] = 'created desc'): """Returns a list of Reading Log database records for books which the user has logged. Records are described in core/schema.py and include: @@ -137,16 +138,12 @@ def get_users_logged_books(cls, username, bookshelf_id=None, limit=100, page=1, 'offset': limit * (page - 1), 'bookshelf_id': bookshelf_id } - if date_added is None: - query = ("SELECT * from bookshelves_books WHERE " - "bookshelf_id=$bookshelf_id AND username=$username " - "LIMIT $limit OFFSET $offset") - elif date_added=="descending": + if sort=='created desc': query = ("SELECT * from bookshelves_books WHERE " "bookshelf_id=$bookshelf_id AND username=$username " "ORDER BY created DESC " "LIMIT $limit OFFSET $offset") - else : + else: query = ("SELECT * from bookshelves_books WHERE " "bookshelf_id=$bookshelf_id AND username=$username " "ORDER BY created ASC " From 0f9809d383bf2b1da05b098e992fd15f03cd0115 Mon Sep 17 00:00:00 2001 From: Eva Zisouli <56540005+Evazisouli@users.noreply.github.com> Date: Mon, 28 Jun 2021 10:00:39 +0300 Subject: [PATCH 11/14] Add some lint fixes --- openlibrary/core/bookshelves.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/openlibrary/core/bookshelves.py b/openlibrary/core/bookshelves.py index ce5dae8b059..ecb8c4e0492 100644 --- a/openlibrary/core/bookshelves.py +++ b/openlibrary/core/bookshelves.py @@ -117,7 +117,8 @@ def count_total_books_logged_by_user_per_shelf(cls, username, bookshelf_ids=None return dict([(i['bookshelf_id'], i['count']) for i in result]) if result else {} @classmethod - def get_users_logged_books(cls, username, bookshelf_id=None, limit=100, page=1, sort: Literal['created asc', 'created desc'] = 'created desc'): + def get_users_logged_books(cls, username, bookshelf_id=None, limit=100, page=1, + sort: Literal['created asc', 'created desc'] = 'created desc'): """Returns a list of Reading Log database records for books which the user has logged. Records are described in core/schema.py and include: @@ -138,19 +139,19 @@ def get_users_logged_books(cls, username, bookshelf_id=None, limit=100, page=1, 'offset': limit * (page - 1), 'bookshelf_id': bookshelf_id } - if sort=='created desc': + if sort =='created desc': query = ("SELECT * from bookshelves_books WHERE " - "bookshelf_id=$bookshelf_id AND username=$username " - "ORDER BY created DESC " - "LIMIT $limit OFFSET $offset") + "bookshelf_id=$bookshelf_id AND username=$username " + "ORDER BY created DESC " + "LIMIT $limit OFFSET $offset") else: query = ("SELECT * from bookshelves_books WHERE " - "bookshelf_id=$bookshelf_id AND username=$username " - "ORDER BY created ASC " - "LIMIT $limit OFFSET $offset") + "bookshelf_id=$bookshelf_id AND username=$username " + "ORDER BY created ASC " + "LIMIT $limit OFFSET $offset") if bookshelf_id is None: query = ("SELECT * from bookshelves_books WHERE " - "username=$username") + "username=$username") # XXX Removing limit, offset, etc from data looks like a bug # unrelated / not fixing in this PR. data = { 'username': username } From 7dd76d3c0d779399c0c89c3605a3704d3324812c Mon Sep 17 00:00:00 2001 From: Eva Zisouli <56540005+Evazisouli@users.noreply.github.com> Date: Mon, 28 Jun 2021 10:03:35 +0300 Subject: [PATCH 12/14] Fix linting in methods --- openlibrary/plugins/upstream/account.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/openlibrary/plugins/upstream/account.py b/openlibrary/plugins/upstream/account.py index 1a18f478d36..86bc27b0938 100644 --- a/openlibrary/plugins/upstream/account.py +++ b/openlibrary/plugins/upstream/account.py @@ -712,17 +712,20 @@ def process_logged_books(self, logged_books): if logged_books[i]['edition_id'] else '') return works - def get_want_to_read(self, page=1, limit=RESULTS_PER_PAGE, sort='created', sort_order='desc'): + def get_want_to_read(self, page=1, limit=RESULTS_PER_PAGE, + sort='created', sort_order='desc'): return self.process_logged_books(Bookshelves.get_users_logged_books( self.user.get_username(), bookshelf_id=Bookshelves.PRESET_BOOKSHELVES['Want to Read'], page=page, limit=limit, sort=sort + ' ' + sort_order)) - def get_currently_reading(self, page=1, limit=RESULTS_PER_PAGE, sort='created', sort_order='desc'): + def get_currently_reading(self, page=1, limit=RESULTS_PER_PAGE, + sort='created', sort_order='desc'): return self.process_logged_books(Bookshelves.get_users_logged_books( self.user.get_username(), bookshelf_id=Bookshelves.PRESET_BOOKSHELVES['Currently Reading'], page=page, limit=limit, sort=sort + ' ' + sort_order)) - def get_already_read(self, page=1, limit=RESULTS_PER_PAGE, sort='created', sort_order='desc'): + def get_already_read(self, page=1, limit=RESULTS_PER_PAGE, + sort='created', sort_order='desc'): return self.process_logged_books(Bookshelves.get_users_logged_books( self.user.get_username(), bookshelf_id=Bookshelves.PRESET_BOOKSHELVES['Already Read'], page=page, limit=limit, sort=sort + ' ' + sort_order)) From a626ed92dfc00f05add07eff5e78e2c1b28c25c6 Mon Sep 17 00:00:00 2001 From: STAMATIOSL Date: Mon, 28 Jun 2021 10:16:01 +0300 Subject: [PATCH 13/14] Modify filters in template --- openlibrary/templates/account/books.html | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/openlibrary/templates/account/books.html b/openlibrary/templates/account/books.html index 7bc3b1ae207..1b55a9a5711 100644 --- a/openlibrary/templates/account/books.html +++ b/openlibrary/templates/account/books.html @@ -67,17 +67,6 @@

    $if owners_page: $_('Stats') - - $_('Sorting by') - $if sort_order == 'desc': - $_("Date Added (newest)") - | - $_("Date Added (oldest)") - $else: - $_("Date Added (newest)") - | - $_("Date Added (oldest)") -

    $if owners_page: @@ -115,6 +104,18 @@

    + + $_('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: From 4f6907220e7f7f032cf85d5b6bfd113f3ae4c93b Mon Sep 17 00:00:00 2001 From: Eva Zisouli <56540005+Evazisouli@users.noreply.github.com> Date: Mon, 28 Jun 2021 10:19:22 +0300 Subject: [PATCH 14/14] Make further lint fixes --- openlibrary/core/bookshelves.py | 7 ++++--- openlibrary/plugins/upstream/account.py | 18 +++++++++++------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/openlibrary/core/bookshelves.py b/openlibrary/core/bookshelves.py index ecb8c4e0492..d04c83d5853 100644 --- a/openlibrary/core/bookshelves.py +++ b/openlibrary/core/bookshelves.py @@ -117,8 +117,9 @@ def count_total_books_logged_by_user_per_shelf(cls, username, bookshelf_ids=None return dict([(i['bookshelf_id'], i['count']) for i in result]) if result else {} @classmethod - def get_users_logged_books(cls, username, bookshelf_id=None, limit=100, page=1, - sort: Literal['created asc', 'created desc'] = 'created desc'): + def get_users_logged_books(cls, username, bookshelf_id=None, limit=100, page=1, + sort: Literal['created asc', 'created desc'] = + 'created desc'): """Returns a list of Reading Log database records for books which the user has logged. Records are described in core/schema.py and include: @@ -139,7 +140,7 @@ def get_users_logged_books(cls, username, bookshelf_id=None, limit=100, page=1, 'offset': limit * (page - 1), 'bookshelf_id': bookshelf_id } - if sort =='created desc': + if sort == 'created desc': query = ("SELECT * from bookshelves_books WHERE " "bookshelf_id=$bookshelf_id AND username=$username " "ORDER BY created DESC " diff --git a/openlibrary/plugins/upstream/account.py b/openlibrary/plugins/upstream/account.py index 86bc27b0938..35b37106ecf 100644 --- a/openlibrary/plugins/upstream/account.py +++ b/openlibrary/plugins/upstream/account.py @@ -712,31 +712,33 @@ def process_logged_books(self, logged_books): if logged_books[i]['edition_id'] else '') return works - def get_want_to_read(self, page=1, limit=RESULTS_PER_PAGE, + def get_want_to_read(self, page=1, limit=RESULTS_PER_PAGE, sort='created', sort_order='desc'): return self.process_logged_books(Bookshelves.get_users_logged_books( self.user.get_username(), bookshelf_id=Bookshelves.PRESET_BOOKSHELVES['Want to Read'], page=page, limit=limit, sort=sort + ' ' + sort_order)) - def get_currently_reading(self, page=1, limit=RESULTS_PER_PAGE, + def get_currently_reading(self, page=1, limit=RESULTS_PER_PAGE, sort='created', sort_order='desc'): return self.process_logged_books(Bookshelves.get_users_logged_books( self.user.get_username(), bookshelf_id=Bookshelves.PRESET_BOOKSHELVES['Currently Reading'], page=page, limit=limit, sort=sort + ' ' + sort_order)) - def get_already_read(self, page=1, limit=RESULTS_PER_PAGE, + def get_already_read(self, page=1, limit=RESULTS_PER_PAGE, sort='created', sort_order='desc'): return self.process_logged_books(Bookshelves.get_users_logged_books( self.user.get_username(), bookshelf_id=Bookshelves.PRESET_BOOKSHELVES['Already Read'], page=page, limit=limit, sort=sort + ' ' + sort_order)) - def get_works(self, key, page=1, limit=RESULTS_PER_PAGE, sort='created', sort_order='desc'): + def get_works(self, key, page=1, limit=RESULTS_PER_PAGE, + sort='created', sort_order='desc'): """ :rtype: list of openlibrary.plugins.upstream.models.Work """ key = key.lower() if key in self.KEYS: - return self.KEYS[key](page=page, limit=limit, sort=sort, sort_order=sort_order) + return self.KEYS[key](page=page, limit=limit, + sort=sort, sort_order=sort_order) else: # must be a list or invalid page! #works = web.ctx.site.get_many([ ... ]) raise @@ -770,11 +772,13 @@ def GET(self, username, key='loans'): 'isbn_%s' % len(s['isbn']): s['isbn'] })[0]) for s in sponsorships) else: - books = readlog.get_works(key, page=i.page, sort='created', sort_order=i.sort) + books = readlog.get_works(key, page=i.page, + sort='created', sort_order=i.sort) return render['account/books']( books, key, sponsorship_count=len(sponsorships), reading_log_counts=readlog.reading_log_counts, lists=readlog.lists, - user=user, logged_in_user=logged_in_user, public=is_public, sort_order=str(i.sort) + user=user, logged_in_user=logged_in_user, public=is_public, + sort_order=str(i.sort) ) raise web.seeother(user.key)