From 1b9b18c2cb3c0b0ae5326440235613c3ca28ba47 Mon Sep 17 00:00:00 2001 From: zhengxie Date: Thu, 26 May 2016 15:55:57 +0800 Subject: [PATCH 1/2] Add setting to enable/disable constance(web settings) --- requirements.txt | 2 +- seahub/base/context_processors.py | 1 + seahub/settings.py | 2 ++ seahub/templates/js/sysadmin-templates.html | 2 ++ seahub/templates/sysadmin/base.html | 2 ++ seahub/views/sysadmin.py | 3 +++ .../seahub/views/sysadmin/test_sys_settings.py | 18 ++++++++++++++++++ 7 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 tests/seahub/views/sysadmin/test_sys_settings.py diff --git a/requirements.txt b/requirements.txt index bcaaddbcb8..52f6ab755e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,6 +8,6 @@ django-compressor==1.4 django-post-office==2.0.3 django-statici18n==1.1.2 djangorestframework==3.3.1 -git+git://github.com/haiwen/django-constance.git@bde7f7cdfd0ed1631a6817fd4cd76f37bf54fe35#egg=django-constance[database] +git+git://github.com/haiwen/django-constance.git@751f7f8b60651a2828e4a535a47fc05b907883da#egg=django-constance[database] openpyxl==2.3.0 pytz==2015.7 diff --git a/seahub/base/context_processors.py b/seahub/base/context_processors.py index 18b90e98d4..17566a5d87 100644 --- a/seahub/base/context_processors.py +++ b/seahub/base/context_processors.py @@ -89,4 +89,5 @@ def base(request): 'multi_institution': getattr(dj_settings, 'MULTI_INSTITUTION', False), 'search_repo_id': search_repo_id, 'SITE_ROOT': SITE_ROOT, + 'constance_enabled': dj_settings.CONSTANCE_ENABLED, } diff --git a/seahub/settings.py b/seahub/settings.py index 1a92f69ec8..60ed588c26 100644 --- a/seahub/settings.py +++ b/seahub/settings.py @@ -212,6 +212,8 @@ INSTALLED_APPS = ( 'seahub.password_session', ) +# Enabled or disable constance(web settings). +CONSTANCE_ENABLED = True CONSTANCE_BACKEND = 'constance.backends.database.DatabaseBackend' CONSTANCE_DATABASE_CACHE_BACKEND = 'default' diff --git a/seahub/templates/js/sysadmin-templates.html b/seahub/templates/js/sysadmin-templates.html index 3ed6b0213d..005846667c 100644 --- a/seahub/templates/js/sysadmin-templates.html +++ b/seahub/templates/js/sysadmin-templates.html @@ -8,9 +8,11 @@
  • {% trans "Devices" %}
  • + {% if constance_enabled %}
  • {% trans "Settings" %}
  • + {% endif %}
  • {% trans "Libraries" %}
  • diff --git a/seahub/templates/sysadmin/base.html b/seahub/templates/sysadmin/base.html index 1809df959d..ff6ef6cd0a 100644 --- a/seahub/templates/sysadmin/base.html +++ b/seahub/templates/sysadmin/base.html @@ -11,9 +11,11 @@
  • {% trans "Devices" %}
  • + {% if constance_enabled %}
  • {% trans "Settings" %}
  • + {% endif %}
  • {% trans "Libraries" %}
  • diff --git a/seahub/views/sysadmin.py b/seahub/views/sysadmin.py index 52feb9591f..b63175d515 100644 --- a/seahub/views/sysadmin.py +++ b/seahub/views/sysadmin.py @@ -11,6 +11,7 @@ import csv, chardet, StringIO import time from constance import config +from django.conf import settings as dj_settings from django.core.urlresolvers import reverse from django.contrib import messages from django.http import HttpResponse, Http404, HttpResponseRedirect, HttpResponseNotAllowed @@ -2181,6 +2182,8 @@ def sys_sudo_mode(request): def sys_settings(request): """List and change seahub settings in admin panel. """ + if not dj_settings.CONSTANCE_ENABLED: + raise Http404 DIGIT_WEB_SETTINGS = ( 'DISABLE_SYNC_WITH_ANY_FOLDER', 'ENABLE_SIGNUP', diff --git a/tests/seahub/views/sysadmin/test_sys_settings.py b/tests/seahub/views/sysadmin/test_sys_settings.py new file mode 100644 index 0000000000..e8be915551 --- /dev/null +++ b/tests/seahub/views/sysadmin/test_sys_settings.py @@ -0,0 +1,18 @@ +from django.core.urlresolvers import reverse + +from seahub.test_utils import BaseTestCase + + +class SysSettingsTest(BaseTestCase): + def setUp(self): + self.url = reverse('sys_settings') + self.login_as(self.admin) + + def test_can_render(self): + resp = self.client.get(self.url) + self.assertEqual(200, resp.status_code) + + def test_can_not_render_if_setting_disabled(self): + with self.settings(CONSTANCE_ENABLED=False): + resp = self.client.get(self.url) + self.assertEqual(404, resp.status_code) From 346c2284956c09e1b4c4480d52747dfd8f7fbce1 Mon Sep 17 00:00:00 2001 From: zhengxie Date: Fri, 27 May 2016 10:32:36 +0800 Subject: [PATCH 2/2] Add ENABLE_SETTINGS_VIA_WEB setting and remoke CONSTANCE_ENABLED --- seahub/settings.py | 4 +++- seahub/views/sysadmin.py | 2 +- tests/seahub/views/sysadmin/test_sys_settings.py | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/seahub/settings.py b/seahub/settings.py index 60ed588c26..76830866cf 100644 --- a/seahub/settings.py +++ b/seahub/settings.py @@ -213,7 +213,7 @@ INSTALLED_APPS = ( ) # Enabled or disable constance(web settings). -CONSTANCE_ENABLED = True +ENABLE_SETTINGS_VIA_WEB = True CONSTANCE_BACKEND = 'constance.backends.database.DatabaseBackend' CONSTANCE_DATABASE_CACHE_BACKEND = 'default' @@ -624,8 +624,10 @@ if 'win32' in sys.platform: fp.write("%d\n" % os.getpid()) fp.close() +# Following settings are private, can not be overwrite. INNER_FILE_SERVER_ROOT = 'http://127.0.0.1:' + FILE_SERVER_PORT +CONSTANCE_ENABLED = ENABLE_SETTINGS_VIA_WEB CONSTANCE_CONFIG = { 'SERVICE_URL': (SERVICE_URL,''), 'FILE_SERVER_ROOT': (FILE_SERVER_ROOT,''), diff --git a/seahub/views/sysadmin.py b/seahub/views/sysadmin.py index b63175d515..d9004558d7 100644 --- a/seahub/views/sysadmin.py +++ b/seahub/views/sysadmin.py @@ -2182,7 +2182,7 @@ def sys_sudo_mode(request): def sys_settings(request): """List and change seahub settings in admin panel. """ - if not dj_settings.CONSTANCE_ENABLED: + if not dj_settings.ENABLE_SETTINGS_VIA_WEB: raise Http404 DIGIT_WEB_SETTINGS = ( diff --git a/tests/seahub/views/sysadmin/test_sys_settings.py b/tests/seahub/views/sysadmin/test_sys_settings.py index e8be915551..1d041d8947 100644 --- a/tests/seahub/views/sysadmin/test_sys_settings.py +++ b/tests/seahub/views/sysadmin/test_sys_settings.py @@ -13,6 +13,6 @@ class SysSettingsTest(BaseTestCase): self.assertEqual(200, resp.status_code) def test_can_not_render_if_setting_disabled(self): - with self.settings(CONSTANCE_ENABLED=False): + with self.settings(ENABLE_SETTINGS_VIA_WEB=False): resp = self.client.get(self.url) self.assertEqual(404, resp.status_code)