From 3ecd5345682d415b642ed776d0ca90f70952f347 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 17 Dec 2022 13:17:53 +0000 Subject: [PATCH 01/12] accept-ranges for images --- daemon.py | 1 + 1 file changed, 1 insertion(+) diff --git a/daemon.py b/daemon.py index 40091882c..0871ae78b 100644 --- a/daemon.py +++ b/daemon.py @@ -1080,6 +1080,7 @@ class PubServer(BaseHTTPRequestHandler): # self.send_header('ETag', '"' + etag + '"') if last_modified: self.send_header('last-modified', last_modified) + self.send_header('accept-ranges', 'bytes') self.end_headers() def _etag_exists(self, media_filename: str) -> bool: From 3df5e6c0a8083d6f4907109ee2a133defcf94c2d Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 17 Dec 2022 13:49:01 +0000 Subject: [PATCH 02/12] right to left text on calendar events --- daemon.py | 20 ++++++++++++++++++-- epicyon-calendar.css | 21 +++++++++++++++++++++ webapp_calendar.py | 21 ++++++++++++++++++--- 3 files changed, 57 insertions(+), 5 deletions(-) diff --git a/daemon.py b/daemon.py index 0871ae78b..c16b8a38f 100644 --- a/daemon.py +++ b/daemon.py @@ -18296,6 +18296,13 @@ class PubServer(BaseHTTPRequestHandler): if self.server.key_shortcuts.get(nickname): access_keys = self.server.key_shortcuts[nickname] + languages_understood = \ + get_understood_languages(self.server.base_dir, + self.server.http_prefix, + nickname, + self.server.domain_full, + self.server.person_cache) + # show the calendar screen msg = html_calendar(self.server.person_cache, self.server.translate, @@ -18306,7 +18313,8 @@ class PubServer(BaseHTTPRequestHandler): access_keys, False, self.server.system_language, self.server.default_timeline, - self.server.theme_name) + self.server.theme_name, + languages_understood) if msg: msg = msg.encode('utf-8') msglen = len(msg) @@ -18338,6 +18346,13 @@ class PubServer(BaseHTTPRequestHandler): if self.server.key_shortcuts.get(nickname): access_keys = self.server.key_shortcuts[nickname] + languages_understood = \ + get_understood_languages(self.server.base_dir, + self.server.http_prefix, + nickname, + self.server.domain_full, + self.server.person_cache) + # show the calendar screen msg = html_calendar(self.server.person_cache, self.server.translate, @@ -18349,7 +18364,8 @@ class PubServer(BaseHTTPRequestHandler): True, self.server.system_language, self.server.default_timeline, - self.server.theme_name) + self.server.theme_name, + languages_understood) if msg: msg = msg.encode('utf-8') msglen = len(msg) diff --git a/epicyon-calendar.css b/epicyon-calendar.css index e61643985..a2b4d407c 100644 --- a/epicyon-calendar.css +++ b/epicyon-calendar.css @@ -172,13 +172,34 @@ a:focus { font-size: 28px; position: relative; padding: 20px; + direction: ltr; } + +.calendar__day__event__rtl { + color: var(--event-color); + background-color: var(--event-background-private); + float: left; + font-size: 28px; + position: relative; + padding: 20px; + direction: rtl; +} + .calendar__day__event__public { color: var(--event-public-color); float: left; font-size: 28px; position: relative; padding: 20px; + direction: ltr; +} +.calendar__day__event__public__rtl { + color: var(--event-public-color); + float: left; + font-size: 28px; + position: relative; + padding: 20px; + direction: rtl; } .place { color: var(--place-color); diff --git a/webapp_calendar.py b/webapp_calendar.py index fc8ed42c8..3be12e510 100644 --- a/webapp_calendar.py +++ b/webapp_calendar.py @@ -22,10 +22,12 @@ from utils import remove_domain_port from utils import acct_dir from utils import local_actor_url from utils import replace_users_with_at +from utils import get_language_from_post from happening import get_todays_events from happening import get_calendar_events from happening import get_todays_events_icalendar from happening import get_month_events_icalendar +from webapp_utils import language_right_to_left from webapp_utils import get_banner_file from webapp_utils import set_custom_background from webapp_utils import html_header_with_external_style @@ -108,7 +110,9 @@ def _html_calendar_day(person_cache: {}, translate: {}, year: int, month_number: int, day_number: int, nickname: str, domain: str, day_events: [], month_name: str, actor: str, - theme: str, access_keys: {}) -> str: + theme: str, access_keys: {}, + system_language: str, + languages_understood: []) -> str: """Show a day within the calendar """ account_dir = acct_dir(base_dir, nickname, domain) @@ -250,10 +254,19 @@ def _html_calendar_day(person_cache: {}, translate: {}, translate['Delete this event'] + '" src="/' + \ 'icons/delete.png" />\n' + content_language = \ + get_language_from_post(event_post, system_language, + languages_understood) + is_rtl = language_right_to_left(content_language) + event_class = 'calendar__day__event' + if is_rtl: + event_class = 'calendar__day__event__rtl' cal_item_class = 'calItem' if event_is_public: event_class = 'calendar__day__event__public' + if is_rtl: + event_class = 'calendar__day__event__public__trl' cal_item_class = 'calItemPublic' if event_time: if event_end_time: @@ -322,7 +335,8 @@ def html_calendar(person_cache: {}, translate: {}, http_prefix: str, domain_full: str, text_mode_banner: str, access_keys: {}, icalendar: bool, system_language: str, - default_timeline: str, theme: str) -> str: + default_timeline: str, theme: str, + languages_understood: []) -> str: """Show the calendar for a person """ domain = remove_domain_port(domain_full) @@ -401,7 +415,8 @@ def html_calendar(person_cache: {}, translate: {}, year, month_number, day_number, nickname, domain, day_events, month_name, actor, - theme, access_keys) + theme, access_keys, + system_language, languages_understood) if icalendar: return get_month_events_icalendar(base_dir, nickname, domain, From 28ba04a9e02e7c6afe46f8e2286fe5e3bd6168f4 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 17 Dec 2022 14:08:43 +0000 Subject: [PATCH 03/12] Get language from calendar events --- daemon.py | 20 ++------------------ webapp_calendar.py | 19 +++++++++---------- 2 files changed, 11 insertions(+), 28 deletions(-) diff --git a/daemon.py b/daemon.py index c16b8a38f..0871ae78b 100644 --- a/daemon.py +++ b/daemon.py @@ -18296,13 +18296,6 @@ class PubServer(BaseHTTPRequestHandler): if self.server.key_shortcuts.get(nickname): access_keys = self.server.key_shortcuts[nickname] - languages_understood = \ - get_understood_languages(self.server.base_dir, - self.server.http_prefix, - nickname, - self.server.domain_full, - self.server.person_cache) - # show the calendar screen msg = html_calendar(self.server.person_cache, self.server.translate, @@ -18313,8 +18306,7 @@ class PubServer(BaseHTTPRequestHandler): access_keys, False, self.server.system_language, self.server.default_timeline, - self.server.theme_name, - languages_understood) + self.server.theme_name) if msg: msg = msg.encode('utf-8') msglen = len(msg) @@ -18346,13 +18338,6 @@ class PubServer(BaseHTTPRequestHandler): if self.server.key_shortcuts.get(nickname): access_keys = self.server.key_shortcuts[nickname] - languages_understood = \ - get_understood_languages(self.server.base_dir, - self.server.http_prefix, - nickname, - self.server.domain_full, - self.server.person_cache) - # show the calendar screen msg = html_calendar(self.server.person_cache, self.server.translate, @@ -18364,8 +18349,7 @@ class PubServer(BaseHTTPRequestHandler): True, self.server.system_language, self.server.default_timeline, - self.server.theme_name, - languages_understood) + self.server.theme_name) if msg: msg = msg.encode('utf-8') msglen = len(msg) diff --git a/webapp_calendar.py b/webapp_calendar.py index 3be12e510..9e4f34842 100644 --- a/webapp_calendar.py +++ b/webapp_calendar.py @@ -22,7 +22,6 @@ from utils import remove_domain_port from utils import acct_dir from utils import local_actor_url from utils import replace_users_with_at -from utils import get_language_from_post from happening import get_todays_events from happening import get_calendar_events from happening import get_todays_events_icalendar @@ -111,8 +110,7 @@ def _html_calendar_day(person_cache: {}, translate: {}, nickname: str, domain: str, day_events: [], month_name: str, actor: str, theme: str, access_keys: {}, - system_language: str, - languages_understood: []) -> str: + system_language: str) -> str: """Show a day within the calendar """ account_dir = acct_dir(base_dir, nickname, domain) @@ -174,6 +172,7 @@ def _html_calendar_day(person_cache: {}, translate: {}, start_time_str = '' end_time_str = '' event_description = None + event_language = system_language event_place = None post_id = None sender_name = '' @@ -181,6 +180,10 @@ def _html_calendar_day(person_cache: {}, translate: {}, event_is_public = False # get the time place and description for evnt in event_post: + event_language = system_language + if evnt.get('language'): + event_language = evnt['language'] + if evnt['type'] == 'Event': if evnt.get('post_id'): post_id = evnt['post_id'] @@ -254,10 +257,7 @@ def _html_calendar_day(person_cache: {}, translate: {}, translate['Delete this event'] + '" src="/' + \ 'icons/delete.png" />\n' - content_language = \ - get_language_from_post(event_post, system_language, - languages_understood) - is_rtl = language_right_to_left(content_language) + is_rtl = language_right_to_left(event_language) event_class = 'calendar__day__event' if is_rtl: @@ -335,8 +335,7 @@ def html_calendar(person_cache: {}, translate: {}, http_prefix: str, domain_full: str, text_mode_banner: str, access_keys: {}, icalendar: bool, system_language: str, - default_timeline: str, theme: str, - languages_understood: []) -> str: + default_timeline: str, theme: str) -> str: """Show the calendar for a person """ domain = remove_domain_port(domain_full) @@ -416,7 +415,7 @@ def html_calendar(person_cache: {}, translate: {}, nickname, domain, day_events, month_name, actor, theme, access_keys, - system_language, languages_understood) + system_language) if icalendar: return get_month_events_icalendar(base_dir, nickname, domain, From 667f4dcd45763117419f60484567e954802bbfbc Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 17 Dec 2022 14:26:02 +0000 Subject: [PATCH 04/12] Set calendar event language --- happening.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/happening.py b/happening.py index 6c15f41c4..1787ee903 100644 --- a/happening.py +++ b/happening.py @@ -273,6 +273,7 @@ def get_todays_events(base_dir: str, nickname: str, domain: str, if not _is_happening_post(post_json_object): continue + content_language = system_language if post_json_object.get('object'): content = None if post_json_object['object'].get('contentMap'): @@ -280,6 +281,7 @@ def get_todays_events(base_dir: str, nickname: str, domain: str, if post_json_object['object']['contentMap'].get(sys_lang): content = \ post_json_object['object']['contentMap'][sys_lang] + content_language = sys_lang if not content: if post_json_object['object'].get('content'): content = post_json_object['object']['content'] @@ -314,6 +316,7 @@ def get_todays_events(base_dir: str, nickname: str, domain: str, tag['sender'] = post_id.split('#statuses#')[0] tag['sender'] = tag['sender'].replace('#', '/') tag['public'] = public_event + tag['language'] = content_language post_event.append(tag) else: # tag is a place From 08d8650efd15a109747b58e00f141a5370d92832 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 17 Dec 2022 15:43:34 +0000 Subject: [PATCH 05/12] Automatically detect arabic language --- happening.py | 4 ++++ tests.py | 12 ++++++++++++ utils.py | 28 ++++++++++++++++++++++++++++ 3 files changed, 44 insertions(+) diff --git a/happening.py b/happening.py index 1787ee903..1ae82212e 100644 --- a/happening.py +++ b/happening.py @@ -26,6 +26,7 @@ from utils import get_status_number from utils import get_full_domain from utils import text_in_file from utils import remove_eol +from utils import is_arabic from filters import is_filtered from context import get_individual_post_context from session import get_method @@ -288,6 +289,9 @@ def get_todays_events(base_dir: str, nickname: str, domain: str, if content: if not _event_text_match(content, text_match): continue + if content_language != 'ar': + if is_arabic(content): + content_language = 'ar' public_event = is_public_post(post_json_object) diff --git a/tests.py b/tests.py index e5e0286c9..0768dafc3 100644 --- a/tests.py +++ b/tests.py @@ -54,6 +54,7 @@ from follow import clear_followers from follow import send_follow_request_via_server from follow import send_unfollow_request_via_server from siteactive import site_is_active +from utils import is_arabic from utils import remove_inverted_text from utils import remove_square_capitals from utils import standardize_text @@ -7638,6 +7639,16 @@ def _test_reply_language(base_dir: str) -> None: assert not get_reply_language(base_dir, post_json_object) +def _test_is_arabic() -> None: + print('is_arabic') + test = "Some English. هذا نص عربي" + assert is_arabic(test) + test = "Some English" + assert not is_arabic(test) + test = "" + assert not is_arabic(test) + + def run_all_tests(): base_dir = os.getcwd() print('Running tests...') @@ -7655,6 +7666,7 @@ def run_all_tests(): _test_checkbox_names() _test_thread_functions() _test_functions() + _test_is_arabic() _test_reply_language(base_dir) _test_emoji_in_actor_name(base_dir) _test_uninvert() diff --git a/utils.py b/utils.py index a3f4723df..519e2ad29 100644 --- a/utils.py +++ b/utils.py @@ -219,6 +219,23 @@ def get_content_from_post(post_json_object: {}, system_language: str, return standardize_text(content) +def is_arabic(content: str) -> bool: + """Returns true if the given text contains arabic + """ + if not content: + return False + result = re.sub(r'[^0-9\u0600-\u06ff\u0750-\u077f' + + '\ufb50-\ufbc1\ufbd3-\ufd3f\ufd50-' + + '\ufd8f\ufd50-\ufd8f\ufe70-\ufefc\uFDF0-\uFDFD]+', + ' ', content) + if result: + result = result.strip() + # more than a third of the content + if len(result) > len(content) / 3: + return True + return False + + def get_language_from_post(post_json_object: {}, system_language: str, languages_understood: [], content_type: str = "content") -> str: @@ -236,13 +253,24 @@ def get_language_from_post(post_json_object: {}, system_language: str, if this_post_json[map_dict].get(system_language): sys_lang = this_post_json[map_dict][system_language] if isinstance(sys_lang, str): + content = this_post_json[map_dict][system_language] + if is_arabic(content): + return 'ar' return system_language else: # is there a contentMap/summaryMap entry for one of # the understood languages? for lang in languages_understood: if this_post_json[map_dict].get(lang): + content = this_post_json[map_dict][lang] + if is_arabic(content): + return 'ar' return lang + else: + if isinstance(this_post_json[content_type], str): + content = this_post_json[content_type] + if is_arabic(content): + return 'ar' return system_language From 2587a5c4ffdfe4dcd03a5afc8ac4a0e96a64706d Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 17 Dec 2022 15:56:34 +0000 Subject: [PATCH 06/12] Detect arabic for calendar events --- webapp_calendar.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/webapp_calendar.py b/webapp_calendar.py index 9e4f34842..facff07da 100644 --- a/webapp_calendar.py +++ b/webapp_calendar.py @@ -10,6 +10,7 @@ __module_group__ = "Calendar" import os from datetime import datetime from datetime import date +from utils import is_arabic from utils import get_display_name from utils import get_config_param from utils import get_nickname_from_actor @@ -230,6 +231,7 @@ def _html_calendar_day(person_cache: {}, translate: {}, event_place = event_map # prepend a link to the sender of the calendar item + orig_event_description = event_description if sender_name and event_description: # if the sender is also mentioned within the event # description then this is a reminder @@ -257,6 +259,9 @@ def _html_calendar_day(person_cache: {}, translate: {}, translate['Delete this event'] + '" src="/' + \ 'icons/delete.png" />\n' + if event_language != 'ar' and orig_event_description: + if is_arabic(orig_event_description): + event_language = 'ar' is_rtl = language_right_to_left(event_language) event_class = 'calendar__day__event' From 048fa0d01fdbcc6fdd2bbefe2cd8cfd03180f81f Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 17 Dec 2022 15:59:23 +0000 Subject: [PATCH 07/12] Typo --- webapp_calendar.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webapp_calendar.py b/webapp_calendar.py index facff07da..2e27a5406 100644 --- a/webapp_calendar.py +++ b/webapp_calendar.py @@ -271,7 +271,7 @@ def _html_calendar_day(person_cache: {}, translate: {}, if event_is_public: event_class = 'calendar__day__event__public' if is_rtl: - event_class = 'calendar__day__event__public__trl' + event_class = 'calendar__day__event__public__rtl' cal_item_class = 'calItemPublic' if event_time: if event_end_time: From d725a351835009174b080cb73ab2cf12438370f1 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 17 Dec 2022 16:04:30 +0000 Subject: [PATCH 08/12] Arabic number of characters --- utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils.py b/utils.py index 519e2ad29..04b3f6234 100644 --- a/utils.py +++ b/utils.py @@ -231,7 +231,7 @@ def is_arabic(content: str) -> bool: if result: result = result.strip() # more than a third of the content - if len(result) > len(content) / 3: + if len(result) > 1: return True return False From 90e04a5a75e9a67e6b0cbe3183740d6b6ba88196 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 17 Dec 2022 16:09:20 +0000 Subject: [PATCH 09/12] Arabic number of characters --- utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils.py b/utils.py index 04b3f6234..519e2ad29 100644 --- a/utils.py +++ b/utils.py @@ -231,7 +231,7 @@ def is_arabic(content: str) -> bool: if result: result = result.strip() # more than a third of the content - if len(result) > 1: + if len(result) > len(content) / 3: return True return False From e6437b50cc5f961557937b7096814a3ad6bbad58 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 17 Dec 2022 16:19:25 +0000 Subject: [PATCH 10/12] Abandon arabic language detection --- utils.py | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/utils.py b/utils.py index 519e2ad29..afb505102 100644 --- a/utils.py +++ b/utils.py @@ -253,24 +253,13 @@ def get_language_from_post(post_json_object: {}, system_language: str, if this_post_json[map_dict].get(system_language): sys_lang = this_post_json[map_dict][system_language] if isinstance(sys_lang, str): - content = this_post_json[map_dict][system_language] - if is_arabic(content): - return 'ar' return system_language else: # is there a contentMap/summaryMap entry for one of # the understood languages? for lang in languages_understood: if this_post_json[map_dict].get(lang): - content = this_post_json[map_dict][lang] - if is_arabic(content): - return 'ar' return lang - else: - if isinstance(this_post_json[content_type], str): - content = this_post_json[content_type] - if is_arabic(content): - return 'ar' return system_language From 4106000065b9ff47b7d96d7e68f701b3a030d4c0 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 17 Dec 2022 16:28:12 +0000 Subject: [PATCH 11/12] Abandon arabic language detection --- happening.py | 4 ---- tests.py | 12 ------------ utils.py | 17 ----------------- webapp_calendar.py | 5 ----- 4 files changed, 38 deletions(-) diff --git a/happening.py b/happening.py index 1ae82212e..1787ee903 100644 --- a/happening.py +++ b/happening.py @@ -26,7 +26,6 @@ from utils import get_status_number from utils import get_full_domain from utils import text_in_file from utils import remove_eol -from utils import is_arabic from filters import is_filtered from context import get_individual_post_context from session import get_method @@ -289,9 +288,6 @@ def get_todays_events(base_dir: str, nickname: str, domain: str, if content: if not _event_text_match(content, text_match): continue - if content_language != 'ar': - if is_arabic(content): - content_language = 'ar' public_event = is_public_post(post_json_object) diff --git a/tests.py b/tests.py index 0768dafc3..e5e0286c9 100644 --- a/tests.py +++ b/tests.py @@ -54,7 +54,6 @@ from follow import clear_followers from follow import send_follow_request_via_server from follow import send_unfollow_request_via_server from siteactive import site_is_active -from utils import is_arabic from utils import remove_inverted_text from utils import remove_square_capitals from utils import standardize_text @@ -7639,16 +7638,6 @@ def _test_reply_language(base_dir: str) -> None: assert not get_reply_language(base_dir, post_json_object) -def _test_is_arabic() -> None: - print('is_arabic') - test = "Some English. هذا نص عربي" - assert is_arabic(test) - test = "Some English" - assert not is_arabic(test) - test = "" - assert not is_arabic(test) - - def run_all_tests(): base_dir = os.getcwd() print('Running tests...') @@ -7666,7 +7655,6 @@ def run_all_tests(): _test_checkbox_names() _test_thread_functions() _test_functions() - _test_is_arabic() _test_reply_language(base_dir) _test_emoji_in_actor_name(base_dir) _test_uninvert() diff --git a/utils.py b/utils.py index afb505102..a3f4723df 100644 --- a/utils.py +++ b/utils.py @@ -219,23 +219,6 @@ def get_content_from_post(post_json_object: {}, system_language: str, return standardize_text(content) -def is_arabic(content: str) -> bool: - """Returns true if the given text contains arabic - """ - if not content: - return False - result = re.sub(r'[^0-9\u0600-\u06ff\u0750-\u077f' + - '\ufb50-\ufbc1\ufbd3-\ufd3f\ufd50-' + - '\ufd8f\ufd50-\ufd8f\ufe70-\ufefc\uFDF0-\uFDFD]+', - ' ', content) - if result: - result = result.strip() - # more than a third of the content - if len(result) > len(content) / 3: - return True - return False - - def get_language_from_post(post_json_object: {}, system_language: str, languages_understood: [], content_type: str = "content") -> str: diff --git a/webapp_calendar.py b/webapp_calendar.py index 2e27a5406..5d34883d8 100644 --- a/webapp_calendar.py +++ b/webapp_calendar.py @@ -10,7 +10,6 @@ __module_group__ = "Calendar" import os from datetime import datetime from datetime import date -from utils import is_arabic from utils import get_display_name from utils import get_config_param from utils import get_nickname_from_actor @@ -231,7 +230,6 @@ def _html_calendar_day(person_cache: {}, translate: {}, event_place = event_map # prepend a link to the sender of the calendar item - orig_event_description = event_description if sender_name and event_description: # if the sender is also mentioned within the event # description then this is a reminder @@ -259,9 +257,6 @@ def _html_calendar_day(person_cache: {}, translate: {}, translate['Delete this event'] + '" src="/' + \ 'icons/delete.png" />\n' - if event_language != 'ar' and orig_event_description: - if is_arabic(orig_event_description): - event_language = 'ar' is_rtl = language_right_to_left(event_language) event_class = 'calendar__day__event' From 6ed1c7715860ff08bf8c43b775848773055131c0 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 17 Dec 2022 17:49:54 +0000 Subject: [PATCH 12/12] Removing calendar events --- daemon.py | 13 +++++++++++-- happening.py | 23 ++++++++++++++++------- webapp_calendar.py | 3 +++ 3 files changed, 30 insertions(+), 9 deletions(-) diff --git a/daemon.py b/daemon.py index 0871ae78b..df9a05c83 100644 --- a/daemon.py +++ b/daemon.py @@ -5064,8 +5064,17 @@ class PubServer(BaseHTTPRequestHandler): if '&submitYes=' in remove_post_confirm_params: remove_post_confirm_params = \ urllib.parse.unquote_plus(remove_post_confirm_params) - remove_message_id = \ - remove_post_confirm_params.split('messageId=')[1] + if 'messageId=' in remove_post_confirm_params: + remove_message_id = \ + remove_post_confirm_params.split('messageId=')[1] + elif 'eventid=' in remove_post_confirm_params: + remove_message_id = \ + remove_post_confirm_params.split('eventid=')[1] + else: + self.send_response(400) + self.end_headers() + self.server.postreq_busy = False + return if '&' in remove_message_id: remove_message_id = remove_message_id.split('&')[0] print('remove_message_id: ' + remove_message_id) diff --git a/happening.py b/happening.py index 1787ee903..e9d460b67 100644 --- a/happening.py +++ b/happening.py @@ -762,17 +762,26 @@ def remove_calendar_event(base_dir: str, nickname: str, domain: str, if '/' in message_id: message_id = message_id.replace('/', '#') if not text_in_file(message_id, calendar_filename): + message_id = message_id.replace('#', '/') + if not text_in_file(message_id, calendar_filename): + return + lines_str = '' + try: + with open(calendar_filename, 'r', encoding='utf-8') as fp_cal: + lines_str = fp_cal.read() + except OSError: + print('EX: unable to read calendar file ' + + calendar_filename) + if not lines_str: return - lines = None - with open(calendar_filename, 'r', encoding='utf-8') as fp_cal: - lines = fp_cal.readlines() - if not lines: - return + lines = lines_str.split('\n') + print('Removing calendar event: ' + message_id) try: with open(calendar_filename, 'w+', encoding='utf-8') as fp_cal: for line in lines: - if message_id not in line: - fp_cal.write(line) + if message_id in line: + continue + fp_cal.write(line + '\n') except OSError: print('EX: unable to remove calendar event ' + calendar_filename) diff --git a/webapp_calendar.py b/webapp_calendar.py index 5d34883d8..eebf7bc22 100644 --- a/webapp_calendar.py +++ b/webapp_calendar.py @@ -85,6 +85,9 @@ def html_calendar_delete_confirm(translate: {}, base_dir: str, str(month_number) + '">\n' delete_post_str += ' \n' + if post_time: + delete_post_str += ' \n' delete_post_str += \ ' \n' delete_post_str += \