mirror of
https://github.com/freedombox/FreedomBox.git
synced 2026-04-22 10:01:45 +00:00
- When running full diagnostics manually, we can use the Operation class. This allows us to use many of its features. - Ensure only one task is running at any time. No need to use running_task global variable and a lock for it. - Don't run the operation if app install/uninstall or other potentially contentious tasks are running. - Since Operation object creates a thread, don't create another one with glib.schedule(). Don't wait unnecessarily for the operation to finish in the glib thread (or glib created thread). - Since the app will show progress of operations when an operation is running, it would not be possible to show progress of diagnostics running. So, create a separate page for diagnostics results. Tests: - Run diagnostics and see redirection happens to diagnostics results page. Results page shows ongoing tests. It refreshes automatically. When tests are completed, 'Re-run diagnostics' button is shown. - When visiting /diagnostics/full/ URL is visited without running the test. Only the re-run button is shown. No results are shown. If tests have been run, re-run button along with results are shown. - On the app page, if the tests have been run, a button for viewing results is shown. Otherwise, the button is not shown. - In development mode, background diagnostics are run after 3 minutes (change the time to 150 seconds if database locked errors show up). Results are available in the results page. - Make a diagnostic test fail by changing code or disabling a daemon. Run diagnostics and notice that a notification is shown with the button to go to the results. Clicking on the button shows the results page. Clicking dismiss removes the notification. Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org> Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
55 lines
1.5 KiB
HTML
55 lines
1.5 KiB
HTML
{% extends 'base.html' %}
|
|
{% comment %}
|
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
{% endcomment %}
|
|
|
|
{% load i18n %}
|
|
|
|
{% block content %}
|
|
|
|
{% if not is_task_running %}
|
|
<div class="btn-toolbar">
|
|
<form class="form form-diagnostics-full" method="post"
|
|
action="{% url 'diagnostics:full' %}">
|
|
{% csrf_token %}
|
|
|
|
<input type="submit" class="btn btn-primary"
|
|
value="{% trans "Re-run Diagnostics" %}"/>
|
|
</form>
|
|
</div>
|
|
{% else %}
|
|
<p>{% trans "Diagnostics test is currently running" %}</p>
|
|
<div class="progress">
|
|
<div class="progress-bar progress-bar-striped active
|
|
w-{{ results.progress_percentage }}"
|
|
role="progressbar" aria-valuemin="0" aria-valuemax="100"
|
|
aria-valuenow="{{ results.progress_percentage }}">
|
|
{{ results.progress_percentage }}%
|
|
</div>
|
|
</div>
|
|
|
|
{% endif %}
|
|
|
|
{% if results %}
|
|
<h3>{% trans "Results" %}</h3>
|
|
{% for app_id, app_data in results.results.items %}
|
|
<h4>
|
|
{% blocktrans with app_name=app_data.name %}
|
|
App: {{app_name}}
|
|
{% endblocktrans %}
|
|
</h4>
|
|
|
|
{% if app_data.diagnosis %}
|
|
{% include "diagnostics_results.html" with results=app_data.diagnosis %}
|
|
{% elif app_data.exception %}
|
|
<div class="alert alert-danger" role="alert">
|
|
{{ app_data.exception }}
|
|
</div>
|
|
{% else %}
|
|
<p><span class="fa fa-hourglass-o"></span></p>
|
|
{% endif %}
|
|
{% endfor %}
|
|
{% endif %}
|
|
|
|
{% endblock %}
|