From 00d69e31d29e93a8f3932377aa2bff0629533682 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 1 Jan 2024 23:45:54 +0000 Subject: [PATCH] Reading status screen --- daemon.py | 12 +++++++ tests.py | 1 - theme/default/icons/scope_readingstatus.png | Bin 0 -> 8098 bytes translations/ar.json | 7 +++- translations/bn.json | 7 +++- translations/ca.json | 7 +++- translations/cy.json | 7 +++- translations/de.json | 7 +++- translations/el.json | 7 +++- translations/en.json | 7 +++- translations/es.json | 7 +++- translations/fa.json | 7 +++- translations/fr.json | 7 +++- translations/ga.json | 7 +++- translations/he.json | 7 +++- translations/hi.json | 7 +++- translations/it.json | 7 +++- translations/ja.json | 7 +++- translations/ko.json | 7 +++- translations/ku.json | 7 +++- translations/nl.json | 7 +++- translations/oc.json | 7 +++- translations/pl.json | 7 +++- translations/pt.json | 7 +++- translations/ru.json | 7 +++- translations/sw.json | 7 +++- translations/tr.json | 7 +++- translations/uk.json | 7 +++- translations/yi.json | 7 +++- translations/zh.json | 7 +++- utils.py | 2 +- webapp_create_post.py | 36 +++++++++++++++++++- 32 files changed, 210 insertions(+), 30 deletions(-) create mode 100644 theme/default/icons/scope_readingstatus.png diff --git a/daemon.py b/daemon.py index 8cfea4cdf..e80ac2b0b 100644 --- a/daemon.py +++ b/daemon.py @@ -22826,6 +22826,17 @@ class PubServer(BaseHTTPRequestHandler): curr_session, proxy_type): return 1 return -1 + elif post_type in ('newreadingstatus'): + if not fields.get('readingupdatetype'): + print(post_type + ' no readingupdatetype') + return -1 + if not fields.get('booktitle'): + print(post_type + ' no booktitle') + return -1 + if not fields.get('bookurl'): + print(post_type + ' no bookurl') + return -1 + # TODO reading status elif post_type in ('newshare', 'newwanted'): if not fields.get('itemQty'): print(post_type + ' no itemQty') @@ -24326,6 +24337,7 @@ def run_daemon(no_of_books: int, 'menuBookmarks': 'q', 'menuShares': 'h', 'menuWanted': 'w', + 'menuReadingStatus': '=', 'menuBlogs': 'b', 'menuNewswire': '#', 'menuLinks': 'l', diff --git a/tests.py b/tests.py index 33ddf6e94..8d8cb83fe 100644 --- a/tests.py +++ b/tests.py @@ -8241,7 +8241,6 @@ def _test_book_link(base_dir: str): if os.path.isdir(base_dir): shutil.rmtree(base_dir, ignore_errors=False, onerror=None) os.mkdir(base_dir) - reading_dir = base_dir + '/accounts/reading' content = 'Not a link' result = get_book_link_from_content(content) diff --git a/theme/default/icons/scope_readingstatus.png b/theme/default/icons/scope_readingstatus.png new file mode 100644 index 0000000000000000000000000000000000000000..262a35596ade78cbefa62826acf623dd6e77e39b GIT binary patch literal 8098 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 []: return ( 'newpost', 'newblog', 'newunlisted', 'newfollowers', 'newdm', 'newreminder', 'newreport', 'newquestion', 'newshare', 'newwanted', - 'editblogpost' + 'editblogpost', 'newreadingstatus' ) diff --git a/webapp_create_post.py b/webapp_create_post.py index 01185bc77..4d1bc1d60 100644 --- a/webapp_create_post.py +++ b/webapp_create_post.py @@ -810,6 +810,39 @@ def html_new_post(edit_post_params: {}, extra_fields += ' \n' extra_fields += '\n' + elif path.endswith('/newreadingstatus'): + scope_icon = 'scope_readingstatus.png' + scope_description = translate['Reading Status'] + endpoint = 'newreadingstatus' + + extra_fields = '

\n' + cat_str = translate['Update type'] + extra_fields += '
\n' + + extra_fields += '
\n' + + extra_fields += '
' + \ + edit_text_field(translate['Title'] + ':', + 'booktitle', '', '', True) + extra_fields += '
' + \ + edit_text_field('URL:', + 'bookurl', '', 'https://...', True) + extra_fields += '
' + \ + edit_number_field(translate['Rating'], + 'bookrating', '', 1, 5, None) + # TODO reading status + extra_fields += '
\n' citations_str = '' if endpoint == 'newblog': @@ -839,7 +872,8 @@ def html_new_post(edit_post_params: {}, replies_section = '' date_and_location = '' - if endpoint not in ('newshare', 'newwanted', 'newreport', 'newquestion'): + if endpoint not in ('newshare', 'newwanted', 'newreport', + 'newquestion', 'newreadingstatus'): if not is_new_reminder: replies_section = \