Exemplo n.º 1
0
    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,
            }
Exemplo n.º 2
0
 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,
         }
Exemplo n.º 3
0
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))
    }
Exemplo n.º 4
0
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))
    }
Exemplo n.º 5
0
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))
    }
Exemplo n.º 6
0
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))
    }
Exemplo n.º 7
0
    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\']'
        ])
Exemplo n.º 8
0
    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])
Exemplo n.º 9
0
    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)
        }
Exemplo n.º 10
0
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
Exemplo n.º 11
0
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)
Exemplo n.º 12
0
 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,
         }
Exemplo n.º 13
0
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))
    }
Exemplo n.º 14
0
    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)
Exemplo n.º 15
0
 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),
         }
Exemplo n.º 16
0
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))
    }
Exemplo n.º 17
0
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
Exemplo n.º 18
0
    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)
Exemplo n.º 19
0
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)
Exemplo n.º 20
0
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)