diff --git a/plinth/modules/first_boot/middleware.py b/plinth/modules/first_boot/middleware.py index fee5b2991..bec324f7c 100644 --- a/plinth/modules/first_boot/middleware.py +++ b/plinth/modules/first_boot/middleware.py @@ -30,9 +30,10 @@ class FirstBootMiddleware(MiddlewareMixin): if user_requests_login: return - # Don't interfere with help pages + # Don't interfere with help or status pages user_requests_help = request.path.startswith(reverse('help:index')) - if user_requests_help: + user_requests_status = request.path.startswith(reverse('status')) + if user_requests_help or user_requests_status: return # Don't interfere with first setup progress page. When first setup is diff --git a/plinth/urls.py b/plinth/urls.py index 60e3c3196..8842e7b88 100644 --- a/plinth/urls.py +++ b/plinth/urls.py @@ -18,6 +18,7 @@ system_urlpatterns = [ urlpatterns = [ re_path(r'^$', views.index, name='index'), + re_path(r'^status/$', views.status, name='status'), re_path(r'^language-selection/$', public(views.LanguageSelectionView.as_view()), name='language-selection'), diff --git a/plinth/views.py b/plinth/views.py index f72fd60bb..c90e23429 100644 --- a/plinth/views.py +++ b/plinth/views.py @@ -178,6 +178,16 @@ def index(request): }) +@public +def status(request): + """Return the status of service in JSON format.""" + status = { + 'is_available': True, + 'is_first_setup_running': setup.is_first_setup_running + } + return JsonResponse(status) + + def _pick_menu_items(menu_items, selected_tags): """Return a sorted list of menu items filtered by tags."""