def send_email_to_qualified_users( query_id: str, email_subject: str, email_body: str, email_intent: str, max_recipients: int ) -> None: """Send email to maximum 'max_recipients' qualified users. Args: query_id: str. ID of the UserQueryModel instance. email_subject: str. Subject of the email to be sent. email_body: str. Body of the email to be sent. email_intent: str. Intent of the email. max_recipients: int. Maximum number of recipients send emails to. """ user_query = get_user_query(query_id, strict=True) # Ruling out the possibility of None for mypy type checking. assert user_query is not None recipient_ids = user_query.user_ids if max_recipients: recipient_ids = recipient_ids[:max_recipients] bulk_email_model_id = email_manager.send_user_query_email( # type: ignore[no-untyped-call] user_query.submitter_id, recipient_ids, email_subject, email_body, email_intent ) user_query.archive(sent_email_model_id=bulk_email_model_id) _save_user_query(user_query) # Store BulkEmailModel in UserBulkEmailsModel of each recipient. for recipient_id in recipient_ids: recipient_bulk_email_model = ( user_models.UserBulkEmailsModel.get(recipient_id, strict=False)) if recipient_bulk_email_model is None: recipient_bulk_email_model = user_models.UserBulkEmailsModel( id=recipient_id, sent_email_model_ids=[]) recipient_bulk_email_model.sent_email_model_ids.append( bulk_email_model_id) recipient_bulk_email_model.update_timestamps() recipient_bulk_email_model.put()
def send_email_to_qualified_users(query_id, email_subject, email_body, email_intent, max_recipients): """Send email to maximum 'max_recipients' qualified users. Args: query_id: str. ID of the UserQueryModel instance. email_subject: str. Subject of the email to be sent. email_body: str. Body of the email to be sent. email_intent: str. Intent of the email. max_recipients: int. Maximum number of recipients send emails to. """ query_model = user_models.UserQueryModel.get(query_id) query_model.query_status = feconf.USER_QUERY_STATUS_ARCHIVED recipient_ids = query_model.user_ids if max_recipients: recipient_ids = recipient_ids[:max_recipients] bulk_email_model_id = email_manager.send_user_query_email( query_model.submitter_id, recipient_ids, email_subject, email_body, email_intent) query_model.sent_email_model_id = bulk_email_model_id query_model.deleted = True query_model.update_timestamps() query_model.put() # Store BulkEmailModel in UserBulkEmailsModel of each recipient. for recipient_id in recipient_ids: recipient_bulk_email_model = (user_models.UserBulkEmailsModel.get( recipient_id, strict=False)) if recipient_bulk_email_model is None: recipient_bulk_email_model = user_models.UserBulkEmailsModel( id=recipient_id, sent_email_model_ids=[]) recipient_bulk_email_model.sent_email_model_ids.append( bulk_email_model_id) recipient_bulk_email_model.update_timestamps() recipient_bulk_email_model.put()
def send_email_to_qualified_users( query_id, email_subject, email_body, email_intent, max_recipients): """Send email to maximum 'max_recipients' qualified users. Args: query_id: str. ID of the UserQueryModel instance. email_subject: str. Subject of the email to be sent. email_body: str. Body of the email to be sent. email_intent: str. Intent of the email. max_recipients: int. Maximum number of recipients send emails to. """ query_model = user_models.UserQueryModel.get(query_id) query_model.query_status = feconf.USER_QUERY_STATUS_ARCHIVED recipient_ids = query_model.user_ids if max_recipients: recipient_ids = recipient_ids[:max_recipients] bulk_email_model_id = email_manager.send_user_query_email( query_model.submitter_id, recipient_ids, email_subject, email_body, email_intent) query_model.sent_email_model_id = bulk_email_model_id query_model.put() # Store BulkEmailModel in UserBulkEmailsModel of each recipient. for recipient_id in recipient_ids: recipient_bulk_email_model = ( user_models.UserBulkEmailsModel.get(recipient_id, strict=False)) if recipient_bulk_email_model is None: recipient_bulk_email_model = user_models.UserBulkEmailsModel( id=recipient_id, sent_email_model_ids=[]) recipient_bulk_email_model.sent_email_model_ids.append( bulk_email_model_id) recipient_bulk_email_model.put()