mirror of
				https://github.com/searxng/searxng
				synced 2024-01-01 19:24:07 +01:00 
			
		
		
		
	[enh] introduce /help route
Translation will be implemented in the future. For now the "en" in /help/en/<pagename> is hardcoded.
This commit is contained in:
		
							parent
							
								
									b93711b45d
								
							
						
					
					
						commit
						fb9eedbf40
					
				
					 7 changed files with 45 additions and 20 deletions
				
			
		|  | @ -1,6 +0,0 @@ | |||
| {% extends "oscar/base.html" %} | ||||
| {% block title %}{{ _('about') }} - {% endblock %} | ||||
| {% block content %} | ||||
| {{ help.about | safe }} | ||||
| {% include "__common__/aboutextend.html" ignore missing %} | ||||
| {% endblock %} | ||||
							
								
								
									
										5
									
								
								searx/templates/oscar/help.html
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								searx/templates/oscar/help.html
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,5 @@ | |||
| {% extends "oscar/base.html" %} | ||||
| {% block title %}{{ page.title }} - {% endblock %} | ||||
| {% block content %} | ||||
| {{ page.content | safe }} | ||||
| {% endblock %} | ||||
|  | @ -1,5 +0,0 @@ | |||
| {% extends 'simple/page_with_header.html' %} | ||||
| {% block content %} | ||||
| {{ help.about | safe }} | ||||
| {% include "__common__/aboutextend.html" ignore missing %} | ||||
| {% endblock %} | ||||
							
								
								
									
										5
									
								
								searx/templates/simple/help.html
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								searx/templates/simple/help.html
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,5 @@ | |||
| {% extends 'simple/page_with_header.html' %} | ||||
| {% block title %}{{ page.title }} - {% endblock %} | ||||
| {% block content %} | ||||
| {{ page.content | safe }} | ||||
| {% endblock %} | ||||
|  | @ -1,5 +1,5 @@ | |||
| # pyright: basic | ||||
| from typing import Dict | ||||
| from typing import Dict, NamedTuple | ||||
| import os.path | ||||
| import pkg_resources | ||||
| 
 | ||||
|  | @ -10,8 +10,14 @@ import mistletoe | |||
| from . import get_setting | ||||
| from .version import GIT_URL | ||||
| 
 | ||||
| HELP: Dict[str, str] = {} | ||||
| """ Maps a filename under help/ without the file extension to the rendered HTML. """ | ||||
| 
 | ||||
| class HelpPage(NamedTuple): | ||||
|     title: str | ||||
|     content: str | ||||
| 
 | ||||
| 
 | ||||
| PAGES: Dict[str, HelpPage] = {} | ||||
| """ Maps a filename under help/ without the file extension to the rendered page. """ | ||||
| 
 | ||||
| 
 | ||||
| def render(app: flask.Flask): | ||||
|  | @ -44,6 +50,15 @@ def render(app: flask.Flask): | |||
|         if ext != '.md': | ||||
|             continue | ||||
| 
 | ||||
|         markdown = pkg_resources.resource_string(__name__, 'help/' + filename).decode() | ||||
|         markdown = define_link_targets + markdown | ||||
|         HELP[rootname] = mistletoe.markdown(markdown) | ||||
|         file_content = pkg_resources.resource_string(__name__, 'help/' + filename).decode() | ||||
|         markdown = define_link_targets + file_content | ||||
|         assert file_content.startswith('# ') | ||||
|         title = file_content.split('\n', maxsplit=1)[0].strip('# ') | ||||
|         content: str = mistletoe.markdown(markdown) | ||||
| 
 | ||||
|         if filename == 'about.md': | ||||
|             try: | ||||
|                 content += pkg_resources.resource_string(__name__, 'templates/__common__/aboutextend.html').decode() | ||||
|             except FileNotFoundError: | ||||
|                 pass | ||||
|         PAGES[rootname] = HelpPage(title=title, content=content) | ||||
|  |  | |||
|  | @ -877,8 +877,19 @@ def __get_translated_errors(unresponsive_engines: Iterable[UnresponsiveEngine]): | |||
| 
 | ||||
| @app.route('/about', methods=['GET']) | ||||
| def about(): | ||||
|     """Render about page""" | ||||
|     return render('about.html', help=user_help.HELP) | ||||
|     """Redirect to about page""" | ||||
|     return redirect(url_for('help_page', pagename='about')) | ||||
| 
 | ||||
| 
 | ||||
| @app.route('/help/en/<pagename>', methods=['GET']) | ||||
| def help_page(pagename): | ||||
|     """Render help page""" | ||||
|     page = user_help.PAGES.get(pagename) | ||||
| 
 | ||||
|     if page is None: | ||||
|         flask.abort(404) | ||||
| 
 | ||||
|     return render('help.html', page=user_help.PAGES[pagename]) | ||||
| 
 | ||||
| 
 | ||||
| @app.route('/autocompleter', methods=['GET', 'POST']) | ||||
|  |  | |||
|  | @ -174,7 +174,7 @@ class ViewsTestCase(SearxTestCase): | |||
|         self.assertIn(b'<description>first test content</description>', result.data) | ||||
| 
 | ||||
|     def test_about(self): | ||||
|         result = self.app.get('/about') | ||||
|         result = self.app.get('/help/en/about') | ||||
|         self.assertEqual(result.status_code, 200) | ||||
|         self.assertIn(b'<h1>About SearXNG</h1>', result.data) | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Martin Fischer
						Martin Fischer