byceps.blueprints.site.page.views   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 45
Duplicated Lines 0 %

Test Coverage

Coverage 89.47%

Importance

Changes 0
Metric Value
eloc 21
dl 0
loc 45
ccs 17
cts 19
cp 0.8947
rs 10
c 0
b 0
f 0
wmc 4

2 Functions

Rating   Name   Duplication   Size   Complexity  
A _get_page_version() 0 3 1
A view() 0 17 3
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