def post(self, query_id): user_query = user_query_services.get_user_query(query_id) if (user_query is None or user_query.status != feconf.USER_QUERY_STATUS_COMPLETED): raise self.InvalidInputException('400 Invalid query id.') if user_query.submitter_id != self.user_id: raise self.UnauthorizedUserException( '%s is not an authorized user for this query.' % self.user_id) data = self.payload['data'] email_subject = data['email_subject'] email_body = data['email_body'] max_recipients = data['max_recipients'] email_intent = data['email_intent'] user_query_services.send_email_to_qualified_users( query_id, email_subject, email_body, email_intent, max_recipients) self.render_json({})
def post(self, query_id): query_model = user_models.UserQueryModel.get(query_id, strict=False) if (query_model is None or query_model.query_status != feconf.USER_QUERY_STATUS_COMPLETED): raise self.InvalidInputException('400 Invalid query id.') if query_model.submitter_id != self.user_id: raise self.UnauthorizedUserException( '%s is not an authorized user for this query.', self.user_id) data = self.payload['data'] email_subject = data['email_subject'] email_body = data['email_body'] max_recipients = data['max_recipients'] email_intent = data['email_intent'] user_query_services.send_email_to_qualified_users( query_id, email_subject, email_body, email_intent, max_recipients) self.render_json({})
def test_send_email_to_qualified_users(self) -> None: self.assertIsNone( user_models.UserBulkEmailsModel.get(self.new_user_id, strict=False)) self.assertIsNone( user_models.UserBulkEmailsModel.get(self.admin_user_id, strict=False)) send_bulk_email_swap = self.swap_with_checks( email_services, 'send_bulk_mail', lambda *_: None, expected_args=[ ('%s <%s>' % (self.CURRICULUM_ADMIN_USERNAME, self.CURRICULUM_ADMIN_EMAIL), [self.NEW_USER_EMAIL], 'subject', 'body', 'body') ]) with send_bulk_email_swap: user_query_services.send_email_to_qualified_users( self.USER_QUERY_1_ID, 'subject', 'body', feconf.BULK_EMAIL_INTENT_IMPROVE_EXPLORATION, 1) archived_user_query_model = (user_models.UserQueryModel.get_by_id( self.USER_QUERY_1_ID)) self.assertEqual(archived_user_query_model.query_status, feconf.USER_QUERY_STATUS_ARCHIVED) self.assertTrue(archived_user_query_model.deleted) new_user_bulk_email_model = user_models.UserBulkEmailsModel.get( self.new_user_id) # Ruling out the possibility of None for mypy type checking. assert new_user_bulk_email_model is not None self.assertIsNotNone( email_models.BulkEmailModel.get( new_user_bulk_email_model.sent_email_model_ids[0]))