22from typing import Literal , TypeAlias , TypedDict , Annotated
33
44EmailTextTypes : TypeAlias = Literal [
5- "accepted" , "outdated" , "responded" , "rejected" , "registered_program"
5+ "accepted" , "outdated" , "responded" , "rejected" , "registered_program" , "project_rated"
66]
77
88
@@ -14,30 +14,43 @@ class MessageTypeEnum(Enum):
1414
1515 REGISTERED_PROGRAM_USER = "registered_program"
1616
17+ PROJECT_RATED = "project_rated"
1718
18- class BaseEmailCeleryParamsDict (TypedDict ):
19+
20+ class BaseEmailCeleryParams (TypedDict ):
1921 message_type : EmailTextTypes
2022 user_id : int
2123 schema_id : int # = 2
2224
2325
24- class CeleryEmailParamsDict ( BaseEmailCeleryParamsDict ):
26+ class CeleryEmailParams ( BaseEmailCeleryParams ):
2527 project_name : str
2628 project_id : int
2729 vacancy_role : str
2830
2931
30- class UserProgramRegisterParamsDict ( BaseEmailCeleryParamsDict ):
32+ class UserProgramRegisterParams ( BaseEmailCeleryParams ):
3133 program_name : str
3234 program_id : int
3335
3436
37+ class ProjectRatedParams (BaseEmailCeleryParams ):
38+ program_name : str
39+ project_name : str
40+ project_id : int
41+
42+
43+ EmailParamsType : TypeAlias = (
44+ CeleryEmailParams | ProjectRatedParams | UserProgramRegisterParams
45+ )
46+
3547message_type_to_button_text : dict [Annotated [str , EmailTextTypes ], str ] = {
3648 MessageTypeEnum .ACCEPTED .value : "Посмотреть на проект" ,
3749 MessageTypeEnum .RESPONDED .value : "Посмотреть на отклики" ,
3850 MessageTypeEnum .OUTDATED .value : "Посмотреть на вакансию" ,
3951 MessageTypeEnum .REJECTED .value : "Посмотреть на проект" ,
4052 MessageTypeEnum .REGISTERED_PROGRAM_USER .value : "Посмотреть на программу" ,
53+ MessageTypeEnum .PROJECT_RATED .value : "Посмотреть на проект" ,
4154}
4255
4356message_type_to_title : dict [Annotated [str , EmailTextTypes ], str ] = {
@@ -49,7 +62,7 @@ class UserProgramRegisterParamsDict(BaseEmailCeleryParamsDict):
4962}
5063
5164
52- def get_link (data : CeleryEmailParamsDict | UserProgramRegisterParamsDict ):
65+ def get_link (data : EmailParamsType ):
5366 match data ["message_type" ]:
5467 case MessageTypeEnum .ACCEPTED .value :
5568 return f"https://app.procollab.ru/office/projects/{ data ['project_id' ]} "
@@ -61,13 +74,15 @@ def get_link(data: CeleryEmailParamsDict | UserProgramRegisterParamsDict):
6174 return f"https://app.procollab.ru/office/projects/{ data ['project_id' ]} /edit"
6275 case MessageTypeEnum .REJECTED .value :
6376 return f"https://app.procollab.ru/office/projects/{ data ['project_id' ]} "
77+
6478 case MessageTypeEnum .REGISTERED_PROGRAM_USER .value :
6579 return f"https://app.procollab.ru/office/program/{ data ['program_id' ]} "
6680
81+ case MessageTypeEnum .PROJECT_RATED .value :
82+ return f"https://app.procollab.ru/office/projects/{ data ['project_id' ]} "
83+
6784
68- def create_text_for_email (
69- data : CeleryEmailParamsDict | UserProgramRegisterParamsDict ,
70- ) -> str :
85+ def create_text_for_email (data : EmailParamsType ) -> str :
7186 match data ["message_type" ]:
7287 case MessageTypeEnum .ACCEPTED .value :
7388 return f"""
@@ -90,3 +105,8 @@ def create_text_for_email(
90105 return f"""
91106 Вы успешно зарегистрировались на программу { data ['program_name' ]}
92107 """
108+ case MessageTypeEnum .PROJECT_RATED .value :
109+ return f"""
110+ Ваш проект '{ data ["project_name" ]} ' был оценён экспертом по программе '{ data ["program_name" ]} '!
111+ Скоро будут результаты.
112+ """
0 commit comments