Passed
Push — main ( 9fd59f...62d5d3 )
by Jochen
04:53
created

byceps.announce.text_assembly.snippet   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 79
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
eloc 41
dl 0
loc 79
ccs 21
cts 21
cp 1
rs 10
c 0
b 0
f 0
wmc 5

5 Functions

Rating   Name   Duplication   Size   Complexity  
A _get_scope_label() 0 2 1
A _get_snippet_type_label() 0 3 1
A assemble_text_for_snippet_created() 0 12 1
A assemble_text_for_snippet_updated() 0 12 1
A assemble_text_for_snippet_deleted() 0 11 1
1
"""
2
byceps.announce.text_assembly.snippet
3
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4
5
Announce snippet events.
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, lazy_gettext
12
13 1
from ...events.snippet import SnippetCreated, SnippetDeleted, SnippetUpdated
14 1
from ...services.snippet.transfer.models import Scope, SnippetType
15
16 1
from ._helpers import get_screen_name_or_fallback, with_locale
17
18
19 1
@with_locale
20 1
def assemble_text_for_snippet_created(event: SnippetCreated) -> str:
21 1
    editor_screen_name = get_screen_name_or_fallback(
22
        event.initiator_screen_name
23
    )
24
25 1
    return gettext(
26
        '%(editor_screen_name)s has created snippet %(snippet_type)s "%(snippet_name)s" in scope "%(scope)s".',
27
        editor_screen_name=editor_screen_name,
28
        snippet_type=_get_snippet_type_label(event.snippet_type),
29
        snippet_name=event.snippet_name,
30
        scope=_get_scope_label(event.scope),
31
    )
32
33
34 1
@with_locale
35 1
def assemble_text_for_snippet_updated(event: SnippetUpdated) -> str:
36 1
    editor_screen_name = get_screen_name_or_fallback(
37
        event.initiator_screen_name
38
    )
39
40 1
    return gettext(
41
        '%(editor_screen_name)s has updated snippet %(snippet_type)s "%(snippet_name)s" in scope "%(scope)s".',
42
        editor_screen_name=editor_screen_name,
43
        snippet_type=_get_snippet_type_label(event.snippet_type),
44
        snippet_name=event.snippet_name,
45
        scope=_get_scope_label(event.scope),
46
    )
47
48
49 1
@with_locale
50 1
def assemble_text_for_snippet_deleted(event: SnippetDeleted) -> str:
51 1
    initiator_screen_name = get_screen_name_or_fallback(
52
        event.initiator_screen_name
53
    )
54
55 1
    return gettext(
56
        '%(initiator_screen_name)s has deleted snippet "%(snippet_name)s" in scope "%(scope)s".',
57
        initiator_screen_name=initiator_screen_name,
58
        snippet_name=event.snippet_name,
59
        scope=_get_scope_label(event.scope),
60
    )
61
62
63
# helpers
64
65
66 1
_SNIPPET_TYPE_LABELS = {
67
    SnippetType.document: lazy_gettext('document'),
68
    SnippetType.fragment: lazy_gettext('fragment'),
69
}
70
71
72 1
def _get_snippet_type_label(snippet_type: SnippetType) -> str:
73
    """Return label for snippet type."""
74 1
    return _SNIPPET_TYPE_LABELS.get(snippet_type, '?')
75
76
77 1
def _get_scope_label(scope: Scope) -> str:
78
    return scope.type_ + '/' + scope.name
79