11from enum import Enum
22from typing import Literal , TypeAlias , TypedDict , Annotated
33
4- EmailTextTypes : TypeAlias = Literal ["accepted" , "outdated" , "responded" , "rejected" ]
4+ EmailTextTypes : TypeAlias = Literal [
5+ "accepted" , "outdated" , "responded" , "rejected" , "registered_program"
6+ ]
57
68
79class MessageTypeEnum (Enum ):
@@ -10,61 +12,81 @@ class MessageTypeEnum(Enum):
1012 RESPONDED = "responded"
1113 REJECTED = "rejected"
1214
15+ REGISTERED_PROGRAM_USER = "registered_program"
1316
14- class CeleryEmailParamsDict (TypedDict ):
17+
18+ class BaseEmailCeleryParamsDict (TypedDict ):
1519 message_type : EmailTextTypes
1620 user_id : int
21+ schema_id : int # = 2
22+
23+
24+ class CeleryEmailParamsDict (BaseEmailCeleryParamsDict ):
1725 project_name : str
1826 project_id : int
1927 vacancy_role : str
20- schema_id : int # = 2
28+
29+
30+ class UserProgramRegisterParamsDict (BaseEmailCeleryParamsDict ):
31+ program_name : str
32+ program_id : int
2133
2234
2335message_type_to_button_text : dict [Annotated [str , EmailTextTypes ], str ] = {
2436 MessageTypeEnum .ACCEPTED .value : "Посмотреть на проект" ,
2537 MessageTypeEnum .RESPONDED .value : "Посмотреть на отклики" ,
2638 MessageTypeEnum .OUTDATED .value : "Посмотреть на вакансию" ,
2739 MessageTypeEnum .REJECTED .value : "Посмотреть на проект" ,
40+ MessageTypeEnum .REGISTERED_PROGRAM_USER .value : "Посмотреть на программу" ,
2841}
2942
3043message_type_to_title : dict [Annotated [str , EmailTextTypes ], str ] = {
3144 MessageTypeEnum .ACCEPTED .value : "На ваш отклик ответили" ,
3245 MessageTypeEnum .RESPONDED .value : "На вашу вакансию откликнулись" ,
3346 MessageTypeEnum .OUTDATED .value : "У вашей вакансии истёк срок годности" ,
3447 MessageTypeEnum .REJECTED .value : "На ваш отклик ответили отказом" ,
48+ MessageTypeEnum .REGISTERED_PROGRAM_USER .value : "Вы зарегистрировались на программу" ,
3549}
3650
3751
38- def get_link (data : CeleryEmailParamsDict ):
52+ def get_link (data : CeleryEmailParamsDict | UserProgramRegisterParamsDict ):
3953 match data ["message_type" ]:
40- case "accepted" :
54+ case MessageTypeEnum . ACCEPTED . value :
4155 return f"https://app.procollab.ru/office/projects/{ data ['project_id' ]} "
42- case "responded" :
56+ case MessageTypeEnum . RESPONDED . value :
4357 return (
4458 f"https://app.procollab.ru/office/projects/{ data ['project_id' ]} /responses"
4559 )
46- case "outdated" :
60+ case MessageTypeEnum . OUTDATED . value :
4761 return f"https://app.procollab.ru/office/projects/{ data ['project_id' ]} /edit"
48- case "rejected" :
62+ case MessageTypeEnum . REJECTED . value :
4963 return f"https://app.procollab.ru/office/projects/{ data ['project_id' ]} "
64+ case MessageTypeEnum .REGISTERED_PROGRAM_USER .value :
65+ return f"https://app.procollab.ru/office/program/{ data ['program_id' ]} "
5066
5167
52- def create_text_for_email (data : CeleryEmailParamsDict ) -> str :
68+ def create_text_for_email (
69+ data : CeleryEmailParamsDict | UserProgramRegisterParamsDict ,
70+ ) -> str :
5371 match data ["message_type" ]:
54- case "accepted" :
72+ case MessageTypeEnum . ACCEPTED . value :
5573 return f"""
5674 Ваш отклик на роль { data ["vacancy_role" ]} в проекте "{ data ["project_name" ]} " не остался незамеченным.
5775 Вас готовы принять в команду!
5876 """
59- case "responded" :
77+ case MessageTypeEnum . RESPONDED . value :
6078 return f"На вакансию { data ['vacancy_role' ]} для проекта '{ data ['project_name' ]} ' оставили отклик."
61- case "outdated" :
79+ case MessageTypeEnum . OUTDATED . value :
6280 return f"""
6381 У вакансии { data ["vacancy_role" ]} для проекта '{ data ["project_name" ]} ' истёк срок годности.\n
6482 Она более не будет показываться в поиске.
6583 """
66- case "rejected" :
84+ case MessageTypeEnum . REJECTED . value :
6785 return f"""
6886 К сожалению, на ваш отклик на вакансию { data ['vacancy_role' ]}
6987 для проекта '{ data ['project_name' ]} ' ответили отказом.
7088 """
89+ case MessageTypeEnum .REGISTERED_PROGRAM_USER .value :
90+ return f"""
91+ Вы успешно зарегистрировались на программу { data ['program_name' ]}
92+ """
0 commit comments