byceps.blueprints.site.page.views.view()   A
last analyzed

Complexity

Conditions 3

Size

Total Lines 17
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 8
CRAP Score 3.072

Importance

Changes 0
Metric Value
cc 3
eloc 10
nop 1
dl 0
loc 17
ccs 8
cts 10
cp 0.8
crap 3.072
rs 9.9
c 0
b 0
f 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