def test_split_by_type_raises_error_if_given_invalid_activity_ref(self): exploration_123 = self._create_exploration_reference('123') with self.assertRaisesRegexp(Exception, 'Invalid activity reference'): activity_services.split_by_type([ exploration_123, activity_domain.ActivityReference('invalid_type', 'bbb') ])
def test_split_by_type(self) -> None: self.assertEqual(activity_services.split_by_type([]), ([], [])) exploration_123 = self._create_exploration_reference('123') self.assertEqual(activity_services.split_by_type([exploration_123]), (['123'], [])) collection_def = self._create_collection_reference('def') self.assertEqual(activity_services.split_by_type([collection_def]), ([], ['def'])) exploration_ab = self._create_exploration_reference('ab') self.assertEqual( activity_services.split_by_type( [exploration_123, collection_def, exploration_ab]), (['123', 'ab'], ['def']))
def get_featured_activity_summary_dicts(language_codes): """Returns a list of featured activities with the given language codes. The return value is sorted according to the list stored in the datastore. """ activity_references = activity_services.get_featured_activity_references() exploration_ids, collection_ids = activity_services.split_by_type( activity_references) exp_summary_dicts = get_displayable_exp_summary_dicts_matching_ids( exploration_ids) col_summary_dicts = get_displayable_collection_summary_dicts_matching_ids( collection_ids) summary_dicts_by_id = { feconf.ACTIVITY_TYPE_EXPLORATION: { summary_dict['id']: summary_dict for summary_dict in exp_summary_dicts }, feconf.ACTIVITY_TYPE_COLLECTION: { summary_dict['id']: summary_dict for summary_dict in col_summary_dicts }, } featured_summary_dicts = [] for reference in activity_references: if reference.id in summary_dicts_by_id[reference.type]: summary_dict = summary_dicts_by_id[reference.type][reference.id] if summary_dict and summary_dict['language_code'] in language_codes: featured_summary_dicts.append(summary_dict) return featured_summary_dicts
def require_activities_to_be_public(activity_references): """Raises an exception if any activity reference in the list does not exist, or is not public. """ exploration_ids, collection_ids = activity_services.split_by_type( activity_references) activity_summaries_by_type = [{ 'type': feconf.ACTIVITY_TYPE_EXPLORATION, 'ids': exploration_ids, 'summaries': exp_services.get_exploration_summaries_matching_ids( exploration_ids), }, { 'type': feconf.ACTIVITY_TYPE_COLLECTION, 'ids': collection_ids, 'summaries': collection_services.get_collection_summaries_matching_ids( collection_ids), }] for activities_info in activity_summaries_by_type: for index, summary in enumerate(activities_info['summaries']): if summary is None: raise Exception( 'Cannot feature non-existent %s with id %s' % (activities_info['type'], activities_info['ids'][index])) if summary.status == rights_manager.ACTIVITY_STATUS_PRIVATE: raise Exception( 'Cannot feature private %s with id %s' % (activities_info['type'], activities_info['ids'][index]))
def require_activities_to_be_public(activity_references): """Raises an exception if any activity reference in the list does not exist, or is not public. """ exploration_ids, collection_ids = activity_services.split_by_type( activity_references) activity_summaries_by_type = [{ 'type': feconf.ACTIVITY_TYPE_EXPLORATION, 'ids': exploration_ids, 'summaries': exp_services.get_exploration_summaries_matching_ids(exploration_ids), }, { 'type': feconf.ACTIVITY_TYPE_COLLECTION, 'ids': collection_ids, 'summaries': collection_services.get_collection_summaries_matching_ids( collection_ids), }] for activities_info in activity_summaries_by_type: for index, summary in enumerate(activities_info['summaries']): if summary is None: raise Exception( 'Cannot feature non-existent %s with id %s' % (activities_info['type'], activities_info['ids'][index])) if summary.status == rights_manager.ACTIVITY_STATUS_PRIVATE: raise Exception( 'Cannot feature private %s with id %s' % (activities_info['type'], activities_info['ids'][index]))
def test_split_by_type(self): self.assertEqual( activity_services.split_by_type([]), ([], [])) exploration_123 = self._create_exploration_reference('123') self.assertEqual( activity_services.split_by_type([exploration_123]), (['123'], [])) collection_def = self._create_collection_reference('def') self.assertEqual( activity_services.split_by_type([collection_def]), ([], ['def'])) exploration_ab = self._create_exploration_reference('ab') self.assertEqual( activity_services.split_by_type([ exploration_123, collection_def, exploration_ab]), (['123', 'ab'], ['def']))
def get_featured_activity_summary_dicts(language_codes): """Returns a list of featured activities with the given language codes. The return value is sorted according to the list stored in the datastore. Args: language_codes: list(str). A list of language codes. Only explorations with these languages will be returned. Returns: list(dict). Each dict in this list represents a featured activity. For example: [ { 'status': 'public', 'thumbnail_bg_color': '#a33f40', 'community_owned': False, 'tags': [], 'thumbnail_icon_url': self.get_static_asset_url( '/images/subjects/Lightbulb.svg'), 'language_code': constants.DEFAULT_LANGUAGE_CODE, 'id': 'eid2', 'category': 'A category', 'ratings': feconf.get_empty_ratings(), 'title': 'A title', 'num_views': 0, 'objective': 'An objective', }, ] """ activity_references = activity_services.get_featured_activity_references() exploration_ids, collection_ids = activity_services.split_by_type( activity_references) exp_summary_dicts = get_displayable_exp_summary_dicts_matching_ids( exploration_ids) col_summary_dicts = get_displayable_collection_summary_dicts_matching_ids( collection_ids) summary_dicts_by_id = { constants.ACTIVITY_TYPE_EXPLORATION: { summary_dict['id']: summary_dict for summary_dict in exp_summary_dicts }, constants.ACTIVITY_TYPE_COLLECTION: { summary_dict['id']: summary_dict for summary_dict in col_summary_dicts }, } featured_summary_dicts = [] for reference in activity_references: if reference.id in summary_dicts_by_id[reference.type]: summary_dict = summary_dicts_by_id[reference.type][reference.id] if summary_dict and summary_dict['language_code'] in language_codes: featured_summary_dicts.append(summary_dict) return featured_summary_dicts
def get_featured_activity_summary_dicts(language_codes): """Returns a list of featured activities with the given language codes. The return value is sorted according to the list stored in the datastore. Args: language_codes: list(str). A list of language codes. Only explorations with these languages will be returned. Return: list(dict). Each dict in this list represents a featured activity. For example: [ { 'status': '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': 'eid2', 'category': 'A category', 'ratings': feconf.get_empty_ratings(), 'title': 'A title', 'num_views': 0, 'objective': 'An objective', }, ] """ activity_references = activity_services.get_featured_activity_references() exploration_ids, collection_ids = activity_services.split_by_type( activity_references) exp_summary_dicts = get_displayable_exp_summary_dicts_matching_ids( exploration_ids) col_summary_dicts = get_displayable_collection_summary_dicts_matching_ids( collection_ids) summary_dicts_by_id = { feconf.ACTIVITY_TYPE_EXPLORATION: { summary_dict['id']: summary_dict for summary_dict in exp_summary_dicts }, feconf.ACTIVITY_TYPE_COLLECTION: { summary_dict['id']: summary_dict for summary_dict in col_summary_dicts }, } featured_summary_dicts = [] for reference in activity_references: if reference.id in summary_dicts_by_id[reference.type]: summary_dict = summary_dicts_by_id[reference.type][reference.id] if summary_dict and summary_dict['language_code'] in language_codes: featured_summary_dicts.append(summary_dict) return featured_summary_dicts