def get(self): """Handles GET requests.""" recent_job_data = jobs.get_data_for_recent_jobs() unfinished_job_data = jobs.get_data_for_unfinished_jobs() 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] self.render_json({ '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, })
def get(self): """Handles GET requests.""" recent_job_data = jobs.get_data_for_recent_jobs() unfinished_job_data = jobs.get_data_for_unfinished_jobs() 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'])) self.render_json({ 'continuous_computations_data': continuous_computations_data, '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, })
def get(self): """Handles GET requests.""" demo_exploration_ids = feconf.DEMO_EXPLORATIONS.keys() recent_job_data = jobs.get_data_for_recent_jobs() unfinished_job_data = jobs.get_data_for_unfinished_jobs() 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]) queued_or_running_job_types = set([ job['job_type'] for job in unfinished_job_data]) one_off_job_specs = [{ '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] 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'])) self.values.update({ 'continuous_computations_data': continuous_computations_data, 'demo_collections': sorted(feconf.DEMO_COLLECTIONS.iteritems()), 'demo_explorations': sorted(feconf.DEMO_EXPLORATIONS.iteritems()), '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_specs': one_off_job_specs, 'recent_job_data': recent_job_data, 'rte_components_html': jinja2.utils.Markup( rte_component_registry.Registry.get_html_for_all_components()), 'unfinished_job_data': unfinished_job_data, 'value_generators_js': jinja2.utils.Markup( editor.get_value_generators_js()), }) self.render_template('pages/admin/admin.html')
def get(self): """Handles GET requests.""" demo_exploration_ids = 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 ]) queued_or_running_job_types = set( [job['job_type'] for job in unfinished_job_data]) one_off_job_specs = [{ '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] 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'])) self.values.update({ 'continuous_computations_data': continuous_computations_data, 'demo_collections': sorted(feconf.DEMO_COLLECTIONS.iteritems()), 'demo_explorations': sorted(feconf.DEMO_EXPLORATIONS.iteritems()), '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_specs': one_off_job_specs, 'recent_job_data': recent_job_data, 'unfinished_job_data': unfinished_job_data, 'value_generators_js': jinja2.utils.Markup(editor.get_value_generators_js()), '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() }) self.render_template('pages/admin/admin.html')
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, })
def get(self): """Handles GET requests.""" self.values['counters'] = [{ 'name': counter.name, 'description': counter.description, 'value': counter.value } for counter in counters.Registry.get_all_counters()] if counters.HTML_RESPONSE_COUNT.value: average_time = ( counters.HTML_RESPONSE_TIME_SECS.value / counters.HTML_RESPONSE_COUNT.value) self.values['counters'].append({ 'name': 'average-html-response-time-secs', 'description': 'Average HTML response time in seconds', 'value': average_time }) if counters.JSON_RESPONSE_COUNT.value: average_time = ( counters.JSON_RESPONSE_TIME_SECS.value / counters.JSON_RESPONSE_COUNT.value) self.values['counters'].append({ 'name': 'average-json-response-time-secs', 'description': 'Average JSON response time in seconds', 'value': average_time }) demo_exploration_ids = feconf.DEMO_EXPLORATIONS.keys() recent_job_data = jobs.get_data_for_recent_jobs() unfinished_job_data = jobs.get_data_for_unfinished_jobs() 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]) queued_or_running_job_types = set([ job['job_type'] for job in unfinished_job_data]) one_off_job_specs = [{ '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] 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'])) self.values.update({ 'continuous_computations_data': continuous_computations_data, 'demo_collections': sorted(feconf.DEMO_COLLECTIONS.iteritems()), 'demo_explorations': sorted(feconf.DEMO_EXPLORATIONS.iteritems()), '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_specs': one_off_job_specs, 'recent_job_data': recent_job_data, 'rte_components_html': jinja2.utils.Markup( rte_component_registry.Registry.get_html_for_all_components()), 'unfinished_job_data': unfinished_job_data, 'value_generators_js': jinja2.utils.Markup( editor.VALUE_GENERATORS_JS.value), }) self.render_template('admin/admin.html')
def get(self): """Handles GET requests.""" self.values['counters'] = [{ 'name': counter.name, 'description': counter.description, 'value': counter.value } for counter in counters.Registry.get_all_counters()] if counters.HTML_RESPONSE_COUNT.value: average_time = ( counters.HTML_RESPONSE_TIME_SECS.value / counters.HTML_RESPONSE_COUNT.value) self.values['counters'].append({ 'name': 'average-html-response-time-secs', 'description': 'Average HTML response time in seconds', 'value': average_time }) if counters.JSON_RESPONSE_COUNT.value: average_time = ( counters.JSON_RESPONSE_TIME_SECS.value / counters.JSON_RESPONSE_COUNT.value) self.values['counters'].append({ 'name': 'average-json-response-time-secs', 'description': 'Average JSON response time in seconds', 'value': average_time }) demo_exploration_ids = feconf.DEMO_EXPLORATIONS.keys() recent_job_data = jobs.get_data_for_recent_jobs() unfinished_job_data = jobs.get_data_for_unfinished_jobs() 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]) queued_or_running_job_types = set([ job['job_type'] for job in unfinished_job_data]) one_off_job_specs = [{ '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] 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'])) self.values.update({ 'continuous_computations_data': continuous_computations_data, 'demo_collections': sorted(feconf.DEMO_COLLECTIONS.iteritems()), 'demo_explorations': sorted(feconf.DEMO_EXPLORATIONS.iteritems()), '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_specs': one_off_job_specs, 'recent_job_data': recent_job_data, 'rte_components_html': jinja2.utils.Markup( rte_component_registry.Registry.get_html_for_all_components()), 'unfinished_job_data': unfinished_job_data, 'value_generators_js': jinja2.utils.Markup( editor.get_value_generators_js()), }) self.render_template('admin/admin.html')
def get(self): """Handles GET requests.""" self.values['counters'] = [{ 'name': counter.name, 'description': counter.description, 'value': counter.value } for counter in counters.Registry.get_all_counters()] if counters.HTML_RESPONSE_COUNT.value: average_time = (counters.HTML_RESPONSE_TIME_SECS.value / counters.HTML_RESPONSE_COUNT.value) self.values['counters'].append({ 'name': 'average-html-response-time-secs', 'description': 'Average HTML response time in seconds', 'value': average_time }) if counters.JSON_RESPONSE_COUNT.value: average_time = (counters.JSON_RESPONSE_TIME_SECS.value / counters.JSON_RESPONSE_COUNT.value) self.values['counters'].append({ 'name': 'average-json-response-time-secs', 'description': 'Average JSON response time in seconds', 'value': average_time }) demo_explorations = [ (unicode(ind), exp[0]) for ind, exp in enumerate(feconf.DEMO_EXPLORATIONS) ] recent_job_data = jobs.get_data_for_recent_jobs() unfinished_job_data = jobs.get_data_for_unfinished_jobs() 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 ]) queued_or_running_job_types = set( [job['job_type'] for job in unfinished_job_data]) one_off_job_specs = [{ '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] 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'])) self.values.update({ 'demo_explorations': demo_explorations, 'object_editors_js': jinja2.utils.Markup(editor.OBJECT_EDITORS_JS.value), 'value_generators_js': jinja2.utils.Markup(editor.VALUE_GENERATORS_JS.value), 'widget_js_directives': jinja2.utils.Markup( widget_registry.Registry.get_noninteractive_widget_js()), 'one_off_job_specs': one_off_job_specs, 'recent_job_data': recent_job_data, 'unfinished_job_data': unfinished_job_data, 'continuous_computations_data': continuous_computations_data, }) self.render_template('admin/admin.html')