Total Complexity | 4 |
Total Lines | 45 |
Duplicated Lines | 0 % |
Coverage | 89.47% |
Changes | 0 |
1 | """ |
||
2 | byceps.blueprints.site.page.views |
||
3 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
||
4 | |||
5 | :Copyright: 2014-2024 Jochen Kupperschmidt |
||
6 | :License: Revised BSD (see `LICENSE` file for details) |
||
7 | """ |
||
8 | |||
9 | 1 | from flask import abort, g |
|
10 | |||
11 | 1 | from byceps.services.page import page_service |
|
12 | 1 | from byceps.util.framework.blueprint import create_blueprint |
|
13 | 1 | from byceps.util.l10n import get_default_locale, get_locale_str |
|
14 | |||
15 | 1 | from .templating import render_page, url_for_page |
|
16 | |||
17 | |||
18 | 1 | blueprint = create_blueprint('page', __name__) |
|
19 | |||
20 | 1 | blueprint.add_app_template_global(url_for_page) |
|
21 | |||
22 | |||
23 | 1 | @blueprint.get('/<path:url_path>') |
|
24 | 1 | def view(url_path): |
|
25 | """Show the current version of the page that is mounted for the |
||
26 | current site at the given URL path. |
||
27 | """ |
||
28 | 1 | url_path = '/' + url_path |
|
29 | |||
30 | 1 | version = _get_page_version(url_path, get_locale_str()) |
|
31 | 1 | if version is None: |
|
32 | 1 | version = _get_page_version(url_path, get_default_locale()) |
|
33 | |||
34 | 1 | if version is None: |
|
35 | 1 | abort(404) |
|
36 | |||
37 | page = page_service.get_page(version.page_id) |
||
38 | |||
39 | return render_page(page, version) |
||
40 | |||
41 | |||
42 | 1 | def _get_page_version(url_path: str, language_code: str): |
|
43 | 1 | return page_service.find_current_version_for_url_path( |
|
44 | g.site_id, url_path, language_code |
||
45 | ) |
||
46 |