mirror of
https://github.com/freedombox/FreedomBox.git
synced 2026-09-19 04:59:01 +00:00
Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org> Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
70 lines
2.3 KiB
Python
70 lines
2.3 KiB
Python
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
"""FreedomBox views for basic system configuration."""
|
|
|
|
from django.contrib import messages
|
|
from django.utils.translation import gettext as _
|
|
|
|
from freedombox import views
|
|
from freedombox.modules import config
|
|
|
|
from . import privileged
|
|
from .forms import ConfigurationForm
|
|
|
|
|
|
class ConfigAppView(views.AppView):
|
|
"""Serve configuration page."""
|
|
|
|
form_class = ConfigurationForm
|
|
app_id = 'config'
|
|
|
|
def get_initial(self):
|
|
"""Return the current status."""
|
|
return {
|
|
'homepage': config.get_home_page(),
|
|
'advanced_mode': config.get_advanced_mode(),
|
|
'logging_mode': privileged.get_logging_mode(),
|
|
}
|
|
|
|
def form_valid(self, form):
|
|
"""Apply the form changes."""
|
|
old_status = form.initial
|
|
new_status = form.cleaned_data
|
|
|
|
is_changed = False
|
|
|
|
if old_status['homepage'] != new_status['homepage']:
|
|
try:
|
|
config.change_home_page(new_status['homepage'])
|
|
except Exception as exception:
|
|
messages.error(
|
|
self.request,
|
|
_('Error setting webserver home page: {exception}').format(
|
|
exception=exception))
|
|
else:
|
|
messages.success(self.request, _('Webserver home page set'))
|
|
|
|
if old_status['advanced_mode'] != new_status['advanced_mode']:
|
|
try:
|
|
config.set_advanced_mode(new_status['advanced_mode'])
|
|
except Exception as exception:
|
|
messages.error(
|
|
self.request,
|
|
_('Error changing advanced mode: {exception}').format(
|
|
exception=exception))
|
|
else:
|
|
if new_status['advanced_mode']:
|
|
messages.success(self.request,
|
|
_('Showing advanced apps and features'))
|
|
else:
|
|
messages.success(self.request,
|
|
_('Hiding advanced apps and features'))
|
|
|
|
if old_status['logging_mode'] != new_status['logging_mode']:
|
|
privileged.set_logging_mode(new_status['logging_mode'])
|
|
is_changed = True
|
|
|
|
if is_changed:
|
|
messages.success(self.request, _('Configuration updated'))
|
|
|
|
return super().form_valid(form)
|