mirror of https://gitlab.com/bashrc2/epicyon
				
				
				
			Exception handling when reading from file
							parent
							
								
									a602cc61eb
								
							
						
					
					
						commit
						0423a296eb
					
				
							
								
								
									
										43
									
								
								utils.py
								
								
								
								
							
							
						
						
									
										43
									
								
								utils.py
								
								
								
								
							| 
						 | 
				
			
			@ -3266,20 +3266,24 @@ def search_box_posts(base_dir: str, nickname: str, domain: str,
 | 
			
		|||
    for root, _, fnames in os.walk(path):
 | 
			
		||||
        for fname in fnames:
 | 
			
		||||
            file_path = os.path.join(root, fname)
 | 
			
		||||
            with open(file_path, 'r', encoding='utf-8') as post_file:
 | 
			
		||||
                data = post_file.read().lower()
 | 
			
		||||
            try:
 | 
			
		||||
                with open(file_path, 'r', encoding='utf-8') as post_file:
 | 
			
		||||
                    data = post_file.read().lower()
 | 
			
		||||
 | 
			
		||||
                not_found = False
 | 
			
		||||
                for keyword in search_words:
 | 
			
		||||
                    if keyword not in data:
 | 
			
		||||
                        not_found = True
 | 
			
		||||
                        break
 | 
			
		||||
                if not_found:
 | 
			
		||||
                    continue
 | 
			
		||||
                    not_found = False
 | 
			
		||||
                    for keyword in search_words:
 | 
			
		||||
                        if keyword not in data:
 | 
			
		||||
                            not_found = True
 | 
			
		||||
                            break
 | 
			
		||||
                    if not_found:
 | 
			
		||||
                        continue
 | 
			
		||||
 | 
			
		||||
                res.append(file_path)
 | 
			
		||||
                if len(res) >= max_results:
 | 
			
		||||
                    return res
 | 
			
		||||
                    res.append(file_path)
 | 
			
		||||
                    if len(res) >= max_results:
 | 
			
		||||
                        return res
 | 
			
		||||
            except OSError as exc:
 | 
			
		||||
                print('EX: search_box_posts unable to read ' +
 | 
			
		||||
                      file_path + ' ' + str(exc))
 | 
			
		||||
        break
 | 
			
		||||
    return res
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -4473,8 +4477,12 @@ def load_account_timezones(base_dir: str) -> {}:
 | 
			
		|||
            if not os.path.isfile(tz_filename):
 | 
			
		||||
                continue
 | 
			
		||||
            timezone = None
 | 
			
		||||
            with open(tz_filename, 'r', encoding='utf-8') as fp_timezone:
 | 
			
		||||
                timezone = fp_timezone.read().strip()
 | 
			
		||||
            try:
 | 
			
		||||
                with open(tz_filename, 'r', encoding='utf-8') as fp_timezone:
 | 
			
		||||
                    timezone = fp_timezone.read().strip()
 | 
			
		||||
            except OSError:
 | 
			
		||||
                print('EX: load_account_timezones unable to read ' +
 | 
			
		||||
                      tz_filename)
 | 
			
		||||
            if timezone:
 | 
			
		||||
                nickname = acct.split('@')[0]
 | 
			
		||||
                account_timezone[nickname] = timezone
 | 
			
		||||
| 
						 | 
				
			
			@ -4528,8 +4536,11 @@ def get_account_timezone(base_dir: str, nickname: str, domain: str) -> str:
 | 
			
		|||
    if not os.path.isfile(tz_filename):
 | 
			
		||||
        return None
 | 
			
		||||
    timezone = None
 | 
			
		||||
    with open(tz_filename, 'r', encoding='utf-8') as fp_timezone:
 | 
			
		||||
        timezone = fp_timezone.read().strip()
 | 
			
		||||
    try:
 | 
			
		||||
        with open(tz_filename, 'r', encoding='utf-8') as fp_timezone:
 | 
			
		||||
            timezone = fp_timezone.read().strip()
 | 
			
		||||
    except OSError:
 | 
			
		||||
        print('EX: get_account_timezone unable to read ' + tz_filename)
 | 
			
		||||
    return timezone
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -34,8 +34,12 @@ def html_about(base_dir: str, http_prefix: str,
 | 
			
		|||
 | 
			
		||||
    about_text = 'Information about this instance goes here.'
 | 
			
		||||
    if os.path.isfile(dir_str + '/about.md'):
 | 
			
		||||
        with open(dir_str + '/about.md', 'r', encoding='utf-8') as fp_about:
 | 
			
		||||
            about_text = markdown_to_html(fp_about.read())
 | 
			
		||||
        try:
 | 
			
		||||
            with open(dir_str + '/about.md', 'r',
 | 
			
		||||
                      encoding='utf-8') as fp_about:
 | 
			
		||||
                about_text = markdown_to_html(fp_about.read())
 | 
			
		||||
        except OSError:
 | 
			
		||||
            print('EX: html_about unable to read ' + dir_str + '/about.md')
 | 
			
		||||
 | 
			
		||||
    about_form = ''
 | 
			
		||||
    css_filename = base_dir + '/epicyon-profile.css'
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -222,8 +222,12 @@ def get_left_column_content(base_dir: str, nickname: str, domain_full: str,
 | 
			
		|||
    links_file_contains_entries = False
 | 
			
		||||
    links_list = None
 | 
			
		||||
    if os.path.isfile(links_filename):
 | 
			
		||||
        with open(links_filename, 'r', encoding='utf-8') as fp_links:
 | 
			
		||||
            links_list = fp_links.readlines()
 | 
			
		||||
        try:
 | 
			
		||||
            with open(links_filename, 'r', encoding='utf-8') as fp_links:
 | 
			
		||||
                links_list = fp_links.readlines()
 | 
			
		||||
        except OSError:
 | 
			
		||||
            print('EX: get_left_column_content unable to read ' +
 | 
			
		||||
                  links_filename)
 | 
			
		||||
 | 
			
		||||
    if not front_page:
 | 
			
		||||
        # show a number of shares
 | 
			
		||||
| 
						 | 
				
			
			@ -497,8 +501,12 @@ def html_edit_links(translate: {}, base_dir: str, path: str,
 | 
			
		|||
    links_filename = data_dir(base_dir) + '/links.txt'
 | 
			
		||||
    links_str = ''
 | 
			
		||||
    if os.path.isfile(links_filename):
 | 
			
		||||
        with open(links_filename, 'r', encoding='utf-8') as fp_links:
 | 
			
		||||
            links_str = fp_links.read()
 | 
			
		||||
        try:
 | 
			
		||||
            with open(links_filename, 'r', encoding='utf-8') as fp_links:
 | 
			
		||||
                links_str = fp_links.read()
 | 
			
		||||
        except OSError:
 | 
			
		||||
            print('EX: html_edit_links unable to read ' +
 | 
			
		||||
                  links_filename)
 | 
			
		||||
 | 
			
		||||
    edit_links_form += \
 | 
			
		||||
        '<div class="container">'
 | 
			
		||||
| 
						 | 
				
			
			@ -522,8 +530,13 @@ def html_edit_links(translate: {}, base_dir: str, path: str,
 | 
			
		|||
            about_filename = data_dir(base_dir) + '/about.md'
 | 
			
		||||
            about_str = ''
 | 
			
		||||
            if os.path.isfile(about_filename):
 | 
			
		||||
                with open(about_filename, 'r', encoding='utf-8') as fp_about:
 | 
			
		||||
                    about_str = fp_about.read()
 | 
			
		||||
                try:
 | 
			
		||||
                    with open(about_filename, 'r',
 | 
			
		||||
                              encoding='utf-8') as fp_about:
 | 
			
		||||
                        about_str = fp_about.read()
 | 
			
		||||
                except OSError:
 | 
			
		||||
                    print('EX: html_edit_links unable to read 2 ' +
 | 
			
		||||
                          about_filename)
 | 
			
		||||
 | 
			
		||||
            edit_links_form += \
 | 
			
		||||
                '<div class="container">'
 | 
			
		||||
| 
						 | 
				
			
			@ -541,8 +554,12 @@ def html_edit_links(translate: {}, base_dir: str, path: str,
 | 
			
		|||
            tos_filename = data_dir(base_dir) + '/tos.md'
 | 
			
		||||
            tos_str = ''
 | 
			
		||||
            if os.path.isfile(tos_filename):
 | 
			
		||||
                with open(tos_filename, 'r', encoding='utf-8') as fp_tos:
 | 
			
		||||
                    tos_str = fp_tos.read()
 | 
			
		||||
                try:
 | 
			
		||||
                    with open(tos_filename, 'r', encoding='utf-8') as fp_tos:
 | 
			
		||||
                        tos_str = fp_tos.read()
 | 
			
		||||
                except OSError:
 | 
			
		||||
                    print('EX: html_edit_links unable to read 3 ' +
 | 
			
		||||
                          tos_filename)
 | 
			
		||||
 | 
			
		||||
            edit_links_form += \
 | 
			
		||||
                '<div class="container">'
 | 
			
		||||
| 
						 | 
				
			
			@ -560,9 +577,13 @@ def html_edit_links(translate: {}, base_dir: str, path: str,
 | 
			
		|||
            specification_filename = data_dir(base_dir) + '/activitypub.md'
 | 
			
		||||
            specification_str = ''
 | 
			
		||||
            if os.path.isfile(specification_filename):
 | 
			
		||||
                with open(specification_filename, 'r',
 | 
			
		||||
                          encoding='utf-8') as fp_specification:
 | 
			
		||||
                    specification_str = fp_specification.read()
 | 
			
		||||
                try:
 | 
			
		||||
                    with open(specification_filename, 'r',
 | 
			
		||||
                              encoding='utf-8') as fp_specification:
 | 
			
		||||
                        specification_str = fp_specification.read()
 | 
			
		||||
                except OSError:
 | 
			
		||||
                    print('EX: html_edit_links unable to read 4 ' +
 | 
			
		||||
                          specification_filename)
 | 
			
		||||
 | 
			
		||||
            edit_links_form += \
 | 
			
		||||
                '<div class="container">'
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -376,16 +376,20 @@ def html_citations(base_dir: str, nickname: str, domain: str,
 | 
			
		|||
    citations_selected = []
 | 
			
		||||
    if os.path.isfile(citations_filename):
 | 
			
		||||
        citations_separator = '#####'
 | 
			
		||||
        with open(citations_filename, 'r', encoding='utf-8') as fp_cit:
 | 
			
		||||
            citations = fp_cit.readlines()
 | 
			
		||||
            for line in citations:
 | 
			
		||||
                if citations_separator not in line:
 | 
			
		||||
                    continue
 | 
			
		||||
                sections = line.strip().split(citations_separator)
 | 
			
		||||
                if len(sections) != 3:
 | 
			
		||||
                    continue
 | 
			
		||||
                date_str = sections[0]
 | 
			
		||||
                citations_selected.append(date_str)
 | 
			
		||||
        try:
 | 
			
		||||
            with open(citations_filename, 'r', encoding='utf-8') as fp_cit:
 | 
			
		||||
                citations = fp_cit.readlines()
 | 
			
		||||
                for line in citations:
 | 
			
		||||
                    if citations_separator not in line:
 | 
			
		||||
                        continue
 | 
			
		||||
                    sections = line.strip().split(citations_separator)
 | 
			
		||||
                    if len(sections) != 3:
 | 
			
		||||
                        continue
 | 
			
		||||
                    date_str = sections[0]
 | 
			
		||||
                    citations_selected.append(date_str)
 | 
			
		||||
        except OSError as exc:
 | 
			
		||||
            print('EX: html_citations unable to read ' +
 | 
			
		||||
                  citations_filename + ' ' + str(exc))
 | 
			
		||||
 | 
			
		||||
    # the css filename
 | 
			
		||||
    css_filename = base_dir + '/epicyon-profile.css'
 | 
			
		||||
| 
						 | 
				
			
			@ -617,8 +621,12 @@ def html_edit_newswire(translate: {}, base_dir: str, path: str,
 | 
			
		|||
    newswire_filename = data_dir(base_dir) + '/newswire.txt'
 | 
			
		||||
    newswire_str = ''
 | 
			
		||||
    if os.path.isfile(newswire_filename):
 | 
			
		||||
        with open(newswire_filename, 'r', encoding='utf-8') as fp_news:
 | 
			
		||||
            newswire_str = fp_news.read()
 | 
			
		||||
        try:
 | 
			
		||||
            with open(newswire_filename, 'r', encoding='utf-8') as fp_news:
 | 
			
		||||
                newswire_str = fp_news.read()
 | 
			
		||||
        except OSError:
 | 
			
		||||
            print('EX: html_edit_newswire unable to read ' +
 | 
			
		||||
                  newswire_filename)
 | 
			
		||||
 | 
			
		||||
    edit_newswire_form += \
 | 
			
		||||
        '<div class="container">'
 | 
			
		||||
| 
						 | 
				
			
			@ -639,8 +647,12 @@ def html_edit_newswire(translate: {}, base_dir: str, path: str,
 | 
			
		|||
    filter_filename = \
 | 
			
		||||
        data_dir(base_dir) + '/news@' + domain + '/filters.txt'
 | 
			
		||||
    if os.path.isfile(filter_filename):
 | 
			
		||||
        with open(filter_filename, 'r', encoding='utf-8') as filterfile:
 | 
			
		||||
            filter_str = filterfile.read()
 | 
			
		||||
        try:
 | 
			
		||||
            with open(filter_filename, 'r', encoding='utf-8') as fp_filter:
 | 
			
		||||
                filter_str = fp_filter.read()
 | 
			
		||||
        except OSError:
 | 
			
		||||
            print('EX: html_edit_newswire unable to read 2 ' +
 | 
			
		||||
                  filter_filename)
 | 
			
		||||
 | 
			
		||||
    edit_newswire_form += \
 | 
			
		||||
        '      <br><b><label class="labels">' + \
 | 
			
		||||
| 
						 | 
				
			
			@ -670,8 +682,13 @@ def html_edit_newswire(translate: {}, base_dir: str, path: str,
 | 
			
		|||
    hashtag_rules_str = ''
 | 
			
		||||
    hashtag_rules_filename = data_dir(base_dir) + '/hashtagrules.txt'
 | 
			
		||||
    if os.path.isfile(hashtag_rules_filename):
 | 
			
		||||
        with open(hashtag_rules_filename, 'r', encoding='utf-8') as rulesfile:
 | 
			
		||||
            hashtag_rules_str = rulesfile.read()
 | 
			
		||||
        try:
 | 
			
		||||
            with open(hashtag_rules_filename, 'r',
 | 
			
		||||
                      encoding='utf-8') as fp_rules:
 | 
			
		||||
                hashtag_rules_str = fp_rules.read()
 | 
			
		||||
        except OSError:
 | 
			
		||||
            print('EX: html_edit_newswire unable to read 3 ' +
 | 
			
		||||
                  hashtag_rules_filename)
 | 
			
		||||
 | 
			
		||||
    edit_newswire_form += \
 | 
			
		||||
        '      <br><b><label class="labels">' + \
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -514,17 +514,21 @@ def html_new_post(edit_post_params: {},
 | 
			
		|||
            # custom report header with any additional instructions
 | 
			
		||||
            dir_str = data_dir(base_dir)
 | 
			
		||||
            if os.path.isfile(dir_str + '/report.txt'):
 | 
			
		||||
                with open(dir_str + '/report.txt', 'r',
 | 
			
		||||
                          encoding='utf-8') as file:
 | 
			
		||||
                    custom_report_text = file.read()
 | 
			
		||||
                    if '</p>' not in custom_report_text:
 | 
			
		||||
                        custom_report_text = \
 | 
			
		||||
                            '<p class="login-subtext">' + \
 | 
			
		||||
                            custom_report_text + '</p>\n'
 | 
			
		||||
                        rep_str = '<p class="login-subtext">'
 | 
			
		||||
                        custom_report_text = \
 | 
			
		||||
                            custom_report_text.replace('<p>', rep_str)
 | 
			
		||||
                        new_post_text += custom_report_text
 | 
			
		||||
                try:
 | 
			
		||||
                    with open(dir_str + '/report.txt', 'r',
 | 
			
		||||
                              encoding='utf-8') as file:
 | 
			
		||||
                        custom_report_text = file.read()
 | 
			
		||||
                        if '</p>' not in custom_report_text:
 | 
			
		||||
                            custom_report_text = \
 | 
			
		||||
                                '<p class="login-subtext">' + \
 | 
			
		||||
                                custom_report_text + '</p>\n'
 | 
			
		||||
                            rep_str = '<p class="login-subtext">'
 | 
			
		||||
                            custom_report_text = \
 | 
			
		||||
                                custom_report_text.replace('<p>', rep_str)
 | 
			
		||||
                            new_post_text += custom_report_text
 | 
			
		||||
                except OSError as exc:
 | 
			
		||||
                    print('EX: html_new_post unable to read ' +
 | 
			
		||||
                          dir_str + '/report.txt ' + str(exc))
 | 
			
		||||
 | 
			
		||||
            idx = 'This message only goes to moderators, even if it ' + \
 | 
			
		||||
                'mentions other fediverse addresses.'
 | 
			
		||||
| 
						 | 
				
			
			@ -553,8 +557,12 @@ def html_new_post(edit_post_params: {},
 | 
			
		|||
 | 
			
		||||
    dir_str = data_dir(base_dir)
 | 
			
		||||
    if os.path.isfile(dir_str + '/newpost.txt'):
 | 
			
		||||
        with open(dir_str + '/newpost.txt', 'r', encoding='utf-8') as file:
 | 
			
		||||
            new_post_text = '<p>' + file.read() + '</p>\n'
 | 
			
		||||
        try:
 | 
			
		||||
            with open(dir_str + '/newpost.txt', 'r', encoding='utf-8') as file:
 | 
			
		||||
                new_post_text = '<p>' + file.read() + '</p>\n'
 | 
			
		||||
        except OSError:
 | 
			
		||||
            print('EX: html_new_post unable to read ' +
 | 
			
		||||
                  dir_str + '/newpost.txt')
 | 
			
		||||
 | 
			
		||||
    css_filename = base_dir + '/epicyon-profile.css'
 | 
			
		||||
    if os.path.isfile(base_dir + '/epicyon.css'):
 | 
			
		||||
| 
						 | 
				
			
			@ -870,19 +878,24 @@ def html_new_post(edit_post_params: {},
 | 
			
		|||
                translate['Citations'] + ':</label></p>\n'
 | 
			
		||||
            citations_str += '  <ul>\n'
 | 
			
		||||
            citations_separator = '#####'
 | 
			
		||||
            with open(citations_filename, 'r', encoding='utf-8') as cit_file:
 | 
			
		||||
                citations = cit_file.readlines()
 | 
			
		||||
                for line in citations:
 | 
			
		||||
                    if citations_separator not in line:
 | 
			
		||||
                        continue
 | 
			
		||||
                    sections = line.strip().split(citations_separator)
 | 
			
		||||
                    if len(sections) != 3:
 | 
			
		||||
                        continue
 | 
			
		||||
                    title = sections[1]
 | 
			
		||||
                    link = sections[2]
 | 
			
		||||
                    citations_str += \
 | 
			
		||||
                        '    <li><a href="' + link + '"><cite>' + \
 | 
			
		||||
                        title + '</cite></a></li>'
 | 
			
		||||
            try:
 | 
			
		||||
                with open(citations_filename, 'r',
 | 
			
		||||
                          encoding='utf-8') as cit_file:
 | 
			
		||||
                    citations = cit_file.readlines()
 | 
			
		||||
                    for line in citations:
 | 
			
		||||
                        if citations_separator not in line:
 | 
			
		||||
                            continue
 | 
			
		||||
                        sections = line.strip().split(citations_separator)
 | 
			
		||||
                        if len(sections) != 3:
 | 
			
		||||
                            continue
 | 
			
		||||
                        title = sections[1]
 | 
			
		||||
                        link = sections[2]
 | 
			
		||||
                        citations_str += \
 | 
			
		||||
                            '    <li><a href="' + link + '"><cite>' + \
 | 
			
		||||
                            title + '</cite></a></li>'
 | 
			
		||||
            except OSError as exc:
 | 
			
		||||
                print('EX: html_new_post unable to read ' +
 | 
			
		||||
                      citations_filename + ' ' + str(exc))
 | 
			
		||||
            citations_str += '  </ul>\n'
 | 
			
		||||
            citations_str += '</div>\n'
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -85,9 +85,13 @@ def html_hash_tag_swarm(base_dir: str, actor: str, translate: {}) -> str:
 | 
			
		|||
    blocked_str = ''
 | 
			
		||||
    global_blocking_filename = data_dir(base_dir) + '/blocking.txt'
 | 
			
		||||
    if os.path.isfile(global_blocking_filename):
 | 
			
		||||
        with open(global_blocking_filename, 'r',
 | 
			
		||||
                  encoding='utf-8') as fp_block:
 | 
			
		||||
            blocked_str = fp_block.read()
 | 
			
		||||
        try:
 | 
			
		||||
            with open(global_blocking_filename, 'r',
 | 
			
		||||
                      encoding='utf-8') as fp_block:
 | 
			
		||||
                blocked_str = fp_block.read()
 | 
			
		||||
        except OSError:
 | 
			
		||||
            print('EX: html_hash_tag_swarm unable to read ' +
 | 
			
		||||
                  global_blocking_filename)
 | 
			
		||||
 | 
			
		||||
    for _, _, files in os.walk(base_dir + '/tags'):
 | 
			
		||||
        for fname in files:
 | 
			
		||||
| 
						 | 
				
			
			@ -121,12 +125,19 @@ def html_hash_tag_swarm(base_dir: str, actor: str, translate: {}) -> str:
 | 
			
		|||
                continue
 | 
			
		||||
            if '#' + hash_tag_name + '\n' in blocked_str:
 | 
			
		||||
                continue
 | 
			
		||||
            with open(tags_filename, 'r', encoding='utf-8') as fp_tags:
 | 
			
		||||
                # only read one line, which saves time and memory
 | 
			
		||||
                last_tag = fp_tags.readline()
 | 
			
		||||
                if not last_tag.startswith(days_since_epoch_str):
 | 
			
		||||
                    if not last_tag.startswith(days_since_epoch_str2):
 | 
			
		||||
                        continue
 | 
			
		||||
 | 
			
		||||
            try:
 | 
			
		||||
                with open(tags_filename, 'r', encoding='utf-8') as fp_tags:
 | 
			
		||||
                    # only read one line, which saves time and memory
 | 
			
		||||
                    last_tag = fp_tags.readline()
 | 
			
		||||
                    if not last_tag.startswith(days_since_epoch_str):
 | 
			
		||||
                        if not last_tag.startswith(days_since_epoch_str2):
 | 
			
		||||
                            continue
 | 
			
		||||
            except OSError:
 | 
			
		||||
                print('EX: html_hash_tag_swarm unable to read 2 ' +
 | 
			
		||||
                      tags_filename)
 | 
			
		||||
                continue
 | 
			
		||||
 | 
			
		||||
            with open(tags_filename, 'r', encoding='utf-8') as fp_tags:
 | 
			
		||||
                while True:
 | 
			
		||||
                    line = fp_tags.readline()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -133,8 +133,11 @@ def html_login(translate: {},
 | 
			
		|||
    dir_str = data_dir(base_dir)
 | 
			
		||||
    if os.path.isfile(dir_str + '/login.txt'):
 | 
			
		||||
        # custom login message
 | 
			
		||||
        with open(dir_str + '/login.txt', 'r', encoding='utf-8') as file:
 | 
			
		||||
            login_text = '<p class="login-text">' + file.read() + '</p>'
 | 
			
		||||
        try:
 | 
			
		||||
            with open(dir_str + '/login.txt', 'r', encoding='utf-8') as file:
 | 
			
		||||
                login_text = '<p class="login-text">' + file.read() + '</p>'
 | 
			
		||||
        except OSError:
 | 
			
		||||
            print('EX: html_login unable to read ' + dir_str + '/login.txt')
 | 
			
		||||
 | 
			
		||||
    css_filename = base_dir + '/epicyon-login.css'
 | 
			
		||||
    if os.path.isfile(base_dir + '/login.css'):
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -35,10 +35,13 @@ def html_manual(base_dir: str, http_prefix: str,
 | 
			
		|||
 | 
			
		||||
    manual_text = 'User Manual.'
 | 
			
		||||
    if os.path.isfile(manual_filename):
 | 
			
		||||
        with open(manual_filename, 'r',
 | 
			
		||||
                  encoding='utf-8') as fp_manual:
 | 
			
		||||
            md_text = markdown_example_numbers(fp_manual.read())
 | 
			
		||||
            manual_text = markdown_to_html(md_text)
 | 
			
		||||
        try:
 | 
			
		||||
            with open(manual_filename, 'r',
 | 
			
		||||
                      encoding='utf-8') as fp_manual:
 | 
			
		||||
                md_text = markdown_example_numbers(fp_manual.read())
 | 
			
		||||
                manual_text = markdown_to_html(md_text)
 | 
			
		||||
        except OSError:
 | 
			
		||||
            print('EX: html_manual unable to read ' + manual_filename)
 | 
			
		||||
 | 
			
		||||
    manual_form = ''
 | 
			
		||||
    css_filename = base_dir + '/epicyon-profile.css'
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,12 +19,16 @@ def load_peertube_instances(base_dir: str, peertube_instances: []) -> None:
 | 
			
		|||
    peertube_list = None
 | 
			
		||||
    peertube_instances_filename = data_dir(base_dir) + '/peertube.txt'
 | 
			
		||||
    if os.path.isfile(peertube_instances_filename):
 | 
			
		||||
        with open(peertube_instances_filename, 'r',
 | 
			
		||||
                  encoding='utf-8') as fp_inst:
 | 
			
		||||
            peertube_str = fp_inst.read()
 | 
			
		||||
            if peertube_str:
 | 
			
		||||
                peertube_str = peertube_str.replace('\r', '')
 | 
			
		||||
                peertube_list = peertube_str.split('\n')
 | 
			
		||||
        try:
 | 
			
		||||
            with open(peertube_instances_filename, 'r',
 | 
			
		||||
                      encoding='utf-8') as fp_inst:
 | 
			
		||||
                peertube_str = fp_inst.read()
 | 
			
		||||
                if peertube_str:
 | 
			
		||||
                    peertube_str = peertube_str.replace('\r', '')
 | 
			
		||||
                    peertube_list = peertube_str.split('\n')
 | 
			
		||||
        except OSError as exc:
 | 
			
		||||
            print('EX: load_peertube_instances unable to read ' +
 | 
			
		||||
                  peertube_instances_filename + ' ' + str(exc))
 | 
			
		||||
    if not peertube_list:
 | 
			
		||||
        return
 | 
			
		||||
    for url in peertube_list:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -426,19 +426,23 @@ def html_moderation_info(translate: {}, base_dir: str,
 | 
			
		|||
 | 
			
		||||
    suspended_filename = dir_str + '/suspended.txt'
 | 
			
		||||
    if os.path.isfile(suspended_filename):
 | 
			
		||||
        with open(suspended_filename, 'r', encoding='utf-8') as fp_sus:
 | 
			
		||||
            suspended_str = fp_sus.read()
 | 
			
		||||
            info_form += '<div class="container">\n'
 | 
			
		||||
            info_form += '  <br><b>' + \
 | 
			
		||||
                translate['Suspended accounts'] + '</b>'
 | 
			
		||||
            info_form += '  <br>' + \
 | 
			
		||||
                translate['These are currently suspended']
 | 
			
		||||
            info_form += \
 | 
			
		||||
                '  <textarea id="message" ' + \
 | 
			
		||||
                'name="suspended" style="height:200px" spellcheck="false">' + \
 | 
			
		||||
                suspended_str + '</textarea>\n'
 | 
			
		||||
            info_form += '</div>\n'
 | 
			
		||||
            info_shown = True
 | 
			
		||||
        try:
 | 
			
		||||
            with open(suspended_filename, 'r', encoding='utf-8') as fp_sus:
 | 
			
		||||
                suspended_str = fp_sus.read()
 | 
			
		||||
                info_form += '<div class="container">\n'
 | 
			
		||||
                info_form += '  <br><b>' + \
 | 
			
		||||
                    translate['Suspended accounts'] + '</b>'
 | 
			
		||||
                info_form += '  <br>' + \
 | 
			
		||||
                    translate['These are currently suspended']
 | 
			
		||||
                info_form += \
 | 
			
		||||
                    '  <textarea id="message" ' + \
 | 
			
		||||
                    'name="suspended" style="height:200px" ' + \
 | 
			
		||||
                    'spellcheck="false">' + suspended_str + '</textarea>\n'
 | 
			
		||||
                info_form += '</div>\n'
 | 
			
		||||
                info_shown = True
 | 
			
		||||
        except OSError as exc:
 | 
			
		||||
            print('EX: html_moderation_info unable to read ' +
 | 
			
		||||
                  suspended_filename + ' ' + str(exc))
 | 
			
		||||
 | 
			
		||||
    blocking_filename = dir_str + '/blocking.txt'
 | 
			
		||||
    if os.path.isfile(blocking_filename):
 | 
			
		||||
| 
						 | 
				
			
			@ -446,52 +450,61 @@ def html_moderation_info(translate: {}, base_dir: str,
 | 
			
		|||
        blocking_reasons_exist = False
 | 
			
		||||
        if os.path.isfile(blocking_reasons_filename):
 | 
			
		||||
            blocking_reasons_exist = True
 | 
			
		||||
        with open(blocking_filename, 'r', encoding='utf-8') as fp_block:
 | 
			
		||||
            blocked_lines = fp_block.readlines()
 | 
			
		||||
            blocked_str = ''
 | 
			
		||||
            if blocked_lines:
 | 
			
		||||
                blocked_lines.sort()
 | 
			
		||||
                for line in blocked_lines:
 | 
			
		||||
                    if not line:
 | 
			
		||||
                        continue
 | 
			
		||||
                    line = remove_eol(line).strip()
 | 
			
		||||
                    if blocking_reasons_exist:
 | 
			
		||||
                        reason = \
 | 
			
		||||
                            get_global_block_reason(line,
 | 
			
		||||
                                                    blocking_reasons_filename)
 | 
			
		||||
                        if reason:
 | 
			
		||||
                            blocked_str += \
 | 
			
		||||
                                line + ' - ' + reason + '\n'
 | 
			
		||||
        try:
 | 
			
		||||
            with open(blocking_filename, 'r', encoding='utf-8') as fp_block:
 | 
			
		||||
                blocked_lines = fp_block.readlines()
 | 
			
		||||
                blocked_str = ''
 | 
			
		||||
                if blocked_lines:
 | 
			
		||||
                    blocked_lines.sort()
 | 
			
		||||
                    for line in blocked_lines:
 | 
			
		||||
                        if not line:
 | 
			
		||||
                            continue
 | 
			
		||||
                    blocked_str += line + '\n'
 | 
			
		||||
            info_form += '<div class="container">\n'
 | 
			
		||||
            info_form += \
 | 
			
		||||
                '  <br><b>' + \
 | 
			
		||||
                translate['Blocked accounts and hashtags'] + '</b>'
 | 
			
		||||
            info_form += \
 | 
			
		||||
                '  <br>' + \
 | 
			
		||||
                translate[msg_str1]
 | 
			
		||||
            info_form += \
 | 
			
		||||
                '  <textarea id="message" ' + \
 | 
			
		||||
                'name="blocked" style="height:2000px" spellcheck="false">' + \
 | 
			
		||||
                blocked_str + '</textarea>\n'
 | 
			
		||||
            info_form += '</div>\n'
 | 
			
		||||
            info_shown = True
 | 
			
		||||
                        line = remove_eol(line).strip()
 | 
			
		||||
                        if blocking_reasons_exist:
 | 
			
		||||
                            blocking_reasons_file = blocking_reasons_filename
 | 
			
		||||
                            reason = \
 | 
			
		||||
                                get_global_block_reason(line,
 | 
			
		||||
                                                        blocking_reasons_file)
 | 
			
		||||
                            if reason:
 | 
			
		||||
                                blocked_str += \
 | 
			
		||||
                                    line + ' - ' + reason + '\n'
 | 
			
		||||
                                continue
 | 
			
		||||
                        blocked_str += line + '\n'
 | 
			
		||||
                info_form += '<div class="container">\n'
 | 
			
		||||
                info_form += \
 | 
			
		||||
                    '  <br><b>' + \
 | 
			
		||||
                    translate['Blocked accounts and hashtags'] + '</b>'
 | 
			
		||||
                info_form += \
 | 
			
		||||
                    '  <br>' + \
 | 
			
		||||
                    translate[msg_str1]
 | 
			
		||||
                info_form += \
 | 
			
		||||
                    '  <textarea id="message" ' + \
 | 
			
		||||
                    'name="blocked" style="height:2000px" ' + \
 | 
			
		||||
                    'spellcheck="false">' + blocked_str + '</textarea>\n'
 | 
			
		||||
                info_form += '</div>\n'
 | 
			
		||||
                info_shown = True
 | 
			
		||||
        except OSError as exc:
 | 
			
		||||
            print('EX: html_moderation_info unable to read 2 ' +
 | 
			
		||||
                  blocking_filename + ' ' + str(exc))
 | 
			
		||||
 | 
			
		||||
    filters_filename = dir_str + '/filters.txt'
 | 
			
		||||
    if os.path.isfile(filters_filename):
 | 
			
		||||
        with open(filters_filename, 'r', encoding='utf-8') as fp_filt:
 | 
			
		||||
            filtered_str = fp_filt.read()
 | 
			
		||||
            info_form += '<div class="container">\n'
 | 
			
		||||
            info_form += \
 | 
			
		||||
                '  <br><b>' + \
 | 
			
		||||
                translate['Filtered words'] + '</b>'
 | 
			
		||||
            info_form += \
 | 
			
		||||
                '  <textarea id="message" ' + \
 | 
			
		||||
                'name="filtered" style="height:700px" spellcheck="true">' + \
 | 
			
		||||
                filtered_str + '</textarea>\n'
 | 
			
		||||
            info_form += '</div>\n'
 | 
			
		||||
            info_shown = True
 | 
			
		||||
        try:
 | 
			
		||||
            with open(filters_filename, 'r', encoding='utf-8') as fp_filt:
 | 
			
		||||
                filtered_str = fp_filt.read()
 | 
			
		||||
                info_form += '<div class="container">\n'
 | 
			
		||||
                info_form += \
 | 
			
		||||
                    '  <br><b>' + \
 | 
			
		||||
                    translate['Filtered words'] + '</b>'
 | 
			
		||||
                info_form += \
 | 
			
		||||
                    '  <textarea id="message" ' + \
 | 
			
		||||
                    'name="filtered" style="height:700px" ' + \
 | 
			
		||||
                    'spellcheck="true">' + filtered_str + '</textarea>\n'
 | 
			
		||||
                info_form += '</div>\n'
 | 
			
		||||
                info_shown = True
 | 
			
		||||
        except OSError as exc:
 | 
			
		||||
            print('EX: html_moderation_info unable to read ' +
 | 
			
		||||
                  filters_filename + ' ' + str(exc))
 | 
			
		||||
 | 
			
		||||
    if not info_shown:
 | 
			
		||||
        info_form += \
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue