예제 #1
0
 def test_generate_count_equal_to_publish_count(self):
     self.login(self.ADMIN_EMAIL, is_super_admin=True)
     csrf_token = self.get_new_csrf_token()
     self.post_json('/adminhandler', {
         'action': 'generate_dummy_explorations',
         'num_dummy_exps_to_generate': 2,
         'num_dummy_exps_to_publish': 2
     },
                    csrf_token=csrf_token)
     generated_exps = exp_services.get_all_exploration_summaries()
     published_exps = exp_services.get_recently_published_exp_summaries(5)
     self.assertEqual(len(generated_exps), 2)
     self.assertEqual(len(published_exps), 2)
예제 #2
0
 def test_generate_count_equal_to_publish_count(self):
     self.signup(self.ADMIN_EMAIL, self.ADMIN_USERNAME)
     self.login(self.ADMIN_EMAIL, is_super_admin=True)
     response = self.testapp.get('/admin')
     csrf_token = self.get_csrf_token_from_response(response)
     self.post_json('/adminhandler', {
         'action': 'generate_dummy_explorations',
         'num_dummy_exps_to_generate': 2,
         'num_dummy_exps_to_publish': 2
     }, csrf_token)
     generated_exps = exp_services.get_all_exploration_summaries()
     published_exps = exp_services.get_recently_published_exp_summaries(5)
     self.assertEqual(len(generated_exps), 2)
     self.assertEqual(len(published_exps), 2)
예제 #3
0
 def test_generate_count_less_than_publish_count(self):
     self.login(self.ADMIN_EMAIL, is_super_admin=True)
     csrf_token = self.get_new_csrf_token()
     generated_exps_response = self.post_json('/adminhandler', {
         'action': 'generate_dummy_explorations',
         'num_dummy_exps_to_generate': 2,
         'num_dummy_exps_to_publish': 5
     },
                                              csrf_token=csrf_token,
                                              expected_status_int=400)
     self.assertEqual(generated_exps_response['status_code'], 400)
     generated_exps = exp_services.get_all_exploration_summaries()
     published_exps = exp_services.get_recently_published_exp_summaries(5)
     self.assertEqual(len(generated_exps), 0)
     self.assertEqual(len(published_exps), 0)
예제 #4
0
def get_recently_published_exp_summary_dicts(limit):
    """Returns a list of recently published explorations
     with the given language code.
    """
    recently_published_exploration_summaries = [
        exp_summary for exp_summary in
        exp_services.get_recently_published_exp_summaries(limit).values()]

    # Arranging recently published exploration summaries with respect to time.
    # sorted() is used to sort the random list of recently published summaries.
    summaries = sorted(
        recently_published_exploration_summaries,
        key=lambda exp_summary: exp_summary.first_published_msec,
        reverse=True)

    return get_displayable_exp_summary_dicts(summaries)
예제 #5
0
def get_recently_published_exp_summary_dicts(limit):
    """Returns a list of recently published explorations
     with the given language code.
    """
    recently_published_exploration_summaries = [
        exp_summary for exp_summary in
        exp_services.get_recently_published_exp_summaries(limit).values()
    ]

    # Arranging recently published exploration summaries with respect to time.
    # sorted() is used to sort the random list of recently published summaries.
    summaries = sorted(
        recently_published_exploration_summaries,
        key=lambda exp_summary: exp_summary.first_published_msec,
        reverse=True)

    return get_displayable_exp_summary_dicts(summaries)
예제 #6
0
    def test_handler_raises_error_with_non_int_num_dummy_exps_to_publish(self):
        self.login(self.ADMIN_EMAIL, is_super_admin=True)
        csrf_token = self.get_new_csrf_token()

        with self.assertRaisesRegexp(Exception,
                                     'invalid_type is not a number'):
            self.post_json('/adminhandler', {
                'action': 'generate_dummy_explorations',
                'num_dummy_exps_to_publish': 'invalid_type',
                'num_dummy_exps_to_generate': 1
            },
                           csrf_token=csrf_token)

        generated_exps = exp_services.get_all_exploration_summaries()
        published_exps = exp_services.get_recently_published_exp_summaries(5)
        self.assertEqual(generated_exps, {})
        self.assertEqual(published_exps, {})

        self.logout()
예제 #7
0
    def test_cannot_generate_dummy_explorations_in_prod_mode(self):
        self.login(self.ADMIN_EMAIL, is_super_admin=True)
        csrf_token = self.get_new_csrf_token()

        prod_mode_swap = self.swap(constants, 'DEV_MODE', False)
        assert_raises_regexp_context_manager = self.assertRaisesRegexp(
            Exception, 'Cannot generate dummy explorations in production.')

        with assert_raises_regexp_context_manager, prod_mode_swap:
            self.post_json('/adminhandler', {
                'action': 'generate_dummy_explorations',
                'num_dummy_exps_to_generate': 10,
                'num_dummy_exps_to_publish': 3
            },
                           csrf_token=csrf_token)

        generated_exps = exp_services.get_all_exploration_summaries()
        published_exps = exp_services.get_recently_published_exp_summaries(5)
        self.assertEqual(generated_exps, {})
        self.assertEqual(published_exps, {})

        self.logout()
예제 #8
0
def get_recently_published_exp_summary_dicts(limit):
    """Returns a list of recently published explorations.

    Args:
        limit: int. The maximum number of explorations to return.

    Returns:
        list(dict). Each dict in this list represents a featured activity in
        human readable form. For example:

        [ {
            'category': u'A category',
            'community_owned': False,
            'id': 'eid2',
            'language_code': 'en',
            'num_views': 0,
            'objective': u'An objective',
            'status': 'public',
            'tags': [],
            'thumbnail_bg_color': '#a33f40',
            'thumbnail_icon_url': self.get_static_asset_url(
                '/images/subjects/Lightbulb.svg'),
            'title': u'Exploration 2 Albert title',
        }, ]
    """
    recently_published_exploration_summaries = [
        exp_summary for exp_summary in
        exp_services.get_recently_published_exp_summaries(limit).values()
    ]

    # Arranging recently published exploration summaries with respect to time.
    # sorted() is used to sort the random list of recently published summaries.
    summaries = sorted(
        recently_published_exploration_summaries,
        key=lambda exp_summary: exp_summary.first_published_msec,
        reverse=True)

    return get_displayable_exp_summary_dicts(summaries)
예제 #9
0
def get_recently_published_exp_summary_dicts(limit):
    """Returns a list of recently published explorations.

    Args:
        limit: int. The maximum number of explorations to return.

    Return:
        list(dict). Each dict in this list represents a featured activity in
        human readable form. For example:

        [ {
            'category': u'A category',
            'community_owned': False,
            'id': 'eid2',
            'language_code': 'en',
            'num_views': 0,
            'objective': u'An objective',
            'status': 'public',
            'tags': [],
            'thumbnail_bg_color': '#a33f40',
            'thumbnail_icon_url': self.get_static_asset_url(
                '/images/subjects/Lightbulb.svg'),
            'title': u'Exploration 2 Albert title',
        }, ]
    """
    recently_published_exploration_summaries = [
        exp_summary for exp_summary in
        exp_services.get_recently_published_exp_summaries(limit).values()]

    # Arranging recently published exploration summaries with respect to time.
    # sorted() is used to sort the random list of recently published summaries.
    summaries = sorted(
        recently_published_exploration_summaries,
        key=lambda exp_summary: exp_summary.first_published_msec,
        reverse=True)

    return get_displayable_exp_summary_dicts(summaries)