diff --git a/functional_tests/features/wiki_engine.feature b/functional_tests/features/wiki_engine.feature
index d79e380cd..a3a29a580 100644
--- a/functional_tests/features/wiki_engine.feature
+++ b/functional_tests/features/wiki_engine.feature
@@ -53,3 +53,16 @@ Scenario: Disable private mode
Given the mediawiki application is enabled
When I disable mediawiki private mode
Then the mediawiki site should allow anonymous reads and writes
+
+Scenario: Enabling private mode disables public registrations
+ Given the mediawiki application is enabled
+ When I enable mediawiki public registrations
+ And I enable mediawiki private mode
+ Then the mediawiki site should not allow creating accounts
+
+# Requires JS
+Scenario: Enabling public registrations disables private mode
+ Given the mediawiki application is enabled
+ When I enable mediawiki private mode
+ And I enable mediawiki public registrations
+ Then the mediawiki site should allow creating accounts
diff --git a/plinth/modules/mediawiki/templates/mediawiki.html b/plinth/modules/mediawiki/templates/mediawiki.html
new file mode 100644
index 000000000..e8481261b
--- /dev/null
+++ b/plinth/modules/mediawiki/templates/mediawiki.html
@@ -0,0 +1,41 @@
+{% extends "service.html" %}
+{% comment %}
+#
+# This file is part of FreedomBox.
+#
+# 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 .
+#
+{% endcomment %}
+
+{% load i18n %}
+
+{% block page_js %}
+
+{% endblock %}
diff --git a/plinth/modules/mediawiki/views.py b/plinth/modules/mediawiki/views.py
index dcf2c21f8..bb431e9ec 100644
--- a/plinth/modules/mediawiki/views.py
+++ b/plinth/modules/mediawiki/views.py
@@ -23,10 +23,11 @@ import logging
from django.contrib import messages
from django.utils.translation import ugettext as _
-from plinth import actions, views, frontpage
+from plinth import actions, views
from plinth.modules import mediawiki
-from . import is_public_registration_enabled, is_private_mode_enabled, is_enabled, add_shortcut
+from . import (add_shortcut, is_enabled, is_private_mode_enabled,
+ is_public_registration_enabled)
from .forms import MediaWikiForm
logger = logging.getLogger(__name__)
@@ -41,6 +42,7 @@ class MediaWikiServiceView(views.ServiceView):
form_class = MediaWikiForm
manual_page = mediawiki.manual_page
show_status_block = False
+ template_name = 'mediawiki.html'
def get_initial(self):
"""Return the values to fill in the form."""
@@ -82,10 +84,15 @@ class MediaWikiServiceView(views.ServiceView):
if not pub_reg_same:
# note action public-registration restarts, if running now
if new_config['enable_public_registrations']:
- actions.superuser_run('mediawiki',
- ['public-registrations', 'enable'])
- messages.success(self.request,
- _('Public registrations enabled'))
+ if not new_config['enable_private_mode']:
+ actions.superuser_run('mediawiki',
+ ['public-registrations', 'enable'])
+ messages.success(self.request,
+ _('Public registrations enabled'))
+ else:
+ messages.warning(
+ self.request, 'Public registrations ' +
+ 'cannot be enabled when private mode is enabled')
else:
actions.superuser_run('mediawiki',
['public-registrations', 'disable'])
@@ -94,19 +101,15 @@ class MediaWikiServiceView(views.ServiceView):
if not private_mode_same:
if new_config['enable_private_mode']:
- actions.superuser_run('mediawiki',
- ['private-mode', 'enable'])
+ actions.superuser_run('mediawiki', ['private-mode', 'enable'])
if new_config['enable_public_registrations']:
# If public registrations are enabled, then disable it
actions.superuser_run('mediawiki',
['public-registrations', 'disable'])
- messages.success(self.request,
- _('Private mode enabled'))
+ messages.success(self.request, _('Private mode enabled'))
else:
- actions.superuser_run('mediawiki',
- ['private-mode', 'disable'])
- messages.success(self.request,
- _('Private mode disabled'))
+ actions.superuser_run('mediawiki', ['private-mode', 'disable'])
+ messages.success(self.request, _('Private mode disabled'))
if is_enabled():
add_shortcut()
return super().form_valid(form)