def test_flush_migration_bot_contributions_action(self): created_exploration_ids = ['exp_1', 'exp_2'] edited_exploration_ids = ['exp_3', 'exp_4'] user_services.create_user_contributions(feconf.MIGRATION_BOT_USER_ID, created_exploration_ids, edited_exploration_ids) migration_bot_contributions_model = ( user_services.get_user_contributions(feconf.MIGRATION_BOT_USER_ID)) self.assertEqual( migration_bot_contributions_model.created_exploration_ids, created_exploration_ids) self.assertEqual( migration_bot_contributions_model.edited_exploration_ids, edited_exploration_ids) self.login(self.ADMIN_EMAIL, is_super_admin=True) csrf_token = self.get_new_csrf_token() self.post_json('/adminhandler', {'action': 'flush_migration_bot_contribution_data'}, csrf_token=csrf_token) migration_bot_contributions_model = ( user_services.get_user_contributions(feconf.MIGRATION_BOT_USER_ID)) self.assertEqual( migration_bot_contributions_model.created_exploration_ids, []) self.assertEqual( migration_bot_contributions_model.edited_exploration_ids, [])
def setUp(self): super(UserContributionsTests, self).setUp() self.signup(self.OWNER_EMAIL, self.OWNER_USERNAME) self.owner_id = self.get_user_id_from_email(self.OWNER_EMAIL) self.user_contributions = user_services.get_user_contributions( self.owner_id) self.user_contributions.validate()
def test_update_user_contributions(self): user_services.update_user_contributions(self.owner_id, ['e1'], ['e2']) contributions = user_services.get_user_contributions(self.owner_id) self.assertEqual(contributions.user_id, self.owner_id) self.assertEqual(contributions.created_exploration_ids, ['e1']) self.assertEqual(contributions.edited_exploration_ids, ['e2'])
def get(self, username): """Handles GET requests.""" if not username: raise self.PageNotFoundException user_settings = user_services.get_user_settings_from_username(username) if not user_settings: raise self.PageNotFoundException created_exp_summary_dicts = [] edited_exp_summary_dicts = [] subscriber_ids = subscription_services.get_all_subscribers_of_creator( user_settings.user_id) is_already_subscribed = (self.user_id in subscriber_ids) is_user_visiting_own_profile = (self.user_id == user_settings.user_id) user_contributions = user_services.get_user_contributions( user_settings.user_id) if user_contributions: created_exp_summary_dicts = ( summary_services. get_displayable_exp_summary_dicts_matching_ids( user_contributions.created_exploration_ids)) edited_exp_summary_dicts = ( summary_services. get_displayable_exp_summary_dicts_matching_ids( user_contributions.edited_exploration_ids)) profile_is_of_current_user = (self.username == username) self.values.update({ 'profile_is_of_current_user': profile_is_of_current_user, 'profile_username': user_settings.username, 'user_bio': user_settings.user_bio, 'subject_interests': user_settings.subject_interests, 'first_contribution_msec': (user_settings.first_contribution_msec if user_settings.first_contribution_msec else None), 'profile_picture_data_url': user_settings.profile_picture_data_url, 'user_impact_score': user_services.get_user_impact_score(user_settings.user_id), 'created_exp_summary_dicts': created_exp_summary_dicts, 'edited_exp_summary_dicts': edited_exp_summary_dicts, 'is_already_subscribed': is_already_subscribed, 'is_user_visiting_own_profile': is_user_visiting_own_profile }) self.render_json(self.values)
def map(item): user_contributions = user_services.get_user_contributions(item.id) user_is_creator = user_contributions and ( user_contributions.created_exploration_ids or user_contributions.edited_exploration_ids) if user_is_creator: user_services.update_user_default_dashboard( item.id, constants.DASHBOARD_TYPE_CREATOR) else: user_services.update_user_default_dashboard( item.id, constants.DASHBOARD_TYPE_LEARNER)
def get(self): if self.user_id and user_services.has_fully_registered(self.user_id): user_contributions = user_services.get_user_contributions( self.user_id) # 'Creator' is a user who has created or edited an exploration. user_is_creator = ( len(user_contributions.created_exploration_ids) > 0 or len(user_contributions.edited_exploration_ids) > 0) if user_is_creator: self.redirect(feconf.DASHBOARD_URL) else: self.redirect(feconf.LIBRARY_INDEX_URL) else: self.redirect(feconf.SPLASH_URL)
def get(self): if self.user_id and user_services.has_fully_registered(self.user_id): user_contributions = user_services.get_user_contributions( self.user_id) # 'Creator' is a user who has created or edited an exploration. user_is_creator = ( user_contributions is not None and (len(user_contributions.created_exploration_ids) > 0 or len(user_contributions.edited_exploration_ids) > 0)) if user_is_creator: self.redirect(feconf.DASHBOARD_URL) else: self.redirect(feconf.LIBRARY_INDEX_URL) else: self.redirect(feconf.SPLASH_URL)
def get(self, username): """Handles GET requests.""" if not username: raise self.PageNotFoundException user_settings = user_services.get_user_settings_from_username(username) if not user_settings: raise self.PageNotFoundException created_exp_summary_dicts = [] edited_exp_summary_dicts = [] subscriber_ids = subscription_services.get_all_subscribers_of_creator( user_settings.user_id) is_already_subscribed = (self.user_id in subscriber_ids) is_user_visiting_own_profile = (self.user_id == user_settings.user_id) user_contributions = user_services.get_user_contributions( user_settings.user_id) if user_contributions: created_exp_summary_dicts = ( summary_services.get_displayable_exp_summary_dicts_matching_ids( user_contributions.created_exploration_ids)) edited_exp_summary_dicts = ( summary_services.get_displayable_exp_summary_dicts_matching_ids( user_contributions.edited_exploration_ids)) profile_is_of_current_user = (self.username == username) self.values.update({ 'profile_is_of_current_user': profile_is_of_current_user, 'profile_username': user_settings.username, 'user_bio': user_settings.user_bio, 'subject_interests': user_settings.subject_interests, 'first_contribution_msec': ( user_settings.first_contribution_msec if user_settings.first_contribution_msec else None), 'profile_picture_data_url': user_settings.profile_picture_data_url, 'user_impact_score':user_services.get_user_impact_score( user_settings.user_id), 'created_exp_summary_dicts': created_exp_summary_dicts, 'edited_exp_summary_dicts': edited_exp_summary_dicts, 'is_already_subscribed': is_already_subscribed, 'is_user_visiting_own_profile': is_user_visiting_own_profile }) self.render_json(self.values)
def reduce(key, version_and_exp_ids): """Implements the reduce function for this job.""" created_exploration_ids = set() edited_exploration_ids = set() edits = [ast.literal_eval(v) for v in version_and_exp_ids] for edit in edits: edited_exploration_ids.add(edit['exploration_id']) if edit['version_string'] == '1': created_exploration_ids.add(edit['exploration_id']) if user_services.get_user_contributions(key, strict=False) is not None: user_services.update_user_contributions( key, list(created_exploration_ids), list(edited_exploration_ids)) else: user_services.create_user_contributions( key, list(created_exploration_ids), list(edited_exploration_ids))
def get(self, username): """Handles GET requests.""" if not username: raise self.PageNotFoundException user_settings = user_services.get_user_settings_from_username(username) if not user_settings: raise self.PageNotFoundException created_exploration_summary_dicts = [] edited_exploration_summary_dicts = [] user_contributions = user_services.get_user_contributions( user_settings.user_id) if user_contributions: created_exploration_summary_dicts = ( summary_services. get_displayable_exp_summary_dicts_matching_ids( user_contributions.created_exploration_ids)) edited_exploration_summary_dicts = ( summary_services. get_displayable_exp_summary_dicts_matching_ids( user_contributions.edited_exploration_ids)) self.values.update({ 'user_bio': user_settings.user_bio, 'subject_interests': user_settings.subject_interests, 'first_contribution_msec': (user_settings.first_contribution_msec if user_settings.first_contribution_msec else None), 'profile_picture_data_url': user_settings.profile_picture_data_url, 'user_impact_score': user_services.get_user_impact_score(user_settings.user_id), 'created_exploration_summary_dicts': (created_exploration_summary_dicts), 'edited_exploration_summary_dicts': (edited_exploration_summary_dicts) }) self.render_json(self.values)
def reduce(key, version_and_exp_ids): created_exploration_ids = set() edited_exploration_ids = set() edits = [ast.literal_eval(v) for v in version_and_exp_ids] for edit in edits: edited_exploration_ids.add(edit['exploration_id']) if edit['version_string'] == '1': created_exploration_ids.add(edit['exploration_id']) if user_services.get_user_contributions(key, strict=False) is not None: user_services.update_user_contributions( key, list(created_exploration_ids), list( edited_exploration_ids)) else: user_services.create_user_contributions( key, list(created_exploration_ids), list( edited_exploration_ids))
def get(self, username): """Handles GET requests.""" if not username: raise self.PageNotFoundException user_settings = user_services.get_user_settings_from_username(username) if not user_settings: raise self.PageNotFoundException created_exploration_summary_dicts = [] edited_exploration_summary_dicts = [] user_contributions = user_services.get_user_contributions( user_settings.user_id) if user_contributions: created_exploration_summary_dicts = ( exp_services.get_displayable_exp_summary_dicts_matching_ids( user_contributions.created_exploration_ids, user_settings.user_id)) edited_exploration_summary_dicts = ( exp_services.get_displayable_exp_summary_dicts_matching_ids( user_contributions.edited_exploration_ids, user_settings.user_id)) self.values.update({ 'user_bio': user_settings.user_bio, 'subject_interests': user_settings.subject_interests, 'first_contribution_msec': ( user_settings.first_contribution_msec if user_settings.first_contribution_msec else None), 'profile_picture_data_url': user_settings.profile_picture_data_url, 'user_impact_score':user_services.get_user_impact_score( user_settings.user_id), 'created_exploration_summary_dicts': ( created_exploration_summary_dicts), 'edited_exploration_summary_dicts': ( edited_exploration_summary_dicts) }) self.render_json(self.values)