Example #1
0
 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']))
Example #3
0
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
Example #4
0
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]))
Example #5
0
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
Example #6
0
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']))
Example #8
0
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
Example #9
0
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