misc: add singleton accessor to site settings (#63223)

This commit is contained in:
Frédéric Péters 2022-03-26 16:26:52 +01:00
parent 07d52f797c
commit 6f040993b2
6 changed files with 14 additions and 7 deletions

View File

@ -2298,7 +2298,7 @@ class SiteSettings(models.Model):
@classmethod
def export_json(cls):
settings = SiteSettings.objects.get()
settings = cls.get_singleton()
return {
'initial_login_page_path': settings.initial_login_page_path,
'welcome_page_path': settings.welcome_page_path,
@ -2307,3 +2307,10 @@ class SiteSettings(models.Model):
@classmethod
def import_json(cls, data):
SiteSettings.objects.update(**data)
@classmethod
def get_singleton(cls):
try:
return cls.objects.get()
except cls.DoesNotExist:
return cls()

View File

@ -1080,7 +1080,7 @@ class SiteSettingsView(UpdateView):
success_url = reverse_lazy('combo-manager-homepage')
def get_object(self):
return SiteSettings.objects.get()
return SiteSettings.get_singleton()
site_settings = SiteSettingsView.as_view()

View File

@ -464,7 +464,7 @@ def page(request):
if not parts:
parts = ['index']
site_settings = SiteSettings.objects.get()
site_settings = SiteSettings.get_singleton()
if (
parts == ['index']
and (site_settings.initial_login_page or site_settings.initial_login_page_path)

View File

@ -489,7 +489,7 @@ def test_import_export_payment(app):
def test_import_export_settings(app):
site_settings = SiteSettings.objects.get()
site_settings = SiteSettings.get_singleton()
site_settings.initial_login_page_path = '/test/'
site_settings.welcome_page_path = '/hop/'
site_settings.save()

View File

@ -2801,7 +2801,7 @@ def test_site_settings(app, admin_user):
resp.form['initial_login_page_path'] = '/initial-login/'
resp.form.submit()
site_settings = SiteSettings.objects.get()
site_settings = SiteSettings.get_singleton()
assert site_settings.welcome_page_path == '/welcome/'
assert site_settings.initial_login_page_path == '/initial-login/'

View File

@ -651,7 +651,7 @@ def test_initial_login_page(app, admin_user):
page = Page(title='Initial Login', slug='initial-login', template_name='standard', public=False)
page.save()
site_settings = SiteSettings.objects.get()
site_settings = SiteSettings.get_singleton()
site_settings.initial_login_page_path = '/initial-login/'
site_settings.save()
@ -721,7 +721,7 @@ def test_welcome_page(app, admin_user):
page = Page(title='Welcome', slug='welcome', template_name='standard')
page.save()
site_settings = SiteSettings.objects.get()
site_settings = SiteSettings.get_singleton()
site_settings.welcome_page_path = '/welcome/'
site_settings.save()