def put(self, exploration_id): """Updates the email notification preferences for the given exploration. Args: exploration_id: str. The exploration id. Raises: InvalidInputException: Invalid message type. """ mute = self.payload.get('mute') message_type = self.payload.get('message_type') if message_type == feconf.MESSAGE_TYPE_FEEDBACK: user_services.set_email_preferences_for_exploration( self.user_id, exploration_id, mute_feedback_notifications=mute) elif message_type == feconf.MESSAGE_TYPE_SUGGESTION: user_services.set_email_preferences_for_exploration( self.user_id, exploration_id, mute_suggestion_notifications=mute) else: raise self.InvalidInputException('Invalid message type.') exploration_email_preferences = ( user_services.get_email_preferences_for_exploration( self.user_id, exploration_id)) self.render_json( {'email_preferences': exploration_email_preferences.to_dict()})
def put(self, exploration_id): """Updates the email notification preferences for the given exploration. Args: exploration_id: str. The exploration id. Raises: InvalidInputException: Invalid message type. """ mute = self.payload.get('mute') message_type = self.payload.get('message_type') if message_type == feconf.MESSAGE_TYPE_FEEDBACK: user_services.set_email_preferences_for_exploration( self.user_id, exploration_id, mute_feedback_notifications=mute) elif message_type == feconf.MESSAGE_TYPE_SUGGESTION: user_services.set_email_preferences_for_exploration( self.user_id, exploration_id, mute_suggestion_notifications=mute) else: raise self.InvalidInputException( 'Invalid message type.') exploration_email_preferences = ( user_services.get_email_preferences_for_exploration( self.user_id, exploration_id)) self.render_json({ 'email_preferences': exploration_email_preferences.to_dict() })
def test_email_is_not_sent_recipient_has_muted_this_exploration(self): user_services.set_email_preferences_for_exploration( self.editor_id, self.exploration.id, mute_feedback_notifications=True) with self.can_send_emails_ctx, self.can_send_feedback_email_ctx: feedback_services.create_thread( 'exploration', self.exploration.id, self.user_id_a, 'a subject', 'some text') # Note: the job in the taskqueue represents the realtime # event emitted by create_thread(). self.assertEqual( self.count_jobs_in_taskqueue( taskqueue_services.QUEUE_NAME_EVENTS), 1) self.process_and_flush_pending_tasks() messages = self.mail_stub.get_sent_messages(to=self.EDITOR_EMAIL) self.assertEqual(len(messages), 0)
def test_set_and_get_user_email_preferences_for_exploration(self): user_id = 'someUser' exploration_id = 'someExploration' username = '******' user_email = '*****@*****.**' user_services.get_or_create_user(user_id, user_email) user_services.set_username(user_id, username) # When ExplorationUserDataModel is yet to be created, the value # of mute_feedback_notifications and mute_suggestion_notifications # should match the default values. exploration_user_model = ( user_services.user_models.ExplorationUserDataModel.get( user_id, exploration_id)) self.assertIsNone(exploration_user_model) email_preferences = user_services.get_email_preferences_for_exploration( user_id, exploration_id) self.assertEquals( email_preferences.mute_feedback_notifications, feconf.DEFAULT_FEEDBACK_NOTIFICATIONS_MUTED_PREFERENCE) self.assertEquals( email_preferences.mute_suggestion_notifications, feconf.DEFAULT_SUGGESTION_NOTIFICATIONS_MUTED_PREFERENCE) # This initializes a ExplorationUserDataModel instance with # the default mute values. user_services.set_email_preferences_for_exploration( user_id, exploration_id, feconf.DEFAULT_FEEDBACK_NOTIFICATIONS_MUTED_PREFERENCE, feconf.DEFAULT_SUGGESTION_NOTIFICATIONS_MUTED_PREFERENCE) email_preferences = user_services.get_email_preferences_for_exploration( user_id, exploration_id) self.assertEquals( email_preferences.mute_feedback_notifications, feconf.DEFAULT_FEEDBACK_NOTIFICATIONS_MUTED_PREFERENCE) self.assertEquals( email_preferences.mute_suggestion_notifications, feconf.DEFAULT_SUGGESTION_NOTIFICATIONS_MUTED_PREFERENCE) # This sets only mute_suggestion_notifications property to True. # mute_feedback_notifications should remain same as before. user_services.set_email_preferences_for_exploration( user_id, exploration_id, mute_suggestion_notifications=True) email_preferences = user_services.get_email_preferences_for_exploration( user_id, exploration_id) self.assertEquals( email_preferences.mute_feedback_notifications, feconf.DEFAULT_FEEDBACK_NOTIFICATIONS_MUTED_PREFERENCE) self.assertTrue(email_preferences.mute_suggestion_notifications) # This sets only mute_feedback_notifications property to True. # mute_suggestion_notifications should remain same as before. user_services.set_email_preferences_for_exploration( user_id, exploration_id, mute_feedback_notifications=True) email_preferences = user_services.get_email_preferences_for_exploration( user_id, exploration_id) self.assertTrue(email_preferences.mute_feedback_notifications) self.assertTrue(email_preferences.mute_suggestion_notifications)