From 17ed3f92c740e1a56640f5a9eadea21389d7576a Mon Sep 17 00:00:00 2001 From: mridulnagpal Date: Wed, 28 Dec 2016 21:35:35 +0530 Subject: [PATCH] bind: Add config form --- plinth/modules/bind/forms.py | 32 +++++++++++++++++++ plinth/modules/bind/views.py | 60 ++++++++++++++++++++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 plinth/modules/bind/forms.py create mode 100644 plinth/modules/bind/views.py diff --git a/plinth/modules/bind/forms.py b/plinth/modules/bind/forms.py new file mode 100644 index 000000000..8e04b1761 --- /dev/null +++ b/plinth/modules/bind/forms.py @@ -0,0 +1,32 @@ +# +# This file is part of Plinth. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# + +""" +Forms for BIND module. +""" + +from django import forms +from django.utils.translation import ugettext_lazy as _ + +from plinth.forms import ServiceForm + + +class BindForm(ServiceForm): + """BIND configuration form""" + set_forwarding = forms.BooleanField( + label=_('Enable forwarding'), + required=False) diff --git a/plinth/modules/bind/views.py b/plinth/modules/bind/views.py new file mode 100644 index 000000000..de9232dc3 --- /dev/null +++ b/plinth/modules/bind/views.py @@ -0,0 +1,60 @@ +# +# This file is part of Plinth. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# + +""" +Views for BIND module. +""" + +from django.contrib import messages +from django.utils.translation import ugettext_lazy as _ + +from plinth import actions +from plinth.views import ServiceView + + +from . import description, managed_services, get_default +from .forms import BindForm + + +class MinetestServiceView(ServiceView): # pylint: disable=too-many-ancestors + """A specialized view for configuring minetest.""" + service_id = managed_services[0] + diagnostics_module_name = "bind" + description = description + show_status_block = True + form_class = BindForm + + def get_initial(self): + """Return the values to fill in the form.""" + initial = super().get_initial() + initial.update(get_default()) + return initial + + def form_valid(self, form): + """Change the configurations of Minetest service.""" + data = form.cleaned_data + old_config = get_default() + + if old_config['set_forwarding'] != data['set_forwarding']: + value = 'true' if data['set_forwarding'] else 'false' + actions.superuser_run( + 'bind', + ['configure', '--set_forwarding', value]) + messages.success(self.request, + _('Set forwarding configuration updated')) + + return super().form_valid(form)