notify_withdrawn_user_manager()   A
last analyzed

Complexity

Conditions 2

Size

Total Lines 20
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 1
CRAP Score 4.3145

Importance

Changes 0
Metric Value
cc 2
eloc 14
nop 3
dl 0
loc 20
ccs 1
cts 6
cp 0.1666
crap 4.3145
rs 9.7
c 0
b 0
f 0
1
"""
2
byceps.blueprints.site.ticketing.notification_service
3
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4
5
:Copyright: 2014-2024 Jochen Kupperschmidt
6
:License: Revised BSD (see `LICENSE` file for details)
7
"""
8
9 1
from flask import g
10 1
from flask_babel import gettext
11
12 1
from byceps.services.email import email_config_service, email_service
13 1
from byceps.services.ticketing.dbmodels.ticket import DbTicket
14 1
from byceps.services.user import user_service
15 1
from byceps.services.user.models.user import User
16 1
from byceps.util.l10n import force_user_locale
17
18
19 1
def notify_appointed_user(ticket: DbTicket, user: User, manager: User) -> None:
20
    party_title = g.party.title
21
22
    with force_user_locale(user):
23
        subject = gettext(
24
            '%(screen_name)s has assigned ticket %(ticket_code)s to you.',
25
            screen_name=manager.screen_name,
26
            ticket_code=ticket.code,
27
        )
28
29
        body = gettext(
30
            '%(screen_name)s has assigned ticket %(ticket_code)s to you which entitles you to attend %(party_title)s.',
31
            screen_name=manager.screen_name,
32
            ticket_code=ticket.code,
33
            party_title=party_title,
34
        )
35
36
    _enqueue_email(user, subject, body)
37
38
39 1
def notify_withdrawn_user(ticket: DbTicket, user: User, manager: User) -> None:
40
    party_title = g.party.title
41
42
    with force_user_locale(user):
43
        subject = gettext(
44
            '%(screen_name)s has withdrawn ticket %(ticket_code)s from you.',
45
            screen_name=manager.screen_name,
46
            ticket_code=ticket.code,
47
        )
48
49
        body = gettext(
50
            '%(screen_name)s has withdrawn ticket %(ticket_code)s for %(party_title)s, which was previously assigned to you, from you.',
51
            screen_name=manager.screen_name,
52
            ticket_code=ticket.code,
53
            party_title=party_title,
54
        )
55
56
    _enqueue_email(user, subject, body)
57
58
59 1
def notify_appointed_user_manager(
60
    ticket: DbTicket, user: User, manager: User
61
) -> None:
62
    party_title = g.party.title
63
64
    with force_user_locale(user):
65
        subject = gettext(
66
            '%(screen_name)s has assigned user management for ticket %(ticket_code)s to you.',
67
            screen_name=manager.screen_name,
68
            ticket_code=ticket.code,
69
        )
70
71
        body = gettext(
72
            '%(screen_name)s has assigned user management for ticket %(ticket_code)s for %(party_title)s to you.',
73
            screen_name=manager.screen_name,
74
            ticket_code=ticket.code,
75
            party_title=party_title,
76
        )
77
78
    _enqueue_email(user, subject, body)
79
80
81 1
def notify_withdrawn_user_manager(
82
    ticket: DbTicket, user: User, manager: User
83
) -> None:
84
    party_title = g.party.title
85
86
    with force_user_locale(user):
87
        subject = gettext(
88
            '%(screen_name)s has withdrawn user management for ticket %(ticket_code)s from you.',
89
            screen_name=manager.screen_name,
90
            ticket_code=ticket.code,
91
        )
92
93
        body = gettext(
94
            '%(screen_name)s has withdrawn user management for ticket %(ticket_code)s for %(party_title)s, which was previously assigned to you, from you.',
95
            screen_name=manager.screen_name,
96
            ticket_code=ticket.code,
97
            party_title=party_title,
98
        )
99
100
    _enqueue_email(user, subject, body)
101
102
103 1
def notify_appointed_seat_manager(
104
    ticket: DbTicket, user: User, manager: User
105
) -> None:
106
    party_title = g.party.title
107
108
    with force_user_locale(user):
109
        subject = gettext(
110
            '%(screen_name)s has assigned seat management for ticket %(ticket_code)s to you.',
111
            screen_name=manager.screen_name,
112
            ticket_code=ticket.code,
113
        )
114
115
        body = gettext(
116
            '%(screen_name)s has assigned seat management for ticket %(ticket_code)s for %(party_title)s to you.',
117
            screen_name=manager.screen_name,
118
            ticket_code=ticket.code,
119
            party_title=party_title,
120
        )
121
122
    _enqueue_email(user, subject, body)
123
124
125 1
def notify_withdrawn_seat_manager(
126
    ticket: DbTicket, user: User, manager: User
127
) -> None:
128
    party_title = g.party.title
129
130
    with force_user_locale(user):
131
        subject = gettext(
132
            '%(screen_name)s has withdrawn seat management for ticket %(ticket_code)s from you.',
133
            screen_name=manager.screen_name,
134
            ticket_code=ticket.code,
135
        )
136
137
        body = gettext(
138
            '%(screen_name)s has withdrawn seat management for ticket %(ticket_code)s for %(party_title)s, which was previously assigned to you, from you.',
139
            screen_name=manager.screen_name,
140
            ticket_code=ticket.code,
141
            party_title=party_title,
142
        )
143
144
    _enqueue_email(user, subject, body)
145
146
147 1
def _enqueue_email(recipient: User, subject: str, body: str) -> None:
148
    email_config = email_config_service.get_config(g.brand_id)
149
    sender = email_config.sender
150
151
    recipient_address = user_service.get_email_address(recipient.id)
152
    recipients = [recipient_address]
153
154
    with force_user_locale(recipient):
155
        salutation = (
156
            gettext('Hello %(screen_name)s,', screen_name=recipient.screen_name)
157
            + '\n\n'
158
        )
159
    body = salutation + body
160
161
    email_service.enqueue_email(sender, recipients, subject, body)
162