From c5fdf7c215fabfd9e9f29b8ca07b7861bc3d15d5 Mon Sep 17 00:00:00 2001 From: Tobias Kunze Date: Thu, 27 Oct 2016 10:48:54 +0200 Subject: [PATCH] Include global settings in event/organizer settings Also, add tests --- src/pretix/base/models/organizer.py | 3 +- src/pretix/base/settings.py | 8 ++++ src/pretix/control/forms/global_settings.py | 10 +--- src/pretix/control/permissions.py | 6 +-- .../pretixcontrol/global_settings.html | 2 +- src/pretix/control/views/global_settings.py | 2 +- src/tests/base/test_settings.py | 47 ++++++++++++++++++- src/tests/control/test_permissions.py | 1 + 8 files changed, 62 insertions(+), 17 deletions(-) diff --git a/src/pretix/base/models/organizer.py b/src/pretix/base/models/organizer.py index b2330e61c..ff592194e 100644 --- a/src/pretix/base/models/organizer.py +++ b/src/pretix/base/models/organizer.py @@ -58,7 +58,8 @@ class Organizer(LoggedModel): """ Returns an object representing this organizer's settings """ - return SettingsProxy(self, type=OrganizerSetting) + from pretix.base.settings import GlobalSettingsObject + return SettingsProxy(self, type=OrganizerSetting, parent=GlobalSettingsObject()) def get_cache(self) -> "pretix.base.cache.ObjectRelatedCache": """ diff --git a/src/pretix/base/settings.py b/src/pretix/base/settings.py index c52838041..c2a77ac4b 100644 --- a/src/pretix/base/settings.py +++ b/src/pretix/base/settings.py @@ -11,6 +11,7 @@ from django.db.models import Model from django.utils.translation import ugettext_noop from pretix.base.i18n import LazyI18nString +from pretix.base.models.settings import GlobalSetting DEFAULTS = { 'max_items_per_order': { @@ -511,3 +512,10 @@ class SettingsSandbox: def set(self, key: str, value: Any): self._event.settings.set(self._convert_key(key), value) + + +class GlobalSettingsObject: + def __init__(self): + self.settings = SettingsProxy(self, type=GlobalSetting) + self.setting_objects = GlobalSetting.objects + self.slug = 'GLOBALSETTINGS' diff --git a/src/pretix/control/forms/global_settings.py b/src/pretix/control/forms/global_settings.py index 7c073b43b..c45372740 100644 --- a/src/pretix/control/forms/global_settings.py +++ b/src/pretix/control/forms/global_settings.py @@ -4,18 +4,10 @@ from django.utils.translation import ugettext_lazy as _ from pretix.base.forms import SettingsForm from pretix.base.i18n import I18nFormField, I18nTextInput -from pretix.base.models.settings import GlobalSetting -from pretix.base.settings import SettingsProxy +from pretix.base.settings import GlobalSettingsObject from pretix.base.signals import register_global_settings -class GlobalSettingsObject: - def __init__(self): - self.settings = SettingsProxy(self, type=GlobalSetting) - self.setting_objects = GlobalSetting.objects - self.slug = 'GLOBALSETTINGS' - - class GlobalSettingsForm(SettingsForm): def __init__(self, *args, **kwargs): self.obj = GlobalSettingsObject() diff --git a/src/pretix/control/permissions.py b/src/pretix/control/permissions.py index 8b24f810a..11da41c8e 100644 --- a/src/pretix/control/permissions.py +++ b/src/pretix/control/permissions.py @@ -92,7 +92,7 @@ class OrganizerPermissionRequiredMixin: return organizer_permission_required(cls.permission)(view) -def administrator_permission_required(permission): +def administrator_permission_required(): """ This view decorator rejects all requests with a 403 response which are not from users with the is_superuser flag. @@ -114,9 +114,7 @@ class AdministratorPermissionRequiredMixin: This mixin is equivalent to the administrator_permission_required view decorator but is in a form suitable for class-based views. """ - permission = '' - @classmethod def as_view(cls, **initkwargs): view = super(AdministratorPermissionRequiredMixin, cls).as_view(**initkwargs) - return administrator_permission_required(cls.permission)(view) + return administrator_permission_required()(view) diff --git a/src/pretix/control/templates/pretixcontrol/global_settings.html b/src/pretix/control/templates/pretixcontrol/global_settings.html index e596cd034..0d670344e 100644 --- a/src/pretix/control/templates/pretixcontrol/global_settings.html +++ b/src/pretix/control/templates/pretixcontrol/global_settings.html @@ -8,7 +8,7 @@
{% csrf_token %} {% bootstrap_form_errors form %} - {% bootstrap_form form %} + {% bootstrap_form form layout='horizontal' %}