| 
									
										
										
										
											2023-07-14 11:19:26 +08:00
										 |  |  | import logging | 
					
						
							|  |  |  | import time | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import click | 
					
						
							|  |  |  | from celery import shared_task | 
					
						
							| 
									
										
										
										
											2024-01-12 12:34:01 +08:00
										 |  |  | from flask import current_app, render_template | 
					
						
							| 
									
										
										
										
											2024-02-01 18:11:57 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-06 13:21:13 +08:00
										 |  |  | from extensions.ext_mail import mail | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-14 11:19:26 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-31 13:13:08 +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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-12-21 11:09:41 +08:00
										 |  |  |     Usage: send_invite_member_mail_task.delay(langauge, to, token, inviter_name, workspace_name) | 
					
						
							| 
									
										
										
										
											2023-07-14 11:19:26 +08:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     if not mail.is_inited(): | 
					
						
							|  |  |  |         return | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     logging.info(click.style('Start send invite member mail to {} in workspace {}'.format(to, workspace_name), | 
					
						
							|  |  |  |                              fg='green')) | 
					
						
							|  |  |  |     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: | 
					
						
							| 
									
										
										
										
											2023-12-21 11:09:41 +08:00
										 |  |  |         url = f'{current_app.config.get("CONSOLE_WEB_URL")}/activate?token={token}' | 
					
						
							| 
									
										
										
										
											2024-01-21 12:22:59 +08:00
										 |  |  |         if language == 'zh-Hans': | 
					
						
							| 
									
										
										
										
											2023-12-21 11:09:41 +08:00
										 |  |  |             html_content = render_template('invite_member_mail_template_zh-CN.html', | 
					
						
							|  |  |  |                                            to=to, | 
					
						
							|  |  |  |                                            inviter_name=inviter_name, | 
					
						
							|  |  |  |                                            workspace_name=workspace_name, | 
					
						
							|  |  |  |                                            url=url) | 
					
						
							|  |  |  |             mail.send(to=to, subject="立即加入 Dify 工作空间", html=html_content) | 
					
						
							|  |  |  |         else: | 
					
						
							|  |  |  |             html_content = render_template('invite_member_mail_template_en-US.html', | 
					
						
							|  |  |  |                                         to=to, | 
					
						
							|  |  |  |                                         inviter_name=inviter_name,  | 
					
						
							|  |  |  |                                         workspace_name=workspace_name, | 
					
						
							|  |  |  |                                         url=url) | 
					
						
							|  |  |  |             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( | 
					
						
							|  |  |  |             click.style('Send invite member mail to {} succeeded: latency: {}'.format(to, end_at - start_at), | 
					
						
							|  |  |  |                         fg='green')) | 
					
						
							|  |  |  |     except Exception: | 
					
						
							|  |  |  |         logging.exception("Send invite member mail to {} failed".format(to)) |