mirror of https://gitlab.com/bashrc2/epicyon
				
				
				
			Adding reasons to account level blocks
							parent
							
								
									c36459f76e
								
							
						
					
					
						commit
						30e515c971
					
				
							
								
								
									
										70
									
								
								blocking.py
								
								
								
								
							
							
						
						
									
										70
									
								
								blocking.py
								
								
								
								
							| 
						 | 
				
			
			@ -39,6 +39,70 @@ from conversation import mute_conversation
 | 
			
		|||
from conversation import unmute_conversation
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def get_global_block_reason(search_text: str,
 | 
			
		||||
                            blocking_reasons_filename: str) -> str:
 | 
			
		||||
    """Returns the reason why a domain was globally blocked
 | 
			
		||||
    """
 | 
			
		||||
    if not text_in_file(search_text, blocking_reasons_filename):
 | 
			
		||||
        return ''
 | 
			
		||||
 | 
			
		||||
    reasons_str = ''
 | 
			
		||||
    try:
 | 
			
		||||
        with open(blocking_reasons_filename, 'r',
 | 
			
		||||
                  encoding='utf-8') as fp_reas:
 | 
			
		||||
            reasons_str = fp_reas.read()
 | 
			
		||||
    except OSError:
 | 
			
		||||
        print('WARN: Failed to raed blocking reasons ' +
 | 
			
		||||
              blocking_reasons_filename)
 | 
			
		||||
    if not reasons_str:
 | 
			
		||||
        return ''
 | 
			
		||||
 | 
			
		||||
    reasons_lines = reasons_str.split('\n')
 | 
			
		||||
    for line in reasons_lines:
 | 
			
		||||
        if line.startswith(search_text):
 | 
			
		||||
            if ' ' in line:
 | 
			
		||||
                return line.split(' ', 1)[1]
 | 
			
		||||
    return ''
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def get_account_blocks(base_dir: str,
 | 
			
		||||
                       nickname: str, domain: str) -> str:
 | 
			
		||||
    """Returne the text for the textarea for "blocked accounts"
 | 
			
		||||
    when editing profile
 | 
			
		||||
    """
 | 
			
		||||
    account_directory = acct_dir(base_dir, nickname, domain)
 | 
			
		||||
    blocking_filename = \
 | 
			
		||||
        account_directory + '/blocking.txt'
 | 
			
		||||
    blocking_reasons_filename = \
 | 
			
		||||
        account_directory + '/blocking_reasons.txt'
 | 
			
		||||
 | 
			
		||||
    if not os.path.isfile(blocking_filename):
 | 
			
		||||
        return ''
 | 
			
		||||
 | 
			
		||||
    blocked_accounts_textarea = ''
 | 
			
		||||
    blocking_file_text = ''
 | 
			
		||||
    try:
 | 
			
		||||
        with open(blocking_filename, 'r', encoding='utf-8') as fp_block:
 | 
			
		||||
            blocking_file_text = fp_block.read()
 | 
			
		||||
    except OSError:
 | 
			
		||||
        print('EX: Failed to read ' + blocking_filename)
 | 
			
		||||
        return ''
 | 
			
		||||
 | 
			
		||||
    blocklist = blocking_file_text.split('\n')
 | 
			
		||||
    for handle in blocklist:
 | 
			
		||||
        handle = handle.strip()
 | 
			
		||||
        reason = \
 | 
			
		||||
            get_global_block_reason(handle,
 | 
			
		||||
                                    blocking_reasons_filename)
 | 
			
		||||
        if reason:
 | 
			
		||||
            blocked_accounts_textarea += \
 | 
			
		||||
                handle + ' - ' + reason + '\n'
 | 
			
		||||
            continue
 | 
			
		||||
        blocked_accounts_textarea += handle + '\n'
 | 
			
		||||
 | 
			
		||||
    return blocked_accounts_textarea
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def add_account_blocks(base_dir: str,
 | 
			
		||||
                       nickname: str, domain: str,
 | 
			
		||||
                       blocked_accounts_textarea: str) -> bool:
 | 
			
		||||
| 
						 | 
				
			
			@ -53,7 +117,11 @@ def add_account_blocks(base_dir: str,
 | 
			
		|||
    for line in blocklist:
 | 
			
		||||
        line = line.strip()
 | 
			
		||||
        reason = None
 | 
			
		||||
        if ' ' in line:
 | 
			
		||||
        if ' - ' in line:
 | 
			
		||||
            block_id = line.split(' - ', 1)[0]
 | 
			
		||||
            reason = line.split(' - ', 1)[1]
 | 
			
		||||
            blocking_reasons_file_text += block_id + ' ' + reason + '\n'
 | 
			
		||||
        elif ' ' in line:
 | 
			
		||||
            block_id = line.split(' ', 1)[0]
 | 
			
		||||
            reason = line.split(' ', 1)[1]
 | 
			
		||||
            blocking_reasons_file_text += block_id + ' ' + reason + '\n'
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,7 +8,6 @@ __status__ = "Production"
 | 
			
		|||
__module_group__ = "Moderation"
 | 
			
		||||
 | 
			
		||||
import os
 | 
			
		||||
from utils import text_in_file
 | 
			
		||||
from utils import is_artist
 | 
			
		||||
from utils import is_account_dir
 | 
			
		||||
from utils import get_full_domain
 | 
			
		||||
| 
						 | 
				
			
			@ -28,6 +27,7 @@ from webapp_utils import get_banner_file
 | 
			
		|||
from webapp_utils import get_content_warning_button
 | 
			
		||||
from webapp_utils import html_header_with_external_style
 | 
			
		||||
from webapp_utils import html_footer
 | 
			
		||||
from blocking import get_global_block_reason
 | 
			
		||||
from blocking import is_blocked_domain
 | 
			
		||||
from blocking import is_blocked
 | 
			
		||||
from session import create_session
 | 
			
		||||
| 
						 | 
				
			
			@ -298,32 +298,6 @@ def html_account_info(translate: {},
 | 
			
		|||
    return info_form
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def _get_global_block_reason(search_text: str,
 | 
			
		||||
                             blocking_reasons_filename: str) -> str:
 | 
			
		||||
    """Returns the reason why a domain was globally blocked
 | 
			
		||||
    """
 | 
			
		||||
    if not text_in_file(search_text, blocking_reasons_filename):
 | 
			
		||||
        return ''
 | 
			
		||||
 | 
			
		||||
    reasons_str = ''
 | 
			
		||||
    try:
 | 
			
		||||
        with open(blocking_reasons_filename, 'r',
 | 
			
		||||
                  encoding='utf-8') as fp_reas:
 | 
			
		||||
            reasons_str = fp_reas.read()
 | 
			
		||||
    except OSError:
 | 
			
		||||
        print('WARN: Failed to raed blocking reasons ' +
 | 
			
		||||
              blocking_reasons_filename)
 | 
			
		||||
    if not reasons_str:
 | 
			
		||||
        return ''
 | 
			
		||||
 | 
			
		||||
    reasons_lines = reasons_str.split('\n')
 | 
			
		||||
    for line in reasons_lines:
 | 
			
		||||
        if line.startswith(search_text):
 | 
			
		||||
            if ' ' in line:
 | 
			
		||||
                return line.split(' ', 1)[1]
 | 
			
		||||
    return ''
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def html_moderation_info(translate: {}, base_dir: str,
 | 
			
		||||
                         nickname: str, domain: str, theme: str,
 | 
			
		||||
                         access_keys: {}) -> str:
 | 
			
		||||
| 
						 | 
				
			
			@ -457,8 +431,8 @@ def html_moderation_info(translate: {}, base_dir: str,
 | 
			
		|||
                    line = remove_eol(line).strip()
 | 
			
		||||
                    if blocking_reasons_exist:
 | 
			
		||||
                        reason = \
 | 
			
		||||
                            _get_global_block_reason(line,
 | 
			
		||||
                                                     blocking_reasons_filename)
 | 
			
		||||
                            get_global_block_reason(line,
 | 
			
		||||
                                                    blocking_reasons_filename)
 | 
			
		||||
                        if reason:
 | 
			
		||||
                            blocked_str += \
 | 
			
		||||
                                line + ' - ' + reason + '\n'
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -80,6 +80,7 @@ from blog import get_blog_address
 | 
			
		|||
from webapp_post import individual_post_as_html
 | 
			
		||||
from webapp_timeline import html_individual_share
 | 
			
		||||
from webapp_timeline import page_number_buttons
 | 
			
		||||
from blocking import get_account_blocks
 | 
			
		||||
from blocking import get_cw_list_variable
 | 
			
		||||
from blocking import is_blocked
 | 
			
		||||
from content import bold_reading_string
 | 
			
		||||
| 
						 | 
				
			
			@ -1787,12 +1788,7 @@ def _html_edit_profile_filtering(base_dir: str, nickname: str, domain: str,
 | 
			
		|||
        with open(auto_cw_filename, 'r', encoding='utf-8') as cw_file:
 | 
			
		||||
            auto_cw = cw_file.read()
 | 
			
		||||
 | 
			
		||||
    blocked_str = ''
 | 
			
		||||
    blocked_filename = \
 | 
			
		||||
        acct_dir(base_dir, nickname, domain) + '/blocking.txt'
 | 
			
		||||
    if os.path.isfile(blocked_filename):
 | 
			
		||||
        with open(blocked_filename, 'r', encoding='utf-8') as blockedfile:
 | 
			
		||||
            blocked_str = blockedfile.read()
 | 
			
		||||
    blocked_str = get_account_blocks(base_dir, nickname, domain)
 | 
			
		||||
 | 
			
		||||
    dm_allowed_instances_str = ''
 | 
			
		||||
    dm_allowed_instances_filename = \
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue