Skip to content

Commit 87eee11

Browse files
committed
Убраны дублирующиеся функции
1 parent 4de1068 commit 87eee11

3 files changed

Lines changed: 26 additions & 18 deletions

File tree

mailing/rendering.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
from partner_programs.models import PartnerProgram
2+
from users.models import CustomUser
3+
4+
5+
def render_subject(subject: str, program: PartnerProgram) -> str:
6+
return subject.replace("{program_name}", program.name)
7+
8+
9+
def render_template_value(
10+
value: str,
11+
program: PartnerProgram,
12+
user: CustomUser,
13+
) -> str:
14+
return (
15+
value.replace("{program_name}", program.name)
16+
.replace("{program_id}", str(program.id))
17+
.replace("{user_id}", str(user.id))
18+
)

mailing/scenarios.py

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from enum import Enum
44
from typing import Callable
55

6+
from mailing.rendering import render_template_value
67
from partner_programs.models import PartnerProgram
78
from users.models import CustomUser
89

@@ -40,14 +41,6 @@ class Scenario:
4041
context_builder: ContextBuilder
4142

4243

43-
def _render_context_value(value: str, program: PartnerProgram, user: CustomUser) -> str:
44-
return (
45-
value.replace("{program_name}", program.name)
46-
.replace("{program_id}", str(program.id))
47-
.replace("{user_id}", str(user.id))
48-
)
49-
50-
5144
def _build_context(
5245
*,
5346
preview_text: str,
@@ -58,14 +51,14 @@ def _build_context(
5851
) -> ContextBuilder:
5952
def _builder(program: PartnerProgram, user: CustomUser, _ref_date: date) -> dict:
6053
context = {
61-
"preview_text": _render_context_value(preview_text, program, user),
62-
"title": _render_context_value(title, program, user),
63-
"text": _render_context_value(text, program, user),
54+
"preview_text": render_template_value(preview_text, program, user),
55+
"title": render_template_value(title, program, user),
56+
"text": render_template_value(text, program, user),
6457
}
6558
if button_text is not None:
66-
context["button_text"] = _render_context_value(button_text, program, user)
59+
context["button_text"] = render_template_value(button_text, program, user)
6760
if button_link is not None:
68-
context["button_link"] = _render_context_value(button_link, program, user)
61+
context["button_link"] = render_template_value(button_link, program, user)
6962
return context
7063

7164
return _builder

mailing/tasks.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
from mailing.constants import FAILED_ANYMAIL_STATUSES
77
from mailing.models import MailingScenarioLog
8+
from mailing.rendering import render_subject
89
from mailing.scenarios import RecipientRule, SCENARIOS, TriggerType
910
from mailing.utils import send_mass_mail_from_template
1011
from partner_programs.selectors import (
@@ -23,10 +24,6 @@
2324
logger = logging.getLogger(__name__)
2425

2526

26-
def _build_subject(scenario, program) -> str:
27-
return scenario.subject.replace("{program_name}", program.name)
28-
29-
3027
def _get_programs_for_scenario(scenario, target_date):
3128
match scenario.trigger:
3229
case TriggerType.PROGRAM_SUBMISSION_DEADLINE:
@@ -216,7 +213,7 @@ def status_callback(user, msg):
216213
try:
217214
num_sent = send_mass_mail_from_template(
218215
recipients_to_send,
219-
_build_subject(scenario, program),
216+
render_subject(scenario.subject, program),
220217
scenario.template_name,
221218
context_builder=context_builder,
222219
status_callback=status_callback,

0 commit comments

Comments
 (0)