Passed
Push — main ( 4dce73...0d6f99 )
by Jochen
04:31
created

byceps.util.templatefilters.utc_to_local_tz()   A

Complexity

Conditions 1

Size

Total Lines 4
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 3
nop 1
dl 0
loc 4
ccs 3
cts 3
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
"""
2
byceps.util.templatefilters
3
~~~~~~~~~~~~~~~~~~~~~~~~~~~
4
5
Provide and register custom template filters.
6
7
:Copyright: 2006-2021 Jochen Kupperschmidt
8
:License: Revised BSD (see `LICENSE` file for details)
9
"""
10
11 1
from flask_babel import gettext
12 1
from jinja2 import pass_eval_context
13 1
from jinja2.filters import do_default, do_trim
14 1
from markupsafe import Markup
15
16 1
from .datetime import format as dateformat
17 1
from .datetime.timezone import utc_to_local_tz
18 1
from . import money
19
20
21 1
@pass_eval_context
22
def dim(eval_ctx, value):
23
    """Render value in a way so that it looks dimmed."""
24 1
    dimmed = _dim(value)
25 1
    return _wrap_markup_on_autoescape(eval_ctx, dimmed)
26
27
28 1
def _dim(value):
29 1
    return f'<span class="dimmed">{value}</span>'
30
31
32 1
@pass_eval_context
33 1
def fallback(eval_ctx, value, fallback=None):
34 1
    defaulted = do_trim(do_default(value, '', True))
35 1
    if defaulted:
36 1
        result = value
37
    else:
38 1
        if fallback is None:
39 1
            fallback = gettext('not specified')
40 1
        result = _dim(fallback)
41
42 1
    return _wrap_markup_on_autoescape(eval_ctx, result)
43
44
45 1
def _wrap_markup_on_autoescape(eval_ctx, value):
46 1
    return Markup(value) if eval_ctx.autoescape else value
47
48
49 1
def register(app):
50
    """Make functions available as template filters."""
51 1
    functions = [
52
        dateformat.format_custom,
53
        dateformat.format_date_iso,
54
        dateformat.format_date_short,
55
        dateformat.format_date_long,
56
        dateformat.format_datetime_iso,
57
        dateformat.format_datetime_short,
58
        dateformat.format_datetime_long,
59
        dateformat.format_time,
60
        dim,
61
        fallback,
62
        money.format_euro_amount,
63
        utc_to_local_tz,
64
    ]
65
66 1
    for f in functions:
67
        app.add_template_filter(f)
68