def test_get_all_feature_flag_dicts_returns_correct_dicts(self):
     expected_dicts = [
         self.dev_feature.to_dict(),
         self.prod_feature.to_dict(),
     ]
     self.assertEqual(feature_services.get_all_feature_flag_dicts(),
                      expected_dicts)
Пример #2
0
    def get(self):
        """Handles GET requests."""
        demo_exploration_ids = list(feconf.DEMO_EXPLORATIONS.keys())

        topic_summaries = topic_fetchers.get_all_topic_summaries()
        topic_summary_dicts = [
            summary.to_dict() for summary in topic_summaries]

        feature_flag_dicts = feature_services.get_all_feature_flag_dicts()

        config_properties = config_domain.Registry.get_config_property_schemas()
        # Removes promo-bar related configs as promo-bar is handlded by
        # release coordinators in /release-coordinator page.
        del config_properties['promo_bar_enabled']
        del config_properties['promo_bar_message']

        # Remove blog related configs as they will be handled by 'blog admins'
        # on blog admin page.
        del config_properties['max_number_of_tags_assigned_to_blog_post']
        del config_properties['list_of_default_tags_for_blog_post']

        self.render_json({
            'config_properties': config_properties,
            'demo_collections': sorted(feconf.DEMO_COLLECTIONS.items()),
            'demo_explorations': sorted(feconf.DEMO_EXPLORATIONS.items()),
            'demo_exploration_ids': demo_exploration_ids,
            'updatable_roles': role_services.UPDATABLE_ROLES,
            'viewable_roles': role_services.VIEWABLE_ROLES,
            'human_readable_roles': role_services.HUMAN_READABLE_ROLES,
            'role_to_actions': role_services.get_role_actions(),
            'topic_summaries': topic_summary_dicts,
            'feature_flags': feature_flag_dicts,
        })
Пример #3
0
    def get(self):
        """Handles GET requests."""
        demo_exploration_ids = list(feconf.DEMO_EXPLORATIONS.keys())

        topic_summaries = topic_fetchers.get_all_topic_summaries()
        topic_summary_dicts = [
            summary.to_dict() for summary in topic_summaries]

        feature_flag_dicts = feature_services.get_all_feature_flag_dicts()

        config_properties = config_domain.Registry.get_config_property_schemas()

        # Removes promo-bar related configs as promo-bar is handlded by
        # release coordinators in /release-coordinator page.
        del config_properties['promo_bar_enabled']
        del config_properties['promo_bar_message']

        self.render_json({
            'config_properties': config_properties,
            'demo_collections': sorted(feconf.DEMO_COLLECTIONS.items()),
            'demo_explorations': sorted(feconf.DEMO_EXPLORATIONS.items()),
            'demo_exploration_ids': demo_exploration_ids,
            'updatable_roles': {
                role: role_services.HUMAN_READABLE_ROLES[role]
                for role in role_services.UPDATABLE_ROLES
            },
            'viewable_roles': {
                role: role_services.HUMAN_READABLE_ROLES[role]
                for role in role_services.VIEWABLE_ROLES
            },
            'topic_summaries': topic_summary_dicts,
            'role_to_actions': role_services.get_role_actions(),
            'feature_flags': feature_flag_dicts,
        })
Пример #4
0
    def get(self):
        """Handles GET requests."""
        demo_exploration_ids = list(feconf.DEMO_EXPLORATIONS.keys())

        recent_job_data = jobs.get_data_for_recent_jobs()
        unfinished_job_data = jobs.get_data_for_unfinished_jobs()
        topic_summaries = topic_services.get_all_topic_summaries()
        topic_summary_dicts = [
            summary.to_dict() for summary in topic_summaries
        ]
        for job in unfinished_job_data:
            job['can_be_canceled'] = job['is_cancelable'] and any([
                klass.__name__ == job['job_type']
                for klass in (jobs_registry.ONE_OFF_JOB_MANAGERS +
                              (jobs_registry.AUDIT_JOB_MANAGERS))
            ])

        queued_or_running_job_types = set(
            [job['job_type'] for job in unfinished_job_data])
        one_off_job_status_summaries = [{
            'job_type':
            klass.__name__,
            'is_queued_or_running': (klass.__name__
                                     in queued_or_running_job_types)
        } for klass in jobs_registry.ONE_OFF_JOB_MANAGERS]
        audit_job_status_summaries = [{
            'job_type':
            klass.__name__,
            'is_queued_or_running': (klass.__name__
                                     in queued_or_running_job_types)
        } for klass in jobs_registry.AUDIT_JOB_MANAGERS]

        continuous_computations_data = jobs.get_continuous_computations_info(
            jobs_registry.ALL_CONTINUOUS_COMPUTATION_MANAGERS)
        for computation in continuous_computations_data:
            if computation['last_started_msec']:
                computation['human_readable_last_started'] = (
                    utils.get_human_readable_time_string(
                        computation['last_started_msec']))
            if computation['last_stopped_msec']:
                computation['human_readable_last_stopped'] = (
                    utils.get_human_readable_time_string(
                        computation['last_stopped_msec']))
            if computation['last_finished_msec']:
                computation['human_readable_last_finished'] = (
                    utils.get_human_readable_time_string(
                        computation['last_finished_msec']))

        feature_flag_dicts = feature_services.get_all_feature_flag_dicts()

        self.render_json({
            'config_properties':
            (config_domain.Registry.get_config_property_schemas()),
            'continuous_computations_data':
            continuous_computations_data,
            'demo_collections':
            sorted(feconf.DEMO_COLLECTIONS.items()),
            'demo_explorations':
            sorted(feconf.DEMO_EXPLORATIONS.items()),
            'demo_exploration_ids':
            demo_exploration_ids,
            'human_readable_current_time':
            (utils.get_human_readable_time_string(
                utils.get_current_time_in_millisecs())),
            'one_off_job_status_summaries':
            one_off_job_status_summaries,
            'audit_job_status_summaries':
            audit_job_status_summaries,
            'recent_job_data':
            recent_job_data,
            'unfinished_job_data':
            unfinished_job_data,
            'updatable_roles': {
                role: role_services.HUMAN_READABLE_ROLES[role]
                for role in role_services.UPDATABLE_ROLES
            },
            'viewable_roles': {
                role: role_services.HUMAN_READABLE_ROLES[role]
                for role in role_services.VIEWABLE_ROLES
            },
            'topic_summaries':
            topic_summary_dicts,
            'role_graph_data':
            role_services.get_role_graph_data(),
            'feature_flags':
            feature_flag_dicts,
        })