| 
									
										
										
										
											2023-07-14 11:19:26 +08:00
										 |  |  | import logging | 
					
						
							|  |  |  | import time | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import click | 
					
						
							|  |  |  | from celery import shared_task | 
					
						
							| 
									
										
										
										
											2024-07-12 12:25:38 +08:00
										 |  |  | from flask import render_template | 
					
						
							| 
									
										
										
										
											2024-02-01 18:11:57 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-12 12:25:38 +08:00
										 |  |  | from configs import dify_config | 
					
						
							| 
									
										
										
										
											2024-02-06 13:21:13 +08:00
										 |  |  | from extensions.ext_mail import mail | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-14 11:19:26 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-26 13:38:37 +08:00
										 |  |  | @shared_task(queue="mail") | 
					
						
							| 
									
										
										
										
											2023-12-21 11:09:41 +08:00
										 |  |  | def send_invite_member_mail_task(language: str, to: str, token: str, inviter_name: str, workspace_name: str): | 
					
						
							| 
									
										
										
										
											2023-07-14 11:19:26 +08:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     Async Send invite member mail | 
					
						
							| 
									
										
										
										
											2023-12-21 11:09:41 +08:00
										 |  |  |     :param language | 
					
						
							| 
									
										
										
										
											2023-07-14 11:19:26 +08:00
										 |  |  |     :param to | 
					
						
							|  |  |  |     :param token | 
					
						
							|  |  |  |     :param inviter_name | 
					
						
							|  |  |  |     :param workspace_name | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-09-02 09:41:45 +09:00
										 |  |  |     Usage: send_invite_member_mail_task.delay(language, to, token, inviter_name, workspace_name) | 
					
						
							| 
									
										
										
										
											2023-07-14 11:19:26 +08:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     if not mail.is_inited(): | 
					
						
							|  |  |  |         return | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-26 13:38:37 +08:00
										 |  |  |     logging.info( | 
					
						
							|  |  |  |         click.style("Start send invite member mail to {} in workspace {}".format(to, workspace_name), fg="green") | 
					
						
							|  |  |  |     ) | 
					
						
							| 
									
										
										
										
											2023-07-14 11:19:26 +08:00
										 |  |  |     start_at = time.perf_counter() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  |     # send invite member mail using different languages | 
					
						
							| 
									
										
										
										
											2023-07-14 11:19:26 +08:00
										 |  |  |     try: | 
					
						
							| 
									
										
										
										
											2024-08-26 13:38:37 +08:00
										 |  |  |         url = f"{dify_config.CONSOLE_WEB_URL}/activate?token={token}" | 
					
						
							|  |  |  |         if language == "zh-Hans": | 
					
						
							|  |  |  |             html_content = render_template( | 
					
						
							|  |  |  |                 "invite_member_mail_template_zh-CN.html", | 
					
						
							|  |  |  |                 to=to, | 
					
						
							|  |  |  |                 inviter_name=inviter_name, | 
					
						
							|  |  |  |                 workspace_name=workspace_name, | 
					
						
							|  |  |  |                 url=url, | 
					
						
							|  |  |  |             ) | 
					
						
							| 
									
										
										
										
											2023-12-21 11:09:41 +08:00
										 |  |  |             mail.send(to=to, subject="立即加入 Dify 工作空间", html=html_content) | 
					
						
							|  |  |  |         else: | 
					
						
							| 
									
										
										
										
											2024-08-26 13:38:37 +08:00
										 |  |  |             html_content = render_template( | 
					
						
							|  |  |  |                 "invite_member_mail_template_en-US.html", | 
					
						
							|  |  |  |                 to=to, | 
					
						
							|  |  |  |                 inviter_name=inviter_name, | 
					
						
							|  |  |  |                 workspace_name=workspace_name, | 
					
						
							|  |  |  |                 url=url, | 
					
						
							|  |  |  |             ) | 
					
						
							| 
									
										
										
										
											2023-12-21 11:09:41 +08:00
										 |  |  |             mail.send(to=to, subject="Join Dify Workspace Now", html=html_content) | 
					
						
							| 
									
										
										
										
											2023-07-14 11:19:26 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |         end_at = time.perf_counter() | 
					
						
							|  |  |  |         logging.info( | 
					
						
							| 
									
										
										
										
											2024-08-26 13:38:37 +08:00
										 |  |  |             click.style( | 
					
						
							|  |  |  |                 "Send invite member mail to {} succeeded: latency: {}".format(to, end_at - start_at), fg="green" | 
					
						
							|  |  |  |             ) | 
					
						
							|  |  |  |         ) | 
					
						
							| 
									
										
										
										
											2023-07-14 11:19:26 +08:00
										 |  |  |     except Exception: | 
					
						
							| 
									
										
										
										
											2024-08-26 13:38:37 +08:00
										 |  |  |         logging.exception("Send invite member mail to {} failed".format(to)) |