def get(self): """Handles GET requests for group pages.""" # TODO(sll): Support index pages for other language codes. group_name = self.normalized_request.get('group_name') activity_list = [] header_i18n_id = '' if group_name == feconf.LIBRARY_GROUP_RECENTLY_PUBLISHED: recently_published_summary_dicts = ( summary_services.get_recently_published_exp_summary_dicts( feconf.RECENTLY_PUBLISHED_QUERY_LIMIT_FULL_PAGE)) if recently_published_summary_dicts: activity_list = recently_published_summary_dicts header_i18n_id = feconf.LIBRARY_CATEGORY_RECENTLY_PUBLISHED elif group_name == feconf.LIBRARY_GROUP_TOP_RATED: top_rated_activity_summary_dicts = ( summary_services.get_top_rated_exploration_summary_dicts( [constants.DEFAULT_LANGUAGE_CODE], feconf.NUMBER_OF_TOP_RATED_EXPLORATIONS_FULL_PAGE)) if top_rated_activity_summary_dicts: activity_list = top_rated_activity_summary_dicts header_i18n_id = feconf.LIBRARY_CATEGORY_TOP_RATED_EXPLORATIONS preferred_language_codes = [constants.DEFAULT_LANGUAGE_CODE] if self.user_id: user_settings = user_services.get_user_settings(self.user_id) preferred_language_codes = user_settings.preferred_language_codes self.values.update({ 'activity_list': activity_list, 'header_i18n_id': header_i18n_id, 'preferred_language_codes': preferred_language_codes, }) self.render_json(self.values)
def test_at_most_eight_top_rated_explorations(self): """Note that at most 8 explorations should be returned. """ rating_services.assign_rating_to_exploration( self.bob_id, self.EXP_ID_2, 5) rating_services.assign_rating_to_exploration( self.alice_id, self.EXP_ID_3, 5) rating_services.assign_rating_to_exploration( self.bob_id, self.EXP_ID_3, 4) rating_services.assign_rating_to_exploration( self.bob_id, self.EXP_ID_4, 4) rating_services.assign_rating_to_exploration( self.alice_id, self.EXP_ID_5, 4) rating_services.assign_rating_to_exploration( self.bob_id, self.EXP_ID_5, 3) rating_services.assign_rating_to_exploration( self.bob_id, self.EXP_ID_6, 3) rating_services.assign_rating_to_exploration( self.alice_id, self.EXP_ID_6, 2) rating_services.assign_rating_to_exploration( self.bob_id, self.EXP_ID_8, 2) rating_services.assign_rating_to_exploration( self.alice_id, self.EXP_ID_8, 2) rating_services.assign_rating_to_exploration( self.bob_id, self.EXP_ID_7, 2) rating_services.assign_rating_to_exploration( self.bob_id, self.EXP_ID_9, 2) rating_services.assign_rating_to_exploration( self.bob_id, self.EXP_ID_1, 1) top_rated_exploration_summaries = ( summary_services.get_top_rated_exploration_summary_dicts([ feconf.DEFAULT_LANGUAGE_CODE])) expected_summary = { 'status': u'public', 'thumbnail_bg_color': '#a33f40', 'community_owned': False, 'tags': [], 'thumbnail_icon_url': self.get_static_asset_url( '/images/subjects/Lightbulb.svg'), 'language_code': feconf.DEFAULT_LANGUAGE_CODE, 'id': self.EXP_ID_3, 'category': u'A category', 'ratings': {u'1': 0, u'3': 0, u'2': 0, u'5': 1, u'4': 1}, 'title': u'A title', 'num_views': 0, 'objective': u'An objective' } self.assertDictContainsSubset( expected_summary, top_rated_exploration_summaries[0]) expected_ordering = [ self.EXP_ID_3, self.EXP_ID_2, self.EXP_ID_5, self.EXP_ID_4, self.EXP_ID_6, self.EXP_ID_8, self.EXP_ID_7, self.EXP_ID_9] actual_ordering = [exploration['id'] for exploration in top_rated_exploration_summaries] self.assertEqual(expected_ordering, actual_ordering)
def test_only_explorations_with_ratings_are_returned(self): """Note that only explorations with ratings will be included.""" rating_services.assign_rating_to_exploration( self.bob_id, self.EXP_ID_2, 5) top_rated_exploration_summaries = ( summary_services.get_top_rated_exploration_summary_dicts( [constants.DEFAULT_LANGUAGE_CODE], feconf.NUMBER_OF_TOP_RATED_EXPLORATIONS_FOR_LIBRARY_PAGE)) expected_summary = { 'status': u'public', 'thumbnail_bg_color': '#a33f40', 'community_owned': False, 'tags': [], 'thumbnail_icon_url': '/subjects/Lightbulb.svg', 'language_code': constants.DEFAULT_LANGUAGE_CODE, 'id': self.EXP_ID_2, 'category': u'A category', 'ratings': {u'1': 0, u'3': 0, u'2': 0, u'5': 1, u'4': 0}, 'title': u'A title', 'num_views': 0, 'objective': u'An objective' } self.assertDictContainsSubset( expected_summary, top_rated_exploration_summaries[0]) expected_ordering = [self.EXP_ID_2] actual_ordering = [exploration['id'] for exploration in top_rated_exploration_summaries] self.assertEqual(expected_ordering, actual_ordering)
def test_only_explorations_with_ratings_are_returned(self): """Note that only explorations with ratings will be included """ rating_services.assign_rating_to_exploration( self.bob_id, self.EXP_ID_2, 5) top_rated_exploration_summaries = ( summary_services.get_top_rated_exploration_summary_dicts( [feconf.DEFAULT_LANGUAGE_CODE], feconf.NUMBER_OF_TOP_RATED_EXPLORATIONS_FOR_LIBRARY_PAGE)) expected_summary = { 'status': u'public', 'thumbnail_bg_color': '#a33f40', 'community_owned': False, 'tags': [], 'thumbnail_icon_url': self.get_static_asset_url( '/images/subjects/Lightbulb.svg'), 'language_code': feconf.DEFAULT_LANGUAGE_CODE, 'id': self.EXP_ID_2, 'category': u'A category', 'ratings': {u'1': 0, u'3': 0, u'2': 0, u'5': 1, u'4': 0}, 'title': u'A title', 'num_views': 0, 'objective': u'An objective' } self.assertDictContainsSubset( expected_summary, top_rated_exploration_summaries[0]) expected_ordering = [self.EXP_ID_2] actual_ordering = [exploration['id'] for exploration in top_rated_exploration_summaries] self.assertEqual(expected_ordering, actual_ordering)
def test_at_most_eight_top_rated_explorations(self): """Note that at most 8 explorations should be returned.""" rating_services.assign_rating_to_exploration( self.bob_id, self.EXP_ID_2, 5) rating_services.assign_rating_to_exploration( self.alice_id, self.EXP_ID_3, 5) rating_services.assign_rating_to_exploration( self.bob_id, self.EXP_ID_3, 4) rating_services.assign_rating_to_exploration( self.bob_id, self.EXP_ID_4, 4) rating_services.assign_rating_to_exploration( self.alice_id, self.EXP_ID_5, 4) rating_services.assign_rating_to_exploration( self.bob_id, self.EXP_ID_5, 3) rating_services.assign_rating_to_exploration( self.bob_id, self.EXP_ID_6, 3) rating_services.assign_rating_to_exploration( self.alice_id, self.EXP_ID_6, 2) rating_services.assign_rating_to_exploration( self.bob_id, self.EXP_ID_8, 2) rating_services.assign_rating_to_exploration( self.alice_id, self.EXP_ID_8, 2) rating_services.assign_rating_to_exploration( self.bob_id, self.EXP_ID_7, 2) rating_services.assign_rating_to_exploration( self.bob_id, self.EXP_ID_9, 2) rating_services.assign_rating_to_exploration( self.bob_id, self.EXP_ID_1, 1) top_rated_exploration_summaries = ( summary_services.get_top_rated_exploration_summary_dicts( [constants.DEFAULT_LANGUAGE_CODE], feconf.NUMBER_OF_TOP_RATED_EXPLORATIONS_FOR_LIBRARY_PAGE)) expected_summary = { 'status': u'public', 'thumbnail_bg_color': '#a33f40', 'community_owned': False, 'tags': [], 'language_code': constants.DEFAULT_LANGUAGE_CODE, 'thumbnail_icon_url': '/subjects/Lightbulb.svg', 'id': self.EXP_ID_3, 'category': u'A category', 'ratings': {u'1': 0, u'3': 0, u'2': 0, u'5': 1, u'4': 1}, 'title': u'A title', 'num_views': 0, 'objective': u'An objective' } self.assertDictContainsSubset( expected_summary, top_rated_exploration_summaries[0]) expected_ordering = [ self.EXP_ID_3, self.EXP_ID_2, self.EXP_ID_5, self.EXP_ID_4, self.EXP_ID_6, self.EXP_ID_8, self.EXP_ID_7, self.EXP_ID_9] actual_ordering = [exploration['id'] for exploration in top_rated_exploration_summaries] self.assertEqual(expected_ordering, actual_ordering)
def get(self): """Handles GET requests.""" # TODO(sll): Support index pages for other language codes. summary_dicts_by_category = summary_services.get_library_groups([ feconf.DEFAULT_LANGUAGE_CODE]) recently_published_summary_dicts = ( summary_services.get_recently_published_exp_summary_dicts( feconf.RECENTLY_PUBLISHED_QUERY_LIMIT_FOR_LIBRARY_PAGE)) top_rated_activity_summary_dicts = ( summary_services.get_top_rated_exploration_summary_dicts( [feconf.DEFAULT_LANGUAGE_CODE], feconf.NUMBER_OF_TOP_RATED_EXPLORATIONS_FOR_LIBRARY_PAGE)) featured_activity_summary_dicts = ( summary_services.get_featured_activity_summary_dicts( [feconf.DEFAULT_LANGUAGE_CODE])) preferred_language_codes = [feconf.DEFAULT_LANGUAGE_CODE] if self.user_id: user_settings = user_services.get_user_settings(self.user_id) preferred_language_codes = user_settings.preferred_language_codes if recently_published_summary_dicts: summary_dicts_by_category.insert(0, { 'activity_summary_dicts': recently_published_summary_dicts, 'categories': [], 'header_i18n_id': feconf.LIBRARY_CATEGORY_RECENTLY_PUBLISHED, 'has_full_results_page': True, 'full_results_url': feconf.LIBRARY_RECENTLY_PUBLISHED_URL, 'protractor_id': 'recently-published', }) if top_rated_activity_summary_dicts: summary_dicts_by_category.insert(0, { 'activity_summary_dicts': top_rated_activity_summary_dicts, 'categories': [], 'header_i18n_id': ( feconf.LIBRARY_CATEGORY_TOP_RATED_EXPLORATIONS), 'has_full_results_page': True, 'full_results_url': feconf.LIBRARY_TOP_RATED_URL, 'protractor_id': 'top-rated', }) if featured_activity_summary_dicts: summary_dicts_by_category.insert(0, { 'activity_summary_dicts': featured_activity_summary_dicts, 'categories': [], 'header_i18n_id': feconf.LIBRARY_CATEGORY_FEATURED_ACTIVITIES, 'has_full_results_page': False, 'full_results_url': None, }) self.values.update({ 'activity_summary_dicts_by_category': ( summary_dicts_by_category), 'preferred_language_codes': preferred_language_codes, }) self.render_json(self.values)
def get(self): """Handles GET requests for group pages.""" # TODO(sll): Support index pages for other language codes. group_name = self.request.get('group_name') activity_list = [] header_i18n_id = '' if group_name == feconf.LIBRARY_GROUP_RECENTLY_PUBLISHED: recently_published_summary_dicts = ( summary_services.get_recently_published_exp_summary_dicts( feconf.RECENTLY_PUBLISHED_QUERY_LIMIT_FULL_PAGE)) if recently_published_summary_dicts: activity_list = recently_published_summary_dicts header_i18n_id = feconf.LIBRARY_CATEGORY_RECENTLY_PUBLISHED elif group_name == feconf.LIBRARY_GROUP_TOP_RATED: top_rated_activity_summary_dicts = ( summary_services.get_top_rated_exploration_summary_dicts( [feconf.DEFAULT_LANGUAGE_CODE], feconf.NUMBER_OF_TOP_RATED_EXPLORATIONS_FULL_PAGE)) if top_rated_activity_summary_dicts: activity_list = top_rated_activity_summary_dicts header_i18n_id = feconf.LIBRARY_CATEGORY_TOP_RATED_EXPLORATIONS # TODO: create a Splash controller and implement this properly. elif group_name == feconf.LIBRARY_CATEGORY_SPLASH_PAGE_FEATURED: splash_page_featured_exploration_ids = [ '0', 'yvqBFOQNDz5e', 'BvpDpLSmO2Iu', 'gC4_ggkWar-L' ] activity_list = (summary_services. get_displayable_exp_summary_dicts_matching_ids( splash_page_featured_exploration_ids)) else: return self.PageNotFoundException preferred_language_codes = [feconf.DEFAULT_LANGUAGE_CODE] if self.user_id: user_settings = user_services.get_user_settings(self.user_id) preferred_language_codes = user_settings.preferred_language_codes self.values.update({ 'activity_list': activity_list, 'header_i18n_id': header_i18n_id, 'preferred_language_codes': preferred_language_codes, }) self.render_json(self.values)
def get(self): """Handles GET requests.""" # TODO(sll): Support index pages for other language codes. summary_dicts_by_category = summary_services.get_library_groups( [feconf.DEFAULT_LANGUAGE_CODE]) recently_published_summary_dicts = ( summary_services.get_recently_published_exploration_summary_dicts( )) top_rated_activity_summary_dicts = ( summary_services.get_top_rated_exploration_summary_dicts( [feconf.DEFAULT_LANGUAGE_CODE])) featured_activity_summary_dicts = ( summary_services.get_featured_activity_summary_dicts( [feconf.DEFAULT_LANGUAGE_CODE])) preferred_language_codes = [feconf.DEFAULT_LANGUAGE_CODE] if self.user_id: user_settings = user_services.get_user_settings(self.user_id) preferred_language_codes = user_settings.preferred_language_codes if recently_published_summary_dicts: summary_dicts_by_category.insert( 0, { 'activity_summary_dicts': recently_published_summary_dicts, 'categories': [], 'header': feconf.LIBRARY_CATEGORY_RECENTLY_PUBLISHED, }) if top_rated_activity_summary_dicts: summary_dicts_by_category.insert( 0, { 'activity_summary_dicts': top_rated_activity_summary_dicts, 'categories': [], 'header': feconf.LIBRARY_CATEGORY_TOP_RATED_EXPLORATIONS, }) if featured_activity_summary_dicts: summary_dicts_by_category.insert( 0, { 'activity_summary_dicts': featured_activity_summary_dicts, 'categories': [], 'header': feconf.LIBRARY_CATEGORY_FEATURED_ACTIVITIES, }) self.values.update({ 'activity_summary_dicts_by_category': (summary_dicts_by_category), 'preferred_language_codes': preferred_language_codes, }) self.render_json(self.values)
def get(self): """Handles GET requests for group pages.""" # TODO(sll): Support index pages for other language codes. group_name = self.request.get('group_name') activity_list = [] header_i18n_id = '' if group_name == feconf.LIBRARY_GROUP_RECENTLY_PUBLISHED: recently_published_summary_dicts = ( summary_services.get_recently_published_exp_summary_dicts( feconf.RECENTLY_PUBLISHED_QUERY_LIMIT_FULL_PAGE)) if recently_published_summary_dicts: activity_list = recently_published_summary_dicts header_i18n_id = feconf.LIBRARY_CATEGORY_RECENTLY_PUBLISHED elif group_name == feconf.LIBRARY_GROUP_TOP_RATED: top_rated_activity_summary_dicts = ( summary_services.get_top_rated_exploration_summary_dicts( [feconf.DEFAULT_LANGUAGE_CODE], feconf.NUMBER_OF_TOP_RATED_EXPLORATIONS_FULL_PAGE)) if top_rated_activity_summary_dicts: activity_list = top_rated_activity_summary_dicts header_i18n_id = feconf.LIBRARY_CATEGORY_TOP_RATED_EXPLORATIONS # TODO: create a Splash controller and implement this properly. elif group_name == feconf.LIBRARY_CATEGORY_SPLASH_PAGE_FEATURED: splash_page_featured_exploration_ids = [ '0', 'yvqBFOQNDz5e', 'BvpDpLSmO2Iu', 'gC4_ggkWar-L'] activity_list = ( summary_services.get_displayable_exp_summary_dicts_matching_ids( splash_page_featured_exploration_ids)) else: return self.PageNotFoundException preferred_language_codes = [feconf.DEFAULT_LANGUAGE_CODE] if self.user_id: user_settings = user_services.get_user_settings(self.user_id) preferred_language_codes = user_settings.preferred_language_codes self.values.update({ 'activity_list': activity_list, 'header_i18n_id': header_i18n_id, 'preferred_language_codes': preferred_language_codes, }) self.render_json(self.values)
def get(self): """Handles GET requests.""" # TODO(sll): Support index pages for other language codes. summary_dicts_by_category = summary_services.get_library_groups([ feconf.DEFAULT_LANGUAGE_CODE]) recently_published_summary_dicts = ( summary_services.get_recently_published_exploration_summary_dicts()) top_rated_activity_summary_dicts = ( summary_services.get_top_rated_exploration_summary_dicts( [feconf.DEFAULT_LANGUAGE_CODE])) featured_activity_summary_dicts = ( summary_services.get_featured_activity_summary_dicts( [feconf.DEFAULT_LANGUAGE_CODE])) preferred_language_codes = [feconf.DEFAULT_LANGUAGE_CODE] if self.user_id: user_settings = user_services.get_user_settings(self.user_id) preferred_language_codes = user_settings.preferred_language_codes if recently_published_summary_dicts: summary_dicts_by_category.insert(0, { 'activity_summary_dicts': recently_published_summary_dicts, 'categories': [], 'header': feconf.LIBRARY_CATEGORY_RECENTLY_PUBLISHED, }) if top_rated_activity_summary_dicts: summary_dicts_by_category.insert(0, { 'activity_summary_dicts': top_rated_activity_summary_dicts, 'categories': [], 'header': feconf.LIBRARY_CATEGORY_TOP_RATED_EXPLORATIONS, }) if featured_activity_summary_dicts: summary_dicts_by_category.insert(0, { 'activity_summary_dicts': featured_activity_summary_dicts, 'categories': [], 'header': feconf.LIBRARY_CATEGORY_FEATURED_ACTIVITIES, }) self.values.update({ 'activity_summary_dicts_by_category': ( summary_dicts_by_category), 'preferred_language_codes': preferred_language_codes, }) self.render_json(self.values)
def get(self): """Handles GET requests for group pages.""" # TODO(sll): Support index pages for other language codes. group_name = self.request.get('group_name') activity_list = [] header_i18n_id = '' if group_name == feconf.LIBRARY_GROUP_RECENTLY_PUBLISHED: recently_published_summary_dicts = ( summary_services.get_recently_published_exp_summary_dicts( feconf.RECENTLY_PUBLISHED_QUERY_LIMIT_FULL_PAGE)) if recently_published_summary_dicts: activity_list = recently_published_summary_dicts header_i18n_id = feconf.LIBRARY_CATEGORY_RECENTLY_PUBLISHED elif group_name == feconf.LIBRARY_GROUP_TOP_RATED: top_rated_activity_summary_dicts = ( summary_services.get_top_rated_exploration_summary_dicts( [feconf.DEFAULT_LANGUAGE_CODE], feconf.NUMBER_OF_TOP_RATED_EXPLORATIONS_FULL_PAGE)) if top_rated_activity_summary_dicts: activity_list = top_rated_activity_summary_dicts header_i18n_id = feconf.LIBRARY_CATEGORY_TOP_RATED_EXPLORATIONS else: return self.PageNotFoundException preferred_language_codes = [feconf.DEFAULT_LANGUAGE_CODE] if self.user_id: user_settings = user_services.get_user_settings(self.user_id) preferred_language_codes = user_settings.preferred_language_codes self.values.update({ 'activity_list': activity_list, 'header_i18n_id': header_i18n_id, 'preferred_language_codes': preferred_language_codes, }) self.render_json(self.values)