Sunil Mohan Adapa baa44e91a2
*: Update imports statements from plinth to freedombox
Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2026-08-28 07:35:18 -04:00

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)