def get(self): """Handles GET requests.""" # TODO(sll): Figure out what to do about explorations in categories # other than those explicitly listed. query_string = self.request.get('q') search_cursor = self.request.get('cursor', None) exp_summaries_list, search_cursor = ( exp_services.get_exploration_summaries_matching_query( query_string, cursor=search_cursor)) # TODO(msl): Store 'is_editable' in exploration summary to avoid O(n) # individual lookups. Note that this will depend on user_id. explorations_list = [{ 'id': exp_summary.id, 'title': exp_summary.title, 'category': exp_summary.category, 'objective': exp_summary.objective, 'language_code': exp_summary.language_code, 'last_updated': utils.get_time_in_millisecs( exp_summary.exploration_model_last_updated), 'status': exp_summary.status, 'community_owned': exp_summary.community_owned, 'thumbnail_image_url': exp_summary.thumbnail_image_url, 'is_editable': exp_services.is_exp_summary_editable( exp_summary, user_id=self.user_id), 'ratings': exp_summary.ratings } for exp_summary in exp_summaries_list] if len(explorations_list) == feconf.DEFAULT_QUERY_LIMIT: logging.error( '%s explorations were fetched to load the gallery page. ' 'You may be running up against the default query limits.' % feconf.DEFAULT_QUERY_LIMIT) 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({ 'explorations_list': explorations_list, 'preferred_language_codes': preferred_language_codes, 'search_cursor': search_cursor, }) self.render_json(self.values)
def get(self): """Handles GET requests.""" # TODO(sll): Figure out what to do about explorations in categories # other than those explicitly listed. language_codes_to_short_descs = { lc['code']: utils.get_short_language_description(lc['description']) for lc in feconf.ALL_LANGUAGE_CODES } query_string = self.request.get('q') search_cursor = self.request.get('cursor', None) exp_summaries_list, search_cursor = ( exp_services.get_exploration_summaries_matching_query( query_string, cursor=search_cursor)) def _get_intro_card_color(category): return ( feconf.CATEGORIES_TO_COLORS[category] if category in feconf.CATEGORIES_TO_COLORS else feconf.DEFAULT_COLOR) # TODO(msl): Store 'is_editable' in exploration summary to avoid O(n) # individual lookups. Note that this will depend on user_id. explorations_list = [{ 'id': exp_summary.id, 'title': exp_summary.title, 'category': exp_summary.category, 'objective': exp_summary.objective, 'language_code': exp_summary.language_code, 'last_updated': utils.get_time_in_millisecs( exp_summary.exploration_model_last_updated), 'status': exp_summary.status, 'community_owned': exp_summary.community_owned, 'thumbnail_image_url': ( '/images/gallery/exploration_background_%s_small.png' % _get_intro_card_color(exp_summary.category)), 'is_editable': exp_services.is_exp_summary_editable( exp_summary, user_id=self.user_id) } for exp_summary in exp_summaries_list] if len(explorations_list) == feconf.DEFAULT_QUERY_LIMIT: logging.error( '%s explorations were fetched to load the gallery page. ' 'You may be running up against the default query limits.' % feconf.DEFAULT_QUERY_LIMIT) 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({ 'explorations_list': explorations_list, 'preferred_language_codes': preferred_language_codes, 'search_cursor': search_cursor, }) self.render_json(self.values)
def get(self): """Handles GET requests.""" # TODO(sll): Figure out what to do about explorations in categories # other than those explicitly listed. query_string = self.request.get('q') search_cursor = self.request.get('cursor', None) exp_summaries_list, search_cursor = ( exp_services.get_exploration_summaries_matching_query( query_string, cursor=search_cursor)) # TODO(msl): Store 'is_editable' in exploration summary to avoid O(n) # individual lookups. Note that this will depend on user_id. explorations_list = [{ 'id': exp_summary.id, 'title': exp_summary.title, 'category': exp_summary.category, 'objective': exp_summary.objective, 'language_code': exp_summary.language_code, 'last_updated': utils.get_time_in_millisecs( exp_summary.exploration_model_last_updated), 'status': exp_summary.status, 'community_owned': exp_summary.community_owned, 'thumbnail_image_url': exp_summary.thumbnail_image_url, 'is_editable': exp_services.is_exp_summary_editable(exp_summary, user_id=self.user_id), 'ratings': exp_summary.ratings } for exp_summary in exp_summaries_list] if len(explorations_list) == feconf.DEFAULT_QUERY_LIMIT: logging.error( '%s explorations were fetched to load the gallery page. ' 'You may be running up against the default query limits.' % feconf.DEFAULT_QUERY_LIMIT) 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({ 'explorations_list': explorations_list, 'preferred_language_codes': preferred_language_codes, 'search_cursor': search_cursor, }) self.render_json(self.values)
def get(self): """Handles GET requests.""" # TODO(sll): Figure out what to do about explorations in categories # other than those explicitly listed. language_codes_to_short_descs = { lc['code']: utils.get_short_language_description(lc['description']) for lc in feconf.ALL_LANGUAGE_CODES } query_string = self.request.get('q') search_cursor = self.request.get('cursor', None) exp_summaries_list, search_cursor = ( exp_services.get_exploration_summaries_matching_query( query_string, cursor=search_cursor)) def _get_intro_card_color(category): return (feconf.CATEGORIES_TO_COLORS[category] if category in feconf.CATEGORIES_TO_COLORS else feconf.DEFAULT_COLOR) # TODO(msl): Store 'is_editable' in exploration summary to avoid O(n) # individual lookups. Note that this will depend on user_id. explorations_list = [{ 'id': exp_summary.id, 'title': exp_summary.title, 'category': exp_summary.category, 'objective': exp_summary.objective, 'language_code': exp_summary.language_code, 'last_updated': utils.get_time_in_millisecs( exp_summary.exploration_model_last_updated), 'status': exp_summary.status, 'community_owned': exp_summary.community_owned, 'thumbnail_image_url': ('/images/gallery/exploration_background_%s_small.png' % _get_intro_card_color(exp_summary.category)), 'is_editable': exp_services.is_exp_summary_editable(exp_summary, user_id=self.user_id) } for exp_summary in exp_summaries_list] if len(explorations_list) == feconf.DEFAULT_QUERY_LIMIT: logging.error( '%s explorations were fetched to load the gallery page. ' 'You may be running up against the default query limits.' % feconf.DEFAULT_QUERY_LIMIT) 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({ 'explorations_list': explorations_list, 'preferred_language_codes': preferred_language_codes, 'search_cursor': search_cursor, }) self.render_json(self.values)