123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- 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 (
- ChangeCaptchaSettingsForm,
- ChangeGeneralSettingsForm,
- 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 = None
- def final_template(self):
- return self.template_name
- def dispatch(self, request, *args, **kwargs):
- settings = self.get_settings(self.form.settings)
- initial = self.get_initial_form_data(settings)
- form = self.form(initial=initial)
- if request.method == "POST":
- form = self.form(request.POST, request.FILES, initial=initial)
- if form.is_valid():
- form.save(settings)
- messages.success(request, _("Changes in settings have been saved!"))
- return redirect(request.path_info)
- return self.render(request, {"form": form})
- 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()) - set(form_settings))
- raise ValueError(
- "Some of settings defined in form could not be found: "
- ", ".join(not_found_settings)
- )
- return settings
- def get_initial_form_data(self, settings):
- return {key: setting.value for key, setting in settings.items()}
- class ChangeCaptchaSettingsView(ChangeSettingsView):
- form = ChangeCaptchaSettingsForm
- template_name = "misago/admin/conf/captcha_settings.html"
- class ChangeGeneralSettingsView(ChangeSettingsView):
- form = ChangeGeneralSettingsForm
- template_name = "misago/admin/conf/general_settings.html"
- class ChangeThreadsSettingsView(ChangeSettingsView):
- form = ChangeThreadsSettingsForm
- template_name = "misago/admin/conf/threads_settings.html"
- class ChangeUsersSettingsView(ChangeSettingsView):
- form = ChangeUsersSettingsForm
- template_name = "misago/admin/conf/users_settings.html"
|