From 07db961b26926220b3a93bd479ff1a55cd8f16e0 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Tue, 27 Aug 2024 18:05:02 +0100 Subject: [PATCH] Move mute button functions to their own module --- daemon_get.py | 4 +- daemon_get_buttons.py | 343 ---------------------------------- daemon_get_buttons_mute.py | 365 +++++++++++++++++++++++++++++++++++++ 3 files changed, 367 insertions(+), 345 deletions(-) create mode 100644 daemon_get_buttons_mute.py diff --git a/daemon_get.py b/daemon_get.py index c6182ca5f..271637e9d 100644 --- a/daemon_get.py +++ b/daemon_get.py @@ -163,8 +163,8 @@ from daemon_get_buttons import reaction_button_undo from daemon_get_buttons import bookmark_button from daemon_get_buttons import bookmark_button_undo from daemon_get_buttons import delete_button -from daemon_get_buttons import mute_button -from daemon_get_buttons import mute_button_undo +from daemon_get_buttons_mute import mute_button +from daemon_get_buttons_mute import mute_button_undo from daemon_get_newswire import get_newswire_feed from daemon_get_newswire import newswire_vote from daemon_get_newswire import newswire_unvote diff --git a/daemon_get_buttons.py b/daemon_get_buttons.py index 265bc8471..16b962cc2 100644 --- a/daemon_get_buttons.py +++ b/daemon_get_buttons.py @@ -11,8 +11,6 @@ __module_group__ = "Core GET" import os import urllib.parse -from blocking import unmute_post -from blocking import mute_post from bookmarks import bookmark_post from bookmarks import undo_bookmark_post from reaction import update_reaction_collection @@ -1309,344 +1307,3 @@ def delete_button(self, calling_domain: str, path: str, debug) redirect_headers(self, actor + '/' + timeline_str, cookie, calling_domain, 303) - - -def mute_button(self, calling_domain: str, path: str, - base_dir: str, http_prefix: str, - domain: str, domain_full: str, port: int, - onion_domain: str, i2p_domain: str, - getreq_start_time, cookie: str, - debug: str, curr_session, - signing_priv_key_pem: str, - recent_posts_cache: {}, - max_recent_posts: int, - translate: {}, - cached_webfingers: {}, - person_cache: {}, - allow_deletion: bool, - project_version: str, - yt_replace_domain: str, - twitter_replacement_domain: str, - show_published_date_only: bool, - peertube_instances: [], - allow_local_network_access: bool, - theme_name: str, - system_language: str, - max_like_count: int, - cw_lists: {}, - lists_enabled: {}, - dogwhistles: {}, - buy_sites: [], - auto_cw_cache: {}, - fitness: {}, - account_timezone: {}, - bold_reading_nicknames: {}, - min_images_for_accounts: [], - default_timeline: str) -> None: - """Mute button is pressed - """ - mute_url = path.split('?mute=')[1] - if '?' in mute_url: - mute_url = mute_url.split('?')[0] - first_post_id = '' - if '?firstpost=' in path: - first_post_id = path.split('?firstpost=')[1] - if '?' in first_post_id: - first_post_id = first_post_id.split('?')[0] - first_post_id = first_post_id.replace('/', '--') - first_post_id = ';firstpost=' + first_post_id.replace('#', '--') - timeline_bookmark = '' - if '?bm=' in path: - timeline_bookmark = path.split('?bm=')[1] - if '?' in timeline_bookmark: - timeline_bookmark = timeline_bookmark.split('?')[0] - timeline_bookmark = '#' + timeline_bookmark - timeline_str = default_timeline - if '?tl=' in path: - timeline_str = path.split('?tl=')[1] - if '?' in timeline_str: - timeline_str = timeline_str.split('?')[0] - page_number = 1 - if '?page=' in path: - page_number_str = path.split('?page=')[1] - if ';' in page_number_str: - page_number_str = page_number_str.split(';')[0] - if '?' in page_number_str: - page_number_str = page_number_str.split('?')[0] - if '#' in page_number_str: - page_number_str = page_number_str.split('#')[0] - if len(page_number_str) > 5: - page_number_str = "1" - if page_number_str.isdigit(): - page_number = int(page_number_str) - actor = \ - http_prefix + '://' + domain_full + path.split('?mute=')[0] - nickname = get_nickname_from_actor(actor) - if not nickname: - http_404(self, 59) - return - mute_post(base_dir, nickname, domain, port, - http_prefix, mute_url, - recent_posts_cache, debug) - mute_filename = \ - locate_post(base_dir, nickname, domain, mute_url) - if mute_filename: - print('mute_post: Regenerating html post for changed mute status') - mute_post_json = load_json(mute_filename) - if mute_post_json: - cached_post_filename = \ - get_cached_post_filename(base_dir, nickname, - domain, mute_post_json) - print('mute_post: Muted post json: ' + str(mute_post_json)) - print('mute_post: Muted post nickname: ' + - nickname + ' ' + domain) - print('mute_post: Muted post cache: ' + - str(cached_post_filename)) - show_individual_post_icons = True - manually_approve_followers = \ - follower_approval_active(base_dir, - nickname, domain) - show_repeats = not is_dm(mute_post_json) - show_public_only = False - store_to_cache = True - use_cache_only = False - allow_downloads = False - show_avatar_options = True - avatar_url = None - timezone = None - if account_timezone.get(nickname): - timezone = account_timezone.get(nickname) - mitm = False - if os.path.isfile(mute_filename.replace('.json', '') + - '.mitm'): - mitm = True - bold_reading = False - if bold_reading_nicknames.get(nickname): - bold_reading = True - minimize_all_images = False - if nickname in min_images_for_accounts: - minimize_all_images = True - individual_post_as_html(signing_priv_key_pem, - allow_downloads, - recent_posts_cache, - max_recent_posts, - translate, - page_number, base_dir, - curr_session, - cached_webfingers, - person_cache, - nickname, domain, - port, mute_post_json, - avatar_url, show_avatar_options, - allow_deletion, - http_prefix, - project_version, - timeline_str, - yt_replace_domain, - twitter_replacement_domain, - show_published_date_only, - peertube_instances, - allow_local_network_access, - theme_name, - system_language, - max_like_count, - show_repeats, - show_individual_post_icons, - manually_approve_followers, - show_public_only, store_to_cache, - use_cache_only, - cw_lists, - lists_enabled, - timezone, mitm, bold_reading, - dogwhistles, - minimize_all_images, None, - buy_sites, - auto_cw_cache) - else: - print('WARN: Muted post not found: ' + mute_filename) - - if calling_domain.endswith('.onion') and onion_domain: - actor = \ - 'http://' + onion_domain + \ - path.split('?mute=')[0] - elif (calling_domain.endswith('.i2p') and i2p_domain): - actor = \ - 'http://' + i2p_domain + \ - path.split('?mute=')[0] - fitness_performance(getreq_start_time, fitness, - '_GET', '_mute_button', debug) - - page_number_str = str(page_number) - redirect_str = \ - actor + '/' + timeline_str + '?page=' + page_number_str + \ - first_post_id + timeline_bookmark - redirect_headers(self, redirect_str, cookie, calling_domain, 303) - - -def mute_button_undo(self, calling_domain: str, path: str, - base_dir: str, http_prefix: str, - domain: str, domain_full: str, port: int, - onion_domain: str, i2p_domain: str, - getreq_start_time, cookie: str, - debug: str, curr_session, - signing_priv_key_pem: str, - recent_posts_cache: {}, - max_recent_posts: int, - translate: {}, - cached_webfingers: {}, - person_cache: {}, - allow_deletion: bool, - project_version: str, - yt_replace_domain: str, - twitter_replacement_domain: str, - show_published_date_only: bool, - peertube_instances: [], - allow_local_network_access: bool, - theme_name: str, - system_language: str, - max_like_count: int, - cw_lists: {}, - lists_enabled: {}, - dogwhistles: {}, - buy_sites: [], - auto_cw_cache: {}, - fitness: {}, - account_timezone: {}, - bold_reading_nicknames: {}, - min_images_for_accounts: [], - default_timeline: str) -> None: - """Undo mute button is pressed - """ - mute_url = path.split('?unmute=')[1] - if '?' in mute_url: - mute_url = mute_url.split('?')[0] - first_post_id = '' - if '?firstpost=' in path: - first_post_id = path.split('?firstpost=')[1] - if '?' in first_post_id: - first_post_id = first_post_id.split('?')[0] - first_post_id = first_post_id.replace('/', '--') - first_post_id = ';firstpost=' + first_post_id.replace('#', '--') - timeline_bookmark = '' - if '?bm=' in path: - timeline_bookmark = path.split('?bm=')[1] - if '?' in timeline_bookmark: - timeline_bookmark = timeline_bookmark.split('?')[0] - timeline_bookmark = '#' + timeline_bookmark - timeline_str = default_timeline - if '?tl=' in path: - timeline_str = path.split('?tl=')[1] - if '?' in timeline_str: - timeline_str = timeline_str.split('?')[0] - page_number = 1 - if '?page=' in path: - page_number_str = path.split('?page=')[1] - if ';' in page_number_str: - page_number_str = page_number_str.split(';')[0] - if '?' in page_number_str: - page_number_str = page_number_str.split('?')[0] - if '#' in page_number_str: - page_number_str = page_number_str.split('#')[0] - if len(page_number_str) > 5: - page_number_str = "1" - if page_number_str.isdigit(): - page_number = int(page_number_str) - actor = \ - http_prefix + '://' + domain_full + path.split('?unmute=')[0] - nickname = get_nickname_from_actor(actor) - if not nickname: - http_404(self, 60) - return - unmute_post(base_dir, nickname, domain, port, - http_prefix, mute_url, - recent_posts_cache, debug) - mute_filename = \ - locate_post(base_dir, nickname, domain, mute_url) - if mute_filename: - print('unmute_post: ' + - 'Regenerating html post for changed unmute status') - mute_post_json = load_json(mute_filename) - if mute_post_json: - cached_post_filename = \ - get_cached_post_filename(base_dir, nickname, - domain, mute_post_json) - print('unmute_post: Unmuted post json: ' + str(mute_post_json)) - print('unmute_post: Unmuted post nickname: ' + - nickname + ' ' + domain) - print('unmute_post: Unmuted post cache: ' + - str(cached_post_filename)) - show_individual_post_icons = True - manually_approve_followers = \ - follower_approval_active(base_dir, nickname, domain) - show_repeats = not is_dm(mute_post_json) - show_public_only = False - store_to_cache = True - use_cache_only = False - allow_downloads = False - show_avatar_options = True - avatar_url = None - timezone = None - if account_timezone.get(nickname): - timezone = account_timezone.get(nickname) - mitm = False - if os.path.isfile(mute_filename.replace('.json', '') + - '.mitm'): - mitm = True - bold_reading = False - if bold_reading_nicknames.get(nickname): - bold_reading = True - minimize_all_images = False - if nickname in min_images_for_accounts: - minimize_all_images = True - individual_post_as_html(signing_priv_key_pem, - allow_downloads, - recent_posts_cache, - max_recent_posts, - translate, - page_number, base_dir, - curr_session, - cached_webfingers, - person_cache, - nickname, domain, - port, mute_post_json, - avatar_url, show_avatar_options, - allow_deletion, - http_prefix, - project_version, - timeline_str, - yt_replace_domain, - twitter_replacement_domain, - show_published_date_only, - peertube_instances, - allow_local_network_access, - theme_name, - system_language, - max_like_count, - show_repeats, - show_individual_post_icons, - manually_approve_followers, - show_public_only, store_to_cache, - use_cache_only, - cw_lists, - lists_enabled, - timezone, mitm, bold_reading, - dogwhistles, - minimize_all_images, None, - buy_sites, - auto_cw_cache) - else: - print('WARN: Unmuted post not found: ' + mute_filename) - if calling_domain.endswith('.onion') and onion_domain: - actor = \ - 'http://' + onion_domain + path.split('?unmute=')[0] - elif calling_domain.endswith('.i2p') and i2p_domain: - actor = \ - 'http://' + i2p_domain + path.split('?unmute=')[0] - fitness_performance(getreq_start_time, fitness, - '_GET', '_undo_mute_button', debug) - - page_number_str = str(page_number) - redirect_str = \ - actor + '/' + timeline_str + '?page=' + page_number_str + \ - first_post_id + timeline_bookmark - redirect_headers(self, redirect_str, cookie, calling_domain, 303) diff --git a/daemon_get_buttons_mute.py b/daemon_get_buttons_mute.py new file mode 100644 index 000000000..b2b1d490f --- /dev/null +++ b/daemon_get_buttons_mute.py @@ -0,0 +1,365 @@ +""" HTTP GET for mute buttons within the user interface """ + +__filename__ = "daemon_get_buttons_mute.py" +__author__ = "Bob Mottram" +__license__ = "AGPL3+" +__version__ = "1.5.0" +__maintainer__ = "Bob Mottram" +__email__ = "bob@libreserver.org" +__status__ = "Production" +__module_group__ = "Core GET" + +import os +from utils import is_dm +from utils import get_cached_post_filename +from utils import load_json +from utils import locate_post +from utils import get_nickname_from_actor +from httpcodes import http_404 +from httpheaders import redirect_headers +from blocking import unmute_post +from blocking import mute_post +from follow import follower_approval_active +from webapp_post import individual_post_as_html +from fitnessFunctions import fitness_performance + + +def mute_button(self, calling_domain: str, path: str, + base_dir: str, http_prefix: str, + domain: str, domain_full: str, port: int, + onion_domain: str, i2p_domain: str, + getreq_start_time, cookie: str, + debug: str, curr_session, + signing_priv_key_pem: str, + recent_posts_cache: {}, + max_recent_posts: int, + translate: {}, + cached_webfingers: {}, + person_cache: {}, + allow_deletion: bool, + project_version: str, + yt_replace_domain: str, + twitter_replacement_domain: str, + show_published_date_only: bool, + peertube_instances: [], + allow_local_network_access: bool, + theme_name: str, + system_language: str, + max_like_count: int, + cw_lists: {}, + lists_enabled: {}, + dogwhistles: {}, + buy_sites: [], + auto_cw_cache: {}, + fitness: {}, + account_timezone: {}, + bold_reading_nicknames: {}, + min_images_for_accounts: [], + default_timeline: str) -> None: + """Mute button is pressed + """ + mute_url = path.split('?mute=')[1] + if '?' in mute_url: + mute_url = mute_url.split('?')[0] + first_post_id = '' + if '?firstpost=' in path: + first_post_id = path.split('?firstpost=')[1] + if '?' in first_post_id: + first_post_id = first_post_id.split('?')[0] + first_post_id = first_post_id.replace('/', '--') + first_post_id = ';firstpost=' + first_post_id.replace('#', '--') + timeline_bookmark = '' + if '?bm=' in path: + timeline_bookmark = path.split('?bm=')[1] + if '?' in timeline_bookmark: + timeline_bookmark = timeline_bookmark.split('?')[0] + timeline_bookmark = '#' + timeline_bookmark + timeline_str = default_timeline + if '?tl=' in path: + timeline_str = path.split('?tl=')[1] + if '?' in timeline_str: + timeline_str = timeline_str.split('?')[0] + page_number = 1 + if '?page=' in path: + page_number_str = path.split('?page=')[1] + if ';' in page_number_str: + page_number_str = page_number_str.split(';')[0] + if '?' in page_number_str: + page_number_str = page_number_str.split('?')[0] + if '#' in page_number_str: + page_number_str = page_number_str.split('#')[0] + if len(page_number_str) > 5: + page_number_str = "1" + if page_number_str.isdigit(): + page_number = int(page_number_str) + actor = \ + http_prefix + '://' + domain_full + path.split('?mute=')[0] + nickname = get_nickname_from_actor(actor) + if not nickname: + http_404(self, 59) + return + mute_post(base_dir, nickname, domain, port, + http_prefix, mute_url, + recent_posts_cache, debug) + mute_filename = \ + locate_post(base_dir, nickname, domain, mute_url) + if mute_filename: + print('mute_post: Regenerating html post for changed mute status') + mute_post_json = load_json(mute_filename) + if mute_post_json: + cached_post_filename = \ + get_cached_post_filename(base_dir, nickname, + domain, mute_post_json) + print('mute_post: Muted post json: ' + str(mute_post_json)) + print('mute_post: Muted post nickname: ' + + nickname + ' ' + domain) + print('mute_post: Muted post cache: ' + + str(cached_post_filename)) + show_individual_post_icons = True + manually_approve_followers = \ + follower_approval_active(base_dir, + nickname, domain) + show_repeats = not is_dm(mute_post_json) + show_public_only = False + store_to_cache = True + use_cache_only = False + allow_downloads = False + show_avatar_options = True + avatar_url = None + timezone = None + if account_timezone.get(nickname): + timezone = account_timezone.get(nickname) + mitm = False + if os.path.isfile(mute_filename.replace('.json', '') + + '.mitm'): + mitm = True + bold_reading = False + if bold_reading_nicknames.get(nickname): + bold_reading = True + minimize_all_images = False + if nickname in min_images_for_accounts: + minimize_all_images = True + individual_post_as_html(signing_priv_key_pem, + allow_downloads, + recent_posts_cache, + max_recent_posts, + translate, + page_number, base_dir, + curr_session, + cached_webfingers, + person_cache, + nickname, domain, + port, mute_post_json, + avatar_url, show_avatar_options, + allow_deletion, + http_prefix, + project_version, + timeline_str, + yt_replace_domain, + twitter_replacement_domain, + show_published_date_only, + peertube_instances, + allow_local_network_access, + theme_name, + system_language, + max_like_count, + show_repeats, + show_individual_post_icons, + manually_approve_followers, + show_public_only, store_to_cache, + use_cache_only, + cw_lists, + lists_enabled, + timezone, mitm, bold_reading, + dogwhistles, + minimize_all_images, None, + buy_sites, + auto_cw_cache) + else: + print('WARN: Muted post not found: ' + mute_filename) + + if calling_domain.endswith('.onion') and onion_domain: + actor = \ + 'http://' + onion_domain + \ + path.split('?mute=')[0] + elif (calling_domain.endswith('.i2p') and i2p_domain): + actor = \ + 'http://' + i2p_domain + \ + path.split('?mute=')[0] + fitness_performance(getreq_start_time, fitness, + '_GET', '_mute_button', debug) + + page_number_str = str(page_number) + redirect_str = \ + actor + '/' + timeline_str + '?page=' + page_number_str + \ + first_post_id + timeline_bookmark + redirect_headers(self, redirect_str, cookie, calling_domain, 303) + + +def mute_button_undo(self, calling_domain: str, path: str, + base_dir: str, http_prefix: str, + domain: str, domain_full: str, port: int, + onion_domain: str, i2p_domain: str, + getreq_start_time, cookie: str, + debug: str, curr_session, + signing_priv_key_pem: str, + recent_posts_cache: {}, + max_recent_posts: int, + translate: {}, + cached_webfingers: {}, + person_cache: {}, + allow_deletion: bool, + project_version: str, + yt_replace_domain: str, + twitter_replacement_domain: str, + show_published_date_only: bool, + peertube_instances: [], + allow_local_network_access: bool, + theme_name: str, + system_language: str, + max_like_count: int, + cw_lists: {}, + lists_enabled: {}, + dogwhistles: {}, + buy_sites: [], + auto_cw_cache: {}, + fitness: {}, + account_timezone: {}, + bold_reading_nicknames: {}, + min_images_for_accounts: [], + default_timeline: str) -> None: + """Undo mute button is pressed + """ + mute_url = path.split('?unmute=')[1] + if '?' in mute_url: + mute_url = mute_url.split('?')[0] + first_post_id = '' + if '?firstpost=' in path: + first_post_id = path.split('?firstpost=')[1] + if '?' in first_post_id: + first_post_id = first_post_id.split('?')[0] + first_post_id = first_post_id.replace('/', '--') + first_post_id = ';firstpost=' + first_post_id.replace('#', '--') + timeline_bookmark = '' + if '?bm=' in path: + timeline_bookmark = path.split('?bm=')[1] + if '?' in timeline_bookmark: + timeline_bookmark = timeline_bookmark.split('?')[0] + timeline_bookmark = '#' + timeline_bookmark + timeline_str = default_timeline + if '?tl=' in path: + timeline_str = path.split('?tl=')[1] + if '?' in timeline_str: + timeline_str = timeline_str.split('?')[0] + page_number = 1 + if '?page=' in path: + page_number_str = path.split('?page=')[1] + if ';' in page_number_str: + page_number_str = page_number_str.split(';')[0] + if '?' in page_number_str: + page_number_str = page_number_str.split('?')[0] + if '#' in page_number_str: + page_number_str = page_number_str.split('#')[0] + if len(page_number_str) > 5: + page_number_str = "1" + if page_number_str.isdigit(): + page_number = int(page_number_str) + actor = \ + http_prefix + '://' + domain_full + path.split('?unmute=')[0] + nickname = get_nickname_from_actor(actor) + if not nickname: + http_404(self, 60) + return + unmute_post(base_dir, nickname, domain, port, + http_prefix, mute_url, + recent_posts_cache, debug) + mute_filename = \ + locate_post(base_dir, nickname, domain, mute_url) + if mute_filename: + print('unmute_post: ' + + 'Regenerating html post for changed unmute status') + mute_post_json = load_json(mute_filename) + if mute_post_json: + cached_post_filename = \ + get_cached_post_filename(base_dir, nickname, + domain, mute_post_json) + print('unmute_post: Unmuted post json: ' + str(mute_post_json)) + print('unmute_post: Unmuted post nickname: ' + + nickname + ' ' + domain) + print('unmute_post: Unmuted post cache: ' + + str(cached_post_filename)) + show_individual_post_icons = True + manually_approve_followers = \ + follower_approval_active(base_dir, nickname, domain) + show_repeats = not is_dm(mute_post_json) + show_public_only = False + store_to_cache = True + use_cache_only = False + allow_downloads = False + show_avatar_options = True + avatar_url = None + timezone = None + if account_timezone.get(nickname): + timezone = account_timezone.get(nickname) + mitm = False + if os.path.isfile(mute_filename.replace('.json', '') + + '.mitm'): + mitm = True + bold_reading = False + if bold_reading_nicknames.get(nickname): + bold_reading = True + minimize_all_images = False + if nickname in min_images_for_accounts: + minimize_all_images = True + individual_post_as_html(signing_priv_key_pem, + allow_downloads, + recent_posts_cache, + max_recent_posts, + translate, + page_number, base_dir, + curr_session, + cached_webfingers, + person_cache, + nickname, domain, + port, mute_post_json, + avatar_url, show_avatar_options, + allow_deletion, + http_prefix, + project_version, + timeline_str, + yt_replace_domain, + twitter_replacement_domain, + show_published_date_only, + peertube_instances, + allow_local_network_access, + theme_name, + system_language, + max_like_count, + show_repeats, + show_individual_post_icons, + manually_approve_followers, + show_public_only, store_to_cache, + use_cache_only, + cw_lists, + lists_enabled, + timezone, mitm, bold_reading, + dogwhistles, + minimize_all_images, None, + buy_sites, + auto_cw_cache) + else: + print('WARN: Unmuted post not found: ' + mute_filename) + if calling_domain.endswith('.onion') and onion_domain: + actor = \ + 'http://' + onion_domain + path.split('?unmute=')[0] + elif calling_domain.endswith('.i2p') and i2p_domain: + actor = \ + 'http://' + i2p_domain + path.split('?unmute=')[0] + fitness_performance(getreq_start_time, fitness, + '_GET', '_undo_mute_button', debug) + + page_number_str = str(page_number) + redirect_str = \ + actor + '/' + timeline_str + '?page=' + page_number_str + \ + first_post_id + timeline_bookmark + redirect_headers(self, redirect_str, cookie, calling_domain, 303)