Sunil Mohan Adapa 9368504da5
*.py: Use SPDX license identifier
Reviewed-by: Veiko Aasa <veiko17@disroot.org>
2020-02-19 14:38:55 +02:00

70 lines
1.9 KiB
Python

# SPDX-License-Identifier: AGPL-3.0-or-later
"""
FreedomBox app for power module.
"""
from django.forms import Form
from django.shortcuts import redirect
from django.template.response import TemplateResponse
from django.urls import reverse
from plinth import actions
from plinth.modules import power
def index(request):
"""Serve power controls page."""
return TemplateResponse(
request, 'power.html', {
'title': power.app.info.name,
'app_info': power.app.info,
'pkg_manager_is_busy': _is_pkg_manager_busy()
})
def restart(request):
"""Serve start confirmation page."""
form = None
if request.method == 'POST':
actions.superuser_run('power', ['restart'], run_in_background=True)
return redirect(reverse('apps'))
else:
form = Form(prefix='power')
return TemplateResponse(
request, 'power_restart.html', {
'title': power.app.info.name,
'form': form,
'manual_page': power.app.info.manual_page,
'pkg_manager_is_busy': _is_pkg_manager_busy()
})
def shutdown(request):
"""Serve shutdown confirmation page."""
form = None
if request.method == 'POST':
actions.superuser_run('power', ['shutdown'], run_in_background=True)
return redirect(reverse('apps'))
else:
form = Form(prefix='power')
return TemplateResponse(
request, 'power_shutdown.html', {
'title': power.app.info.name,
'form': form,
'manual_page': power.app.info.manual_page,
'pkg_manager_is_busy': _is_pkg_manager_busy()
})
def _is_pkg_manager_busy():
"""Return whether a package manager is running."""
try:
actions.superuser_run('packages', ['is-package-manager-busy'])
return True
except actions.ActionError:
return False