1111
1212class TriggerType (Enum ):
1313 PROGRAM_SUBMISSION_DEADLINE = "program_submission_deadline"
14+ PROGRAM_REGISTRATION_DATE = "program_registration_date"
1415
1516
1617class RecipientRule (Enum ):
1718 ALL_PARTICIPANTS = "all_participants"
1819 NO_PROJECT_IN_PROGRAM = "no_project_in_program"
20+ NO_PROJECT_IN_PROGRAM_REGISTERED_ON_DATE = "no_project_in_program_registered_on_date"
21+ PROJECT_NOT_SUBMITTED = "project_not_submitted"
1922
2023
2124ContextBuilder = Callable [[PartnerProgram , CustomUser , date ], dict ]
@@ -34,14 +37,13 @@ class Scenario:
3437
3538def _build_submission_deadline_context (offset_days : int ) -> ContextBuilder :
3639 def _builder (program : PartnerProgram , user : CustomUser , deadline_date : date ) -> dict :
37- deadline_str = deadline_date .strftime ("%d.%m.%Y" )
3840 return {
39- "preview_text" : f"До окончания подачи проектов осталось { offset_days } дней " ,
40- "title" : "Пора подать проект " ,
41+ "preview_text" : "Кейс-чемпионат уже стартовал " ,
42+ "title" : "Время начинать! " ,
4143 "text" : (
42- f"До окончания подачи проектов в программе « { program . name } » "
43- f"осталось { offset_days } дней. "
44- f"Пожалуйста, подайте проект и сформируйте команду до { deadline_str } . "
44+ "Кейс-чемпионат уже стартовал. Скорее заходите на платформу, "
45+ "создавайте проект и подключайте команду к работе. \n \n "
46+ "Вас ждет много интересного ⚡ "
4547 ),
4648 "button_text" : "Подать проект" ,
4749 "button_link" : f"{ FRONTEND_BASE_URL } /office/program/{ program .id } " ,
@@ -50,14 +52,94 @@ def _builder(program: PartnerProgram, user: CustomUser, deadline_date: date) ->
5052 return _builder
5153
5254
55+ def _build_registration_plus_5_context () -> ContextBuilder :
56+ def _builder (program : PartnerProgram , user : CustomUser , _ref_date : date ) -> dict :
57+ return {
58+ "preview_text" : "Сделайте первый шаг в программе" ,
59+ "title" : "Сделать первый шаг" ,
60+ "text" : (
61+ "Когда непонятно с чего начать — стоит начать с самого простого. "
62+ "На раз-два-три: зайти на платформу — создать проект — "
63+ "пригласить команду.\n \n "
64+ "И вот, первый шаг уже сделан"
65+ ),
66+ }
67+
68+ return _builder
69+
70+
71+ def _build_project_not_submitted_context (title : str , text : str ) -> ContextBuilder :
72+ def _builder (program : PartnerProgram , user : CustomUser , _ref_date : date ) -> dict :
73+ return {
74+ "preview_text" : title ,
75+ "title" : title ,
76+ "text" : text ,
77+ }
78+
79+ return _builder
80+
81+
5382SCENARIOS : tuple [Scenario , ...] = (
5483 Scenario (
5584 code = "program_submission_deadline_minus_10_no_project" ,
5685 trigger = TriggerType .PROGRAM_SUBMISSION_DEADLINE ,
5786 offset_days = 10 ,
5887 template_name = "email/generic-template-0.html" ,
59- subject = "Procollab | Подача проекта " ,
88+ subject = "Время начинать! " ,
6089 recipient_rule = RecipientRule .NO_PROJECT_IN_PROGRAM ,
6190 context_builder = _build_submission_deadline_context (10 ),
6291 ),
92+ Scenario (
93+ code = "program_registration_plus_5_no_project" ,
94+ trigger = TriggerType .PROGRAM_REGISTRATION_DATE ,
95+ offset_days = 5 ,
96+ template_name = "email/generic-template-0.html" ,
97+ subject = "Сделать первый шаг" ,
98+ recipient_rule = RecipientRule .NO_PROJECT_IN_PROGRAM_REGISTERED_ON_DATE ,
99+ context_builder = _build_registration_plus_5_context (),
100+ ),
101+ Scenario (
102+ code = "program_submission_deadline_minus_9_project_not_submitted" ,
103+ trigger = TriggerType .PROGRAM_SUBMISSION_DEADLINE ,
104+ offset_days = 9 ,
105+ template_name = "email/generic-template-0.html" ,
106+ subject = "Кейс-задания опубликованы" ,
107+ recipient_rule = RecipientRule .PROJECT_NOT_SUBMITTED ,
108+ context_builder = _build_project_not_submitted_context (
109+ "Кейс-задания опубликованы" ,
110+ "Заходите на платформу, чтобы познакомиться с кейсами первого этапа "
111+ "кейс-чемпионата. Кейсы загружены в материалы закрытой группы.\n \n "
112+ "Приступайте к работе уже сегодня, чтобы успеть подготовить итоговое "
113+ "решение в срок ⚡" ,
114+ ),
115+ ),
116+ Scenario (
117+ code = "program_submission_deadline_minus_3_project_not_submitted" ,
118+ trigger = TriggerType .PROGRAM_SUBMISSION_DEADLINE ,
119+ offset_days = 3 ,
120+ template_name = "email/generic-template-0.html" ,
121+ subject = "До сдачи итогового решения осталось 3 дня" ,
122+ recipient_rule = RecipientRule .PROJECT_NOT_SUBMITTED ,
123+ context_builder = _build_project_not_submitted_context (
124+ "До сдачи итогового решения осталось 3 дня" ,
125+ "Работа в самом разгаре, и мы запускаем обратный отсчет. "
126+ "Осталось всего 3 дня, чтобы доработать проект, оформить презентацию "
127+ "и загрузить итоговое решение на платформу." ,
128+ ),
129+ ),
130+ Scenario (
131+ code = "program_submission_deadline_minus_1_project_not_submitted" ,
132+ trigger = TriggerType .PROGRAM_SUBMISSION_DEADLINE ,
133+ offset_days = 1 ,
134+ template_name = "email/generic-template-0.html" ,
135+ subject = "1 день до сдачи итогового решения" ,
136+ recipient_rule = RecipientRule .PROJECT_NOT_SUBMITTED ,
137+ context_builder = _build_project_not_submitted_context (
138+ "1 день до сдачи итогового решения" ,
139+ "День X совсем скоро. Осталось только внести последние штрихи и "
140+ "загрузить итоговое решение на платформу.\n \n "
141+ "По любым техническим вопросам всегда на связи @procollab_support\n \n "
142+ "Удачи!" ,
143+ ),
144+ ),
63145)
0 commit comments