diff --git a/plinth/modules/ikiwiki/__init__.py b/plinth/modules/ikiwiki/__init__.py index 05f105743..f6bc67ce3 100644 --- a/plinth/modules/ikiwiki/__init__.py +++ b/plinth/modules/ikiwiki/__init__.py @@ -65,11 +65,23 @@ def setup(helper, old_version=None): helper.call('post', service.notify_enabled, None, True) +def get_status(): + """Get the current setting.""" + return {'enabled': is_enabled()} + + def is_enabled(): """Return whether the module is enabled.""" return action_utils.webserver_is_enabled('ikiwiki-plinth') +def enable(should_enable): + """Enable/disable the module.""" + sub_command = 'enable' if should_enable else 'disable' + actions.superuser_run('ikiwiki', [sub_command]) + service.notify_enabled(None, should_enable) + + def diagnose(): """Run diagnostics and return the results.""" results = [] diff --git a/plinth/modules/ikiwiki/forms.py b/plinth/modules/ikiwiki/forms.py index 11d3c8020..a5c4a7f27 100644 --- a/plinth/modules/ikiwiki/forms.py +++ b/plinth/modules/ikiwiki/forms.py @@ -23,13 +23,6 @@ from django import forms from django.utils.translation import ugettext_lazy as _ -class IkiwikiForm(forms.Form): - """ikiwiki configuration form.""" - enabled = forms.BooleanField( - label=_('Enable ikiwiki'), - required=False) - - class IkiwikiCreateForm(forms.Form): """Form to create a wiki or blog.""" site_type = forms.ChoiceField( diff --git a/plinth/modules/ikiwiki/urls.py b/plinth/modules/ikiwiki/urls.py index 59bf30236..65854ae88 100644 --- a/plinth/modules/ikiwiki/urls.py +++ b/plinth/modules/ikiwiki/urls.py @@ -25,7 +25,8 @@ from . import views urlpatterns = [ - url(r'^apps/ikiwiki/$', views.index, name='index'), + url(r'^apps/ikiwiki/$', + views.ConfigurationView.as_view(module_name='ikiwiki'), name='index'), url(r'^apps/ikiwiki/manage/$', views.manage, name='manage'), url(r'^apps/ikiwiki/(?P[\w.@+-]+)/delete/$', views.delete, name='delete'), diff --git a/plinth/modules/ikiwiki/views.py b/plinth/modules/ikiwiki/views.py index 27c1a855a..df806bdb6 100644 --- a/plinth/modules/ikiwiki/views.py +++ b/plinth/modules/ikiwiki/views.py @@ -25,9 +25,9 @@ from django.shortcuts import redirect from django.template.response import TemplateResponse from django.utils.translation import ugettext as _, ugettext_lazy -from .forms import IkiwikiForm, IkiwikiCreateForm +from .forms import IkiwikiCreateForm from plinth import actions -from plinth.modules import ikiwiki +from plinth import views subsubmenu = [{'url': reverse_lazy('ikiwiki:index'), @@ -38,48 +38,14 @@ subsubmenu = [{'url': reverse_lazy('ikiwiki:index'), 'text': ugettext_lazy('Create')}] -def index(request): +class ConfigurationView(views.ConfigurationView): """Serve configuration page.""" - status = get_status() + def get_context_data(self, **kwargs): + """Return the context data for rendering the template view.""" + if 'subsubmenu' not in kwargs: + kwargs['subsubmenu'] = subsubmenu - form = None - - if request.method == 'POST': - form = IkiwikiForm(request.POST, prefix='ikiwiki') - if form.is_valid(): - _apply_changes(request, status, form.cleaned_data) - status = get_status() - form = IkiwikiForm(initial=status, prefix='ikiwiki') - else: - form = IkiwikiForm(initial=status, prefix='ikiwiki') - - return TemplateResponse(request, 'ikiwiki.html', - {'title': ikiwiki.title, - 'description': ikiwiki.description, - 'status': status, - 'form': form, - 'subsubmenu': subsubmenu}) - - -def get_status(): - """Get the current setting.""" - return {'enabled': ikiwiki.is_enabled()} - - -def _apply_changes(request, old_status, new_status): - """Apply the changes.""" - modified = False - - if old_status['enabled'] != new_status['enabled']: - sub_command = 'enable' if new_status['enabled'] else 'disable' - actions.superuser_run('ikiwiki', [sub_command]) - ikiwiki.service.notify_enabled(None, new_status['enabled']) - modified = True - - if modified: - messages.success(request, _('Configuration updated')) - else: - messages.info(request, _('Setting unchanged')) + return super().get_context_data(**kwargs) def manage(request):