def to_dict(self): """Returns a dict suitable for use by the frontend. Returns: dict. A dict version of ActivityRights suitable for use by the frontend. """ if self.community_owned: return { 'cloned_from': self.cloned_from, 'status': self.status, 'community_owned': True, 'owner_names': [], 'editor_names': [], 'voice_artist_names': [], 'viewer_names': [], 'viewable_if_private': self.viewable_if_private, } else: return { 'cloned_from': self.cloned_from, 'status': self.status, 'community_owned': False, 'owner_names': user_services.get_human_readable_user_ids( self.owner_ids), 'editor_names': user_services.get_human_readable_user_ids( self.editor_ids), 'voice_artist_names': user_services.get_human_readable_user_ids( self.voice_artist_ids), 'viewer_names': user_services.get_human_readable_user_ids( self.viewer_ids), 'viewable_if_private': self.viewable_if_private, }
def to_dict(self): """Returns a dict suitable for use by the frontend.""" if self.community_owned: return { 'cloned_from': self.cloned_from, 'status': self.status, 'community_owned': True, 'owner_names': [], 'editor_names': [], 'viewer_names': [], 'viewable_if_private': self.viewable_if_private, } else: return { 'cloned_from': self.cloned_from, 'status': self.status, 'community_owned': False, 'owner_names': user_services.get_human_readable_user_ids( self.owner_ids), 'editor_names': user_services.get_human_readable_user_ids( self.editor_ids), 'viewer_names': user_services.get_human_readable_user_ids( self.viewer_ids), 'viewable_if_private': self.viewable_if_private, }
def get_human_readable_contributors_summary(contributors_summary): """Gets contributors summary in human readable form. Args: contributors_summary: dict. The keys are user ids and the values are the number of commits made by that user. Returns: dict. Dicts of contributors in human readable form; the keys are usernames and the values are a dict. Example: { 'albert': { 'num_commits': 10, }, } """ contributor_ids = contributors_summary.keys() contributor_usernames = user_services.get_human_readable_user_ids( contributor_ids) return { contributor_usernames[ind]: { 'num_commits': contributors_summary[contributor_ids[ind]], } for ind in xrange(len(contributor_ids)) }
def get_human_readable_contributors_summary(contributors_summary): """Gets contributors summary in human readable form. Args: contributors_summary: dict. The keys are user ids and the values are the number of commits made by that user. Returns: dict. Dicts of contributors in human readable form; the keys are usernames and the values are a dict. Example: { 'albert': { 'num_commits': 10, }, } """ contributor_ids = list(contributors_summary.keys()) contributor_usernames = user_services.get_human_readable_user_ids( contributor_ids) return { contributor_usernames[ind]: { 'num_commits': contributors_summary[contributor_ids[ind]], } for ind in python_utils.RANGE(len(contributor_ids)) }
def get_human_readable_contributors_summary(contributors_summary): contributor_ids = contributors_summary.keys() contributor_usernames = user_services.get_human_readable_user_ids( contributor_ids) return { contributor_usernames[ind]: contributors_summary[contributor_ids[ind]] for ind in xrange(len(contributor_ids)) }
def get_human_readable_contributors_summary(contributors_summary): contributor_ids = contributors_summary.keys() contributor_usernames = user_services.get_human_readable_user_ids( contributor_ids) return { contributor_usernames[ind]: contributors_summary[contributor_ids[ind]] for ind in xrange(len(contributor_ids)) }
def test_cannot_get_human_readable_user_ids_with_invalid_user_ids(self): observed_log_messages = [] def _mock_logging_function(msg, *args): """Mocks logging.error().""" observed_log_messages.append(msg % args) logging_swap = self.swap(logging, 'error', _mock_logging_function) assert_raises_user_not_found = self.assertRaisesRegexp( Exception, 'User not found.') with logging_swap, assert_raises_user_not_found: user_services.get_human_readable_user_ids(['invalid_user_id']) self.assertEqual(observed_log_messages, [ 'User id invalid_user_id not known in list of user_ids ' '[u\'invalid_user_id\']' ])
def test_get_human_readable_user_ids_with_nonexistent_id_non_strict_passes( self): user_id = user_services.create_new_user('auth_id', '*****@*****.**').user_id user_services.set_username(user_id, 'username') user_services.mark_user_for_deletion(user_id) human_readable_user_ids = user_services.get_human_readable_user_ids( [user_id], strict=False) self.assertEqual(human_readable_user_ids, [user_services.LABEL_FOR_USER_BEING_DELETED])
def to_dict(self): """Returns a dict suitable for use by the frontend. Returns: dict. A dict version of TopicRights suitable for use by the frontend. """ return { 'topic_id': self.id, 'manager_names': user_services.get_human_readable_user_ids( self.manager_ids) }
def get_displayable_exp_summary_dicts_matching_ids(exploration_ids): """Given a list of exploration ids, filters the list for explorations that are currently non-private and not deleted, and returns a list of dicts of the corresponding exploration summaries. """ displayable_exp_summaries = [] exploration_summaries = ( exp_services.get_exploration_summaries_matching_ids(exploration_ids)) view_counts = (stats_jobs_continuous.StatisticsAggregator.get_views_multi( exploration_ids)) for ind, exploration_summary in enumerate(exploration_summaries): if exploration_summary and exploration_summary.status != ( rights_manager.ACTIVITY_STATUS_PRIVATE): displayable_exp_summaries.append({ 'id': exploration_summary.id, 'title': exploration_summary.title, 'category': exploration_summary.category, 'objective': exploration_summary.objective, 'language_code': exploration_summary.language_code, 'last_updated_msec': utils.get_time_in_millisecs( exploration_summary.exploration_model_last_updated), 'status': exploration_summary.status, 'ratings': exploration_summary.ratings, 'community_owned': exploration_summary.community_owned, 'human_readable_contributors_summary': get_human_readable_contributors_summary( exploration_summary.contributors_summary), 'contributor_names': user_services.get_human_readable_user_ids( exploration_summary.contributor_ids), 'tags': exploration_summary.tags, 'thumbnail_icon_url': utils.get_thumbnail_icon_url_for_category( exploration_summary.category), 'thumbnail_bg_color': utils.get_hex_color_for_category(exploration_summary.category), 'num_views': view_counts[ind], }) return displayable_exp_summaries
def get_collection_owner_names(collection_id): """Retrieves the owners for this collection from the datastore. Args: collection_id: str. ID of the collection. Returns: list(str). Human-readable usernames (or truncated email addresses) of owners for this collection. """ collection_rights = get_collection_rights(collection_id) return user_services.get_human_readable_user_ids( collection_rights.owner_ids)
def to_dict(self): """Returns a dict suitable for use by the frontend.""" if self.community_owned: return { "cloned_from": self.cloned_from, "status": self.status, "community_owned": True, "owner_names": [], "editor_names": [], "viewer_names": [], "viewable_if_private": self.viewable_if_private, } else: return { "cloned_from": self.cloned_from, "status": self.status, "community_owned": False, "owner_names": user_services.get_human_readable_user_ids(self.owner_ids), "editor_names": user_services.get_human_readable_user_ids(self.editor_ids), "viewer_names": user_services.get_human_readable_user_ids(self.viewer_ids), "viewable_if_private": self.viewable_if_private, }
def get_human_readable_contributors_summary(contributors_summary): contributor_ids = contributors_summary.keys() contributor_usernames = user_services.get_human_readable_user_ids( contributor_ids) contributor_profile_pictures = ( user_services.get_profile_pictures_by_user_ids(contributor_ids)) return { contributor_usernames[ind]: { 'num_commits': contributors_summary[contributor_ids[ind]], 'profile_picture_data_url': contributor_profile_pictures[ contributor_ids[ind]] } for ind in xrange(len(contributor_ids)) }
def test_get_human_readable_user_ids(self): # Create an unregistered user who has no username. user_models.UserSettingsModel(id='unregistered_user_id', email='*****@*****.**', username='').put() user_ids = user_services.get_human_readable_user_ids([ self.owner_id, feconf.SYSTEM_COMMITTER_ID, 'unregistered_user_id' ]) expected_user_ids = [ 'owner', 'admin', '[Awaiting user registration: [email protected]]' ] self.assertEqual(user_ids, expected_user_ids)
def to_dict(self): """Returns a dict suitable for use by the frontend.""" if self.community_owned: return { 'cloned_from': self.cloned_from, 'status': self.status, 'community_owned': True, 'owner_names': [], 'editor_names': [], 'viewer_names': [] } else: return { 'cloned_from': self.cloned_from, 'status': self.status, 'community_owned': False, 'owner_names': user_services.get_human_readable_user_ids( self.owner_ids), 'editor_names': user_services.get_human_readable_user_ids( self.editor_ids), 'viewer_names': user_services.get_human_readable_user_ids( self.viewer_ids), }
def get_human_readable_contributors_summary(contributors_summary): contributor_ids = contributors_summary.keys() contributor_usernames = user_services.get_human_readable_user_ids( contributor_ids) contributor_profile_pictures = ( user_services.get_profile_pictures_by_user_ids(contributor_ids)) return { contributor_usernames[ind]: { 'num_commits': contributors_summary[contributor_ids[ind]], 'profile_picture_data_url': contributor_profile_pictures[contributor_ids[ind]] } for ind in xrange(len(contributor_ids)) }
def get_displayable_exp_summary_dicts_matching_ids(exploration_ids): """Given a list of exploration ids, filters the list for explorations that are currently non-private and not deleted, and returns a list of dicts of the corresponding exploration summaries. """ displayable_exp_summaries = [] exploration_summaries = ( exp_services.get_exploration_summaries_matching_ids(exploration_ids)) view_counts = ( stats_jobs_continuous.StatisticsAggregator.get_views_multi( exploration_ids)) for ind, exploration_summary in enumerate(exploration_summaries): if exploration_summary and exploration_summary.status != ( rights_manager.ACTIVITY_STATUS_PRIVATE): displayable_exp_summaries.append({ 'id': exploration_summary.id, 'title': exploration_summary.title, 'category': exploration_summary.category, 'objective': exploration_summary.objective, 'language_code': exploration_summary.language_code, 'last_updated_msec': utils.get_time_in_millisecs( exploration_summary.exploration_model_last_updated ), 'status': exploration_summary.status, 'ratings': exploration_summary.ratings, 'community_owned': exploration_summary.community_owned, 'human_readable_contributors_summary': get_human_readable_contributors_summary( exploration_summary.contributors_summary), 'contributor_names': user_services.get_human_readable_user_ids( exploration_summary.contributor_ids), 'tags': exploration_summary.tags, 'thumbnail_icon_url': utils.get_thumbnail_icon_url_for_category( exploration_summary.category), 'thumbnail_bg_color': utils.get_hex_color_for_category( exploration_summary.category), 'num_views': view_counts[ind], }) return displayable_exp_summaries
def get(self): """Handles GET requests.""" try: exp_ids = json.loads(self.request.get('stringified_exp_ids')) except Exception: raise self.PageNotFoundException if (not isinstance(exp_ids, list) or not all([ isinstance(exp_id, basestring) for exp_id in exp_ids])): raise self.PageNotFoundException exp_summaries = exp_services.get_exploration_summaries_matching_ids( exp_ids) self.values.update({ 'summaries': [(None if exp_summary is None else { '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, 'ratings': exp_summary.ratings, 'community_owned': exp_summary.community_owned, 'contributor_names': user_services.get_human_readable_user_ids( exp_summary.contributor_ids), 'tags': exp_summary.tags, 'thumbnail_icon_url': ( utils.get_thumbnail_icon_url_for_category( exp_summary.category)), 'thumbnail_bg_color': utils.get_hex_color_for_category( exp_summary.category), }) for exp_summary in exp_summaries] }) self.render_json(self.values)
def get_collection_owner_names(collection_id): """Retrieves the owners for this collection from the datastore.""" collection_rights = get_collection_rights(collection_id) return user_services.get_human_readable_user_ids( collection_rights.owner_ids)
def get_collection_owner_names(collection_id): """Retrieves the owners for this collection from the datastore.""" collection_rights = get_collection_rights(collection_id) return user_services.get_human_readable_user_ids( collection_rights.owner_ids)