def test_get_activity_ids_subscribed_to(self): USER_ID = 'user_id' self.assertEqual( subscription_services.get_activity_ids_subscribed_to(USER_ID), []) ACTIVITY_ID = 'activity_id' subscription_services.subscribe_to_activity(USER_ID, ACTIVITY_ID) self.assertEqual( subscription_services.get_activity_ids_subscribed_to(USER_ID), [ACTIVITY_ID]) ACTIVITY_2_ID = 'activity_id_2' subscription_services.subscribe_to_activity(USER_ID, ACTIVITY_2_ID) self.assertEqual( subscription_services.get_activity_ids_subscribed_to(USER_ID), [ACTIVITY_ID, ACTIVITY_2_ID])
def get(self): """Handles GET requests.""" if self.user_id is None: raise self.PageNotFoundException subscribed_summaries = ( exp_services.get_exploration_summaries_matching_ids( subscription_services.get_activity_ids_subscribed_to( self.user_id))) def _get_intro_card_color(category): return ( feconf.CATEGORIES_TO_COLORS[category] if category in feconf.CATEGORIES_TO_COLORS else feconf.DEFAULT_COLOR) explorations_list = [] for exp_summary in subscribed_summaries: if exp_summary is None: continue feedback_thread_analytics = feedback_services.get_thread_analytics( exp_summary.id) explorations_list.append({ '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), 'created_on': utils.get_time_in_millisecs( exp_summary.exploration_model_created_on), 'status': exp_summary.status, 'community_owned': exp_summary.community_owned, 'is_editable': True, 'thumbnail_image_url': ( '/images/gallery/exploration_background_%s_small.png' % _get_intro_card_color(exp_summary.category)), 'ratings': exp_summary.ratings, 'num_open_threads': ( feedback_thread_analytics['num_open_threads']), 'num_total_threads': ( feedback_thread_analytics['num_total_threads']), }) explorations_list = sorted( explorations_list, key=lambda x: (x['num_open_threads'], x['last_updated']), reverse=True) self.values.update({ 'explorations_list': explorations_list, }) self.render_json(self.values)
def get(self): """Handles GET requests.""" if self.user_id is None: raise self.PageNotFoundException subscribed_summaries = exp_services.get_exploration_summaries_matching_ids( subscription_services.get_activity_ids_subscribed_to(self.user_id) ) def _get_intro_card_color(category): return ( feconf.CATEGORIES_TO_COLORS[category] if category in feconf.CATEGORIES_TO_COLORS else feconf.DEFAULT_COLOR ) explorations_list = [] for exp_summary in subscribed_summaries: if exp_summary is None: continue feedback_thread_analytics = feedback_services.get_thread_analytics(exp_summary.id) explorations_list.append( { "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), "created_on": utils.get_time_in_millisecs(exp_summary.exploration_model_created_on), "status": exp_summary.status, "community_owned": exp_summary.community_owned, "is_editable": True, "thumbnail_image_url": ( "/images/gallery/exploration_background_%s_small.png" % _get_intro_card_color(exp_summary.category) ), "ratings": exp_summary.ratings, "num_open_threads": (feedback_thread_analytics["num_open_threads"]), "num_total_threads": (feedback_thread_analytics["num_total_threads"]), } ) explorations_list = sorted( explorations_list, key=lambda x: (x["num_open_threads"], x["last_updated"]), reverse=True ) self.values.update({"explorations_list": explorations_list}) self.render_json(self.values)