12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- from django.contrib import messages
- from django.shortcuts import redirect
- from django.utils.translation import gettext as _
- from ...admin.views import render
- from ...admin.views.generic import AdminView
- from ..models import Setting
- from .forms import (
- ChangeAnalyticsSettingsForm,
- ChangeCaptchaSettingsForm,
- ChangeGeneralSettingsForm,
- ChangeOAuth2SettingsForm,
- ChangeThreadsSettingsForm,
- ChangeUsersSettingsForm,
- )
- def index(request):
- return render(request, "misago/admin/conf/index.html")
- class ChangeSettingsView(AdminView):
- root_link = None # Unused by change config views
- template_name = None
- form_class = None
- def get_template_name(self, request):
- return self.template_name
- def dispatch(self, request, *args, **kwargs):
- settings = self.get_settings(self.form_class.settings)
- initial = self.get_initial_form_data(settings)
- form = self.form_class(request=request, initial=initial)
- if request.method == "POST":
- form = self.form_class(
- request.POST, request.FILES, request=request, initial=initial
- )
- if form.is_valid():
- form.save(settings)
- messages.success(request, _("Settings have been saved."))
- return redirect(request.path_info)
- return self.render(request, {"form": form, "form_settings": settings})
- def get_settings(self, form_settings):
- settings = {}
- for setting in Setting.objects.filter(setting__in=form_settings):
- settings[setting.setting] = setting
- if len(settings) != len(form_settings):
- not_found_settings = list(
- set(settings.keys()).symmetric_difference(set(form_settings))
- )
- raise ValueError(
- "Some of settings defined in form could not be found: %s"
- % (", ".join(not_found_settings))
- )
- return settings
- def get_initial_form_data(self, settings):
- return {key: setting.value for key, setting in settings.items()}
- class ChangeAnalyticsSettingsView(ChangeSettingsView):
- form_class = ChangeAnalyticsSettingsForm
- template_name = "misago/admin/conf/analytics_settings.html"
- class ChangeCaptchaSettingsView(ChangeSettingsView):
- form_class = ChangeCaptchaSettingsForm
- template_name = "misago/admin/conf/captcha_settings.html"
- class ChangeGeneralSettingsView(ChangeSettingsView):
- form_class = ChangeGeneralSettingsForm
- template_name = "misago/admin/conf/general_settings.html"
- class ChangeOAuth2SettingsView(ChangeSettingsView):
- form_class = ChangeOAuth2SettingsForm
- template_name = "misago/admin/conf/oauth2_settings.html"
- class ChangeThreadsSettingsView(ChangeSettingsView):
- form_class = ChangeThreadsSettingsForm
- template_name = "misago/admin/conf/threads_settings.html"
- class ChangeUsersSettingsView(ChangeSettingsView):
- form_class = ChangeUsersSettingsForm
- template_name = "misago/admin/conf/users_settings.html"
|