def put(self): """Handles POST requests.""" update_type = self.payload.get('update_type') data = self.payload.get('data') if update_type == 'user_bio': user_services.update_user_bio(self.user_id, data) elif update_type == 'subject_interests': user_services.update_subject_interests(self.user_id, data) elif update_type == 'preferred_language_codes': user_services.update_preferred_language_codes(self.user_id, data) elif update_type == 'preferred_site_language_code': user_services.update_preferred_site_language_code( self.user_id, data) elif update_type == 'profile_picture_data_url': user_services.update_profile_picture_data_url(self.user_id, data) elif update_type == 'email_preferences': user_services.update_email_preferences( self.user_id, data['can_receive_email_updates'], data['can_receive_editor_role_email'], data['can_receive_feedback_message_email']) else: raise self.InvalidInputException('Invalid update type: %s' % update_type) self.render_json({})
def put(self): """Handles POST requests.""" update_type = self.payload.get('update_type') data = self.payload.get('data') if update_type == 'user_bio': user_services.update_user_bio(self.user_id, data) elif update_type == 'subject_interests': user_services.update_subject_interests(self.user_id, data) elif update_type == 'preferred_language_codes': user_services.update_preferred_language_codes(self.user_id, data) elif update_type == 'preferred_site_language_code': user_services.update_preferred_site_language_code( self.user_id, data) elif update_type == 'profile_picture_data_url': user_services.update_profile_picture_data_url(self.user_id, data) elif update_type == 'email_preferences': user_services.update_email_preferences( self.user_id, data['can_receive_email_updates'], data['can_receive_editor_role_email'], data['can_receive_feedback_message_email']) else: raise self.InvalidInputException( 'Invalid update type: %s' % update_type) self.render_json({})
def put(self): """Handles POST requests.""" update_type = self.payload.get('update_type') data = self.payload.get('data') if update_type == 'user_bio': user_services.update_user_bio(self.user_id, data) elif update_type == 'preferred_language_codes': user_services.update_preferred_language_codes(self.user_id, data) elif update_type == 'profile_picture_data_url': user_services.update_profile_picture_data_url(self.user_id, data) else: raise self.InvalidInputException('Invalid update type: %s' % update_type)
def put(self): """Handles POST requests.""" update_type = self.payload.get('update_type') data = self.payload.get('data') if update_type == 'user_bio': user_services.update_user_bio(self.user_id, data) elif update_type == 'preferred_language_codes': user_services.update_preferred_language_codes(self.user_id, data) elif update_type == 'profile_picture_data_url': user_services.update_profile_picture_data_url(self.user_id, data) else: raise self.InvalidInputException( 'Invalid update type: %s' % update_type)
def put(self): """Handles POST requests.""" update_type = self.payload.get("update_type") data = self.payload.get("data") if update_type == "user_bio": user_services.update_user_bio(self.user_id, data) elif update_type == "preferred_language_codes": user_services.update_preferred_language_codes(self.user_id, data) elif update_type == "profile_picture_data_url": user_services.update_profile_picture_data_url(self.user_id, data) elif update_type == "can_receive_email_updates": user_services.update_email_preferences(self.user_id, data) else: raise self.InvalidInputException("Invalid update type: %s" % update_type)
def test_get_profile_picture_with_updated_value(self): self.get_json('/preferenceshandler/profile_picture', expected_status_int=401) self.signup(self.OWNER_EMAIL, self.OWNER_USERNAME) owner_id = self.get_user_id_from_email(self.OWNER_EMAIL) self.login(self.OWNER_EMAIL) user_settings = user_services.get_user_settings(owner_id) response = self.get_json('/preferenceshandler/profile_picture') self.assertEqual(response['profile_picture_data_url'], user_settings.profile_picture_data_url) user_services.update_profile_picture_data_url(owner_id, 'new_profile_picture') response = self.get_json('/preferenceshandler/profile_picture') self.assertEqual(response['profile_picture_data_url'], 'new_profile_picture') self.logout()
def put(self): """Handles PUT requests.""" update_type = self.payload.get('update_type') data = self.payload.get('data') bulk_email_signup_message_should_be_shown = False if update_type == 'user_bio': if len(data) > feconf.MAX_BIO_LENGTH_IN_CHARS: raise self.InvalidInputException( 'User bio exceeds maximum character limit: %s' % feconf.MAX_BIO_LENGTH_IN_CHARS) user_services.update_user_bio(self.user_id, data) elif update_type == 'subject_interests': user_services.update_subject_interests(self.user_id, data) elif update_type == 'preferred_language_codes': user_services.update_preferred_language_codes(self.user_id, data) elif update_type == 'preferred_site_language_code': user_services.update_preferred_site_language_code( self.user_id, data) elif update_type == 'preferred_audio_language_code': user_services.update_preferred_audio_language_code( self.user_id, data) elif update_type == 'preferred_translation_language_code': user_services.update_preferred_translation_language_code( self.user_id, data) elif update_type == 'profile_picture_data_url': user_services.update_profile_picture_data_url(self.user_id, data) elif update_type == 'default_dashboard': user_services.update_user_default_dashboard(self.user_id, data) elif update_type == 'email_preferences': bulk_email_signup_message_should_be_shown = ( user_services.update_email_preferences( self.user_id, data['can_receive_email_updates'], data['can_receive_editor_role_email'], data['can_receive_feedback_message_email'], data['can_receive_subscription_email'])) else: raise self.InvalidInputException( 'Invalid update type: %s' % update_type) self.render_json({ 'bulk_email_signup_message_should_be_shown': ( bulk_email_signup_message_should_be_shown) })
def test_new_profile_picture_is_generated_if_it_does_not_exist(self): user_services.update_profile_picture_data_url(self.owner_id, None) # Before the job runs, the data URL is None. user_settings = user_services.get_user_settings(self.owner_id) self.assertIsNone(user_settings.profile_picture_data_url) job_id = (user_jobs_one_off.UserProfilePictureOneOffJob.create_new()) user_jobs_one_off.UserProfilePictureOneOffJob.enqueue(job_id) def _mock_fetch_gravatar(unused_email): return self.FETCHED_GRAVATAR with self.swap(user_services, 'fetch_gravatar', _mock_fetch_gravatar): self.process_and_flush_pending_tasks() # After the job runs, the data URL has been updated. new_user_settings = user_services.get_user_settings(self.owner_id) self.assertEqual(new_user_settings.profile_picture_data_url, self.FETCHED_GRAVATAR)
def test_new_profile_picture_is_generated_if_it_does_not_exist(self): user_services.update_profile_picture_data_url(self.owner_id, None) # Before the job runs, the data URL is None. user_settings = user_services.get_user_settings(self.owner_id) self.assertIsNone(user_settings.profile_picture_data_url) job_id = ( user_jobs_one_off.UserProfilePictureOneOffJob.create_new()) user_jobs_one_off.UserProfilePictureOneOffJob.enqueue(job_id) def _mock_fetch_gravatar(unused_email): return self.FETCHED_GRAVATAR with self.swap(user_services, 'fetch_gravatar', _mock_fetch_gravatar): self.process_and_flush_pending_tasks() # After the job runs, the data URL has been updated. new_user_settings = user_services.get_user_settings(self.owner_id) self.assertEqual( new_user_settings.profile_picture_data_url, self.FETCHED_GRAVATAR)
def test_profile_picture_is_not_regenerated_if_it_already_exists(self): user_services.update_profile_picture_data_url( self.owner_id, 'manually_added_data_url') # Before the job runs, the data URL is the manually-added one. user_settings = user_services.get_user_settings(self.owner_id) self.assertEqual(user_settings.profile_picture_data_url, 'manually_added_data_url') job_id = (user_jobs_one_off.UserProfilePictureOneOffJob.create_new()) user_jobs_one_off.UserProfilePictureOneOffJob.enqueue(job_id) def _mock_fetch_gravatar(unused_email): return self.FETCHED_GRAVATAR with self.swap(user_services, 'fetch_gravatar', _mock_fetch_gravatar): self.process_and_flush_pending_tasks() # After the job runs, the data URL is still the manually-added one. new_user_settings = user_services.get_user_settings(self.owner_id) self.assertEqual(new_user_settings.profile_picture_data_url, 'manually_added_data_url')
def test_profile_picture_is_not_regenerated_if_it_already_exists(self): user_services.update_profile_picture_data_url( self.owner_id, 'manually_added_data_url') # Before the job runs, the data URL is the manually-added one. user_settings = user_services.get_user_settings(self.owner_id) self.assertEqual( user_settings.profile_picture_data_url, 'manually_added_data_url') job_id = ( user_jobs_one_off.UserProfilePictureOneOffJob.create_new()) user_jobs_one_off.UserProfilePictureOneOffJob.enqueue(job_id) def _mock_fetch_gravatar(unused_email): return self.FETCHED_GRAVATAR with self.swap(user_services, 'fetch_gravatar', _mock_fetch_gravatar): self.process_and_flush_pending_tasks() # After the job runs, the data URL is still the manually-added one. new_user_settings = user_services.get_user_settings(self.owner_id) self.assertEqual( new_user_settings.profile_picture_data_url, 'manually_added_data_url')
def setUp(self): """Populate the database of explorations and their summaries. The sequence of events is: - (1) Albert creates EXP_ID_1. - (2) Bob edits the title of EXP_ID_1. - (3) Albert creates EXP_ID_2. - (4) Albert edits the title of EXP_ID_1. - (5) Albert edits the title of EXP_ID_2. - (6) Bob reverts Albert's last edit to EXP_ID_1. - Bob tries to publish EXP_ID_2, and is denied access. - (7) Albert publishes EXP_ID_2. - (8) Albert creates EXP_ID_3 - (9) Albert publishes EXP_ID_3 - (10) Albert deletes EXP_ID_3 - (1) User_3 (has a profile_picture) creates EXP_ID_4. - (2) User_4 edits the title of EXP_ID_4. - (3) User_4 edits the title of EXP_ID_4. """ super(ExplorationDisplayableSummariesTest, self).setUp() self.signup(self.ALBERT_EMAIL, self.ALBERT_NAME) self.signup(self.BOB_EMAIL, self.BOB_NAME) self.albert_id = self.get_user_id_from_email(self.ALBERT_EMAIL) self.bob_id = self.get_user_id_from_email(self.BOB_EMAIL) self.albert = user_services.get_user_actions_info(self.albert_id) self.bob = user_services.get_user_actions_info(self.bob_id) self.save_new_valid_exploration(self.EXP_ID_1, self.albert_id) exp_services.update_exploration( self.bob_id, self.EXP_ID_1, [exp_domain.ExplorationChange({ 'cmd': 'edit_exploration_property', 'property_name': 'title', 'new_value': 'Exploration 1 title' })], 'Changed title.') self.save_new_valid_exploration(self.EXP_ID_2, self.albert_id) exp_services.update_exploration( self.albert_id, self.EXP_ID_1, [exp_domain.ExplorationChange({ 'cmd': 'edit_exploration_property', 'property_name': 'title', 'new_value': 'Exploration 1 Albert title' })], 'Changed title to Albert1 title.') exp_services.update_exploration( self.albert_id, self.EXP_ID_2, [exp_domain.ExplorationChange({ 'cmd': 'edit_exploration_property', 'property_name': 'title', 'new_value': 'Exploration 2 Albert title' })], 'Changed title to Albert2 title.') exp_services.revert_exploration(self.bob_id, self.EXP_ID_1, 3, 2) with self.assertRaisesRegex( Exception, 'This exploration cannot be published' ): rights_manager.publish_exploration(self.bob, self.EXP_ID_2) rights_manager.publish_exploration(self.albert, self.EXP_ID_2) self.save_new_valid_exploration(self.EXP_ID_3, self.albert_id) rights_manager.publish_exploration(self.albert, self.EXP_ID_3) exp_services.delete_exploration(self.albert_id, self.EXP_ID_3) self.signup(self.USER_C_EMAIL, self.USER_C_NAME) self.signup(self.USER_D_EMAIL, self.USER_D_NAME) self.user_c_id = self.get_user_id_from_email(self.USER_C_EMAIL) self.user_d_id = self.get_user_id_from_email(self.USER_D_EMAIL) user_services.update_profile_picture_data_url( self.user_c_id, self.USER_C_PROFILE_PICTURE) self.save_new_valid_exploration(self.EXP_ID_4, self.user_c_id) exp_services.update_exploration( self.user_d_id, self.EXP_ID_4, [exp_domain.ExplorationChange({ 'cmd': 'edit_exploration_property', 'property_name': 'title', 'new_value': 'Exploration updated title' })], 'Changed title once.') exp_services.update_exploration( self.user_d_id, self.EXP_ID_4, [exp_domain.ExplorationChange({ 'cmd': 'edit_exploration_property', 'property_name': 'title', 'new_value': 'Exploration updated title again' })], 'Changed title twice.') self.save_new_valid_exploration(self.EXP_ID_5, self.bob_id)
def setUp(self): """Populate the database of explorations and their summaries. The sequence of events is: - (1) Albert creates EXP_ID_1. - (2) Bob edits the title of EXP_ID_1. - (3) Albert creates EXP_ID_2. - (4) Albert edits the title of EXP_ID_1. - (5) Albert edits the title of EXP_ID_2. - (6) Bob reverts Albert's last edit to EXP_ID_1. - Bob tries to publish EXP_ID_2, and is denied access. - (7) Albert publishes EXP_ID_2. - (8) Albert creates EXP_ID_3 - (9) Albert publishes EXP_ID_3 - (10) Albert deletes EXP_ID_3 - (1) User_3 (has a profile_picture) creates EXP_ID_4. - (2) User_4 edits the title of EXP_ID_4. - (3) User_4 edits the title of EXP_ID_4. """ super(ExplorationDisplayableSummariesTest, self).setUp() self.albert_id = self.get_user_id_from_email(self.ALBERT_EMAIL) self.bob_id = self.get_user_id_from_email(self.BOB_EMAIL) self.signup(self.ALBERT_EMAIL, self.ALBERT_NAME) self.signup(self.BOB_EMAIL, self.BOB_NAME) self.save_new_valid_exploration(self.EXP_ID_1, self.albert_id) exp_services.update_exploration( self.bob_id, self.EXP_ID_1, [{ 'cmd': 'edit_exploration_property', 'property_name': 'title', 'new_value': 'Exploration 1 title' }], 'Changed title.') self.save_new_valid_exploration(self.EXP_ID_2, self.albert_id) exp_services.update_exploration( self.albert_id, self.EXP_ID_1, [{ 'cmd': 'edit_exploration_property', 'property_name': 'title', 'new_value': 'Exploration 1 Albert title' }], 'Changed title to Albert1 title.') exp_services.update_exploration( self.albert_id, self.EXP_ID_2, [{ 'cmd': 'edit_exploration_property', 'property_name': 'title', 'new_value': 'Exploration 2 Albert title' }], 'Changed title to Albert2 title.') exp_services.revert_exploration(self.bob_id, self.EXP_ID_1, 3, 2) with self.assertRaisesRegexp( Exception, 'This exploration cannot be published' ): rights_manager.publish_exploration(self.bob_id, self.EXP_ID_2) rights_manager.publish_exploration(self.albert_id, self.EXP_ID_2) self.save_new_valid_exploration(self.EXP_ID_3, self.albert_id) rights_manager.publish_exploration(self.albert_id, self.EXP_ID_3) exp_services.delete_exploration(self.albert_id, self.EXP_ID_3) self.user_c_id = self.get_user_id_from_email(self.USER_C_EMAIL) self.user_d_id = self.get_user_id_from_email(self.USER_D_EMAIL) self.signup(self.USER_C_EMAIL, self.USER_C_NAME) self.signup(self.USER_D_EMAIL, self.USER_D_NAME) user_services.update_profile_picture_data_url( self.user_c_id, self.USER_C_PROFILE_PICTURE) self.save_new_valid_exploration(self.EXP_ID_4, self.user_c_id) exp_services.update_exploration( self.user_d_id, self.EXP_ID_4, [{ 'cmd': 'edit_exploration_property', 'property_name': 'title', 'new_value': 'Exploration updated title' }], 'Changed title once.') exp_services.update_exploration( self.user_d_id, self.EXP_ID_4, [{ 'cmd': 'edit_exploration_property', 'property_name': 'title', 'new_value': 'Exploration updated title again' }], 'Changed title twice.') self.save_new_valid_exploration(self.EXP_ID_5, self.bob_id)