| 
									
										
										
										
											2021-02-24 18:44:26 +00:00
										 |  |  | __filename__ = "webapp_welcome.py" | 
					
						
							|  |  |  | __author__ = "Bob Mottram" | 
					
						
							|  |  |  | __license__ = "AGPL3+" | 
					
						
							| 
									
										
										
										
											2024-12-22 23:37:30 +00:00
										 |  |  | __version__ = "1.6.0" | 
					
						
							| 
									
										
										
										
											2021-02-24 18:44:26 +00:00
										 |  |  | __maintainer__ = "Bob Mottram" | 
					
						
							| 
									
										
										
										
											2021-09-10 16:14:50 +00:00
										 |  |  | __email__ = "bob@libreserver.org" | 
					
						
							| 
									
										
										
										
											2021-02-24 18:44:26 +00:00
										 |  |  | __status__ = "Production" | 
					
						
							| 
									
										
										
										
											2021-06-26 11:27:14 +00:00
										 |  |  | __module_group__ = "Onboarding" | 
					
						
							| 
									
										
										
										
											2021-02-24 18:44:26 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | import os | 
					
						
							|  |  |  | from shutil import copyfile | 
					
						
							| 
									
										
										
										
											2024-05-12 12:35:26 +00:00
										 |  |  | from utils import data_dir | 
					
						
							| 
									
										
										
										
											2021-12-26 14:08:58 +00:00
										 |  |  | from utils import get_config_param | 
					
						
							| 
									
										
										
										
											2021-12-27 15:43:22 +00:00
										 |  |  | from utils import remove_html | 
					
						
							| 
									
										
										
										
											2021-12-26 12:02:29 +00:00
										 |  |  | from utils import acct_dir | 
					
						
							| 
									
										
										
										
											2021-12-29 21:55:09 +00:00
										 |  |  | from webapp_utils import html_header_with_external_style | 
					
						
							|  |  |  | from webapp_utils import html_footer | 
					
						
							|  |  |  | from markdown import markdown_to_html | 
					
						
							| 
									
										
										
										
											2021-02-24 18:44:26 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-29 21:55:09 +00:00
										 |  |  | def is_welcome_screen_complete(base_dir: str, | 
					
						
							|  |  |  |                                nickname: str, domain: str) -> bool: | 
					
						
							| 
									
										
										
										
											2021-02-24 21:17:08 +00:00
										 |  |  |     """Returns true if the welcome screen is complete for the given account
 | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2022-01-04 14:48:02 +00:00
										 |  |  |     account_path = acct_dir(base_dir, nickname, domain) | 
					
						
							|  |  |  |     if not os.path.isdir(account_path): | 
					
						
							| 
									
										
										
										
											2024-05-24 12:50:11 +00:00
										 |  |  |         return False | 
					
						
							| 
									
										
										
										
											2022-01-04 14:48:02 +00:00
										 |  |  |     complete_filename = account_path + '/.welcome_complete' | 
					
						
							|  |  |  |     return os.path.isfile(complete_filename) | 
					
						
							| 
									
										
										
										
											2021-02-24 21:17:08 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-29 21:55:09 +00:00
										 |  |  | def welcome_screen_is_complete(base_dir: str, | 
					
						
							|  |  |  |                                nickname: str, domain: str) -> None: | 
					
						
							| 
									
										
										
										
											2021-02-25 16:55:40 +00:00
										 |  |  |     """Indicates that the welcome screen has been shown for a given account
 | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2022-01-04 14:48:02 +00:00
										 |  |  |     account_path = acct_dir(base_dir, nickname, domain) | 
					
						
							|  |  |  |     if not os.path.isdir(account_path): | 
					
						
							| 
									
										
										
										
											2021-02-25 16:55:40 +00:00
										 |  |  |         return | 
					
						
							| 
									
										
										
										
											2022-01-04 14:48:02 +00:00
										 |  |  |     complete_filename = account_path + '/.welcome_complete' | 
					
						
							| 
									
										
										
										
											2024-02-01 13:30:59 +00:00
										 |  |  |     try: | 
					
						
							|  |  |  |         with open(complete_filename, 'w+', encoding='utf-8') as fp_comp: | 
					
						
							|  |  |  |             fp_comp.write('\n') | 
					
						
							|  |  |  |     except OSError: | 
					
						
							|  |  |  |         print('EX: welcome_screen_is_complete unable to write ' + | 
					
						
							|  |  |  |               complete_filename) | 
					
						
							| 
									
										
										
										
											2021-02-25 16:55:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-29 21:55:09 +00:00
										 |  |  | def html_welcome_screen(base_dir: str, nickname: str, | 
					
						
							|  |  |  |                         language: str, translate: {}, | 
					
						
							|  |  |  |                         theme_name: str, | 
					
						
							| 
									
										
										
										
											2022-01-04 15:05:41 +00:00
										 |  |  |                         curr_screen='welcome') -> str: | 
					
						
							| 
									
										
										
										
											2021-02-24 18:44:26 +00:00
										 |  |  |     """Returns the welcome screen
 | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     # set a custom background for the welcome screen | 
					
						
							| 
									
										
										
										
											2024-05-12 12:35:26 +00:00
										 |  |  |     dir_str = data_dir(base_dir) | 
					
						
							|  |  |  |     if os.path.isfile(dir_str + '/welcome-background-custom.jpg'): | 
					
						
							|  |  |  |         if not os.path.isfile(dir_str + '/welcome-background.jpg'): | 
					
						
							|  |  |  |             copyfile(dir_str + '/welcome-background-custom.jpg', | 
					
						
							|  |  |  |                      dir_str + '/welcome-background.jpg') | 
					
						
							| 
									
										
										
										
											2021-02-24 18:44:26 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-04 14:48:02 +00:00
										 |  |  |     welcome_text = 'Welcome to Epicyon' | 
					
						
							| 
									
										
										
										
											2024-05-12 12:35:26 +00:00
										 |  |  |     welcome_filename = dir_str + '/' + curr_screen + '.md' | 
					
						
							| 
									
										
										
										
											2022-01-04 14:48:02 +00:00
										 |  |  |     if not os.path.isfile(welcome_filename): | 
					
						
							|  |  |  |         default_filename = None | 
					
						
							| 
									
										
										
										
											2021-12-25 23:35:50 +00:00
										 |  |  |         if theme_name: | 
					
						
							| 
									
										
										
										
											2022-01-04 14:48:02 +00:00
										 |  |  |             default_filename = \ | 
					
						
							| 
									
										
										
										
											2021-12-25 23:35:50 +00:00
										 |  |  |                 base_dir + '/theme/' + theme_name + '/welcome/' + \ | 
					
						
							| 
									
										
										
										
											2021-02-27 10:27:39 +00:00
										 |  |  |                 'welcome_' + language + '.md' | 
					
						
							| 
									
										
										
										
											2022-01-04 14:48:02 +00:00
										 |  |  |             if not os.path.isfile(default_filename): | 
					
						
							|  |  |  |                 default_filename = None | 
					
						
							|  |  |  |         if not default_filename: | 
					
						
							|  |  |  |             default_filename = \ | 
					
						
							| 
									
										
										
										
											2021-12-25 16:17:53 +00:00
										 |  |  |                 base_dir + '/defaultwelcome/' + \ | 
					
						
							| 
									
										
										
										
											2022-01-04 15:05:41 +00:00
										 |  |  |                 curr_screen + '_' + language + '.md' | 
					
						
							| 
									
										
										
										
											2022-01-04 14:48:02 +00:00
										 |  |  |         if not os.path.isfile(default_filename): | 
					
						
							|  |  |  |             default_filename = \ | 
					
						
							| 
									
										
										
										
											2022-01-04 15:05:41 +00:00
										 |  |  |                 base_dir + '/defaultwelcome/' + curr_screen + '_en.md' | 
					
						
							| 
									
										
										
										
											2022-01-04 14:48:02 +00:00
										 |  |  |         copyfile(default_filename, welcome_filename) | 
					
						
							| 
									
										
										
										
											2021-02-25 22:25:01 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-04 14:48:02 +00:00
										 |  |  |     instance_title = \ | 
					
						
							| 
									
										
										
										
											2021-12-26 14:08:58 +00:00
										 |  |  |         get_config_param(base_dir, 'instanceTitle') | 
					
						
							| 
									
										
										
										
											2022-01-04 14:48:02 +00:00
										 |  |  |     if not instance_title: | 
					
						
							|  |  |  |         instance_title = 'Epicyon' | 
					
						
							| 
									
										
										
										
											2021-02-25 22:25:01 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-04 14:48:02 +00:00
										 |  |  |     if os.path.isfile(welcome_filename): | 
					
						
							| 
									
										
										
										
											2024-07-13 20:27:19 +00:00
										 |  |  |         try: | 
					
						
							|  |  |  |             with open(welcome_filename, 'r', encoding='utf-8') as fp_wel: | 
					
						
							|  |  |  |                 welcome_text = fp_wel.read() | 
					
						
							|  |  |  |                 welcome_text = welcome_text.replace('INSTANCE', instance_title) | 
					
						
							|  |  |  |                 welcome_text = markdown_to_html(remove_html(welcome_text)) | 
					
						
							|  |  |  |         except OSError: | 
					
						
							|  |  |  |             print('EX: html_welcome_screen unable to read ' + welcome_filename) | 
					
						
							| 
									
										
										
										
											2021-02-24 18:44:26 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-04 14:48:02 +00:00
										 |  |  |     welcome_form = '' | 
					
						
							| 
									
										
										
										
											2021-12-31 21:18:12 +00:00
										 |  |  |     css_filename = base_dir + '/epicyon-welcome.css' | 
					
						
							| 
									
										
										
										
											2021-12-25 16:17:53 +00:00
										 |  |  |     if os.path.isfile(base_dir + '/welcome.css'): | 
					
						
							| 
									
										
										
										
											2021-12-31 21:18:12 +00:00
										 |  |  |         css_filename = base_dir + '/welcome.css' | 
					
						
							| 
									
										
										
										
											2021-02-24 18:44:26 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-12-23 18:23:47 +00:00
										 |  |  |     preload_images: list[str] = [] | 
					
						
							| 
									
										
										
										
											2022-01-04 14:48:02 +00:00
										 |  |  |     welcome_form = \ | 
					
						
							| 
									
										
										
										
											2024-10-22 12:12:16 +00:00
										 |  |  |         html_header_with_external_style(css_filename, instance_title, None, | 
					
						
							|  |  |  |                                         preload_images) | 
					
						
							| 
									
										
										
										
											2022-01-04 14:48:02 +00:00
										 |  |  |     welcome_form += \ | 
					
						
							| 
									
										
										
										
											2021-02-25 17:06:07 +00:00
										 |  |  |         '<form enctype="multipart/form-data" method="POST" ' + \ | 
					
						
							|  |  |  |         'accept-charset="UTF-8" ' + \ | 
					
						
							|  |  |  |         'action="/users/' + nickname + '/profiledata">\n' | 
					
						
							| 
									
										
										
										
											2022-01-04 14:48:02 +00:00
										 |  |  |     welcome_form += '<div class="container">' + welcome_text + '</div>\n' | 
					
						
							|  |  |  |     welcome_form += '  <div class="container next">\n' | 
					
						
							|  |  |  |     welcome_form += \ | 
					
						
							| 
									
										
										
										
											2021-02-25 17:06:07 +00:00
										 |  |  |         '    <button type="submit" class="button" ' + \ | 
					
						
							|  |  |  |         'name="previewAvatar">' + translate['Next'] + '</button>\n' | 
					
						
							| 
									
										
										
										
											2022-01-04 14:48:02 +00:00
										 |  |  |     welcome_form += '  </div>\n' | 
					
						
							|  |  |  |     welcome_form += '</div>\n' | 
					
						
							|  |  |  |     welcome_form += '</form>\n' | 
					
						
							|  |  |  |     welcome_form += html_footer() | 
					
						
							|  |  |  |     return welcome_form |