123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- from django.contrib import messages
- from django.shortcuts import redirect
- from django.utils.translation import gettext as _
- from ..admin.views import render as mi_render
- from .cache import clear_settings_cache
- from .forms import ChangeSettingsForm
- from .models import SettingsGroup
- def render(request, template, context=None):
- context = context or {}
- context["settings_groups"] = SettingsGroup.objects.ordered_alphabetically()
- if not "active_group" in context:
- context["active_group"] = {"key": None}
- return mi_render(request, template, context)
- def index(request):
- return render(request, "misago/admin/conf/index.html")
- def group(request, key):
- try:
- active_group = SettingsGroup.objects.get(key=key)
- except SettingsGroup.DoesNotExist:
- messages.error(request, _("Settings group could not be found."))
- return redirect("misago:admin:system:settings:index")
- fieldsets = ChangeSettingsForm(group=active_group)
- if request.method == "POST":
- fieldsets = ChangeSettingsForm(request.POST, group=active_group)
- valid_fieldsets = len(
- [True for fieldset in fieldsets if fieldset["form"].is_valid()]
- )
- if len(fieldsets) == valid_fieldsets:
- new_values = {}
- for fieldset in fieldsets:
- new_values.update(fieldset["form"].cleaned_data)
- for setting in active_group.setting_set.all():
- setting.value = new_values[setting.setting]
- setting.save(update_fields=["dry_value"])
- clear_settings_cache()
- messages.success(request, _("Changes in settings have been saved!"))
- return redirect("misago:admin:system:settings:group", key=key)
- use_single_form_template = len(fieldsets) == 1 and not fieldsets[0]["legend"]
- return render(
- request,
- "misago/admin/conf/group.html",
- {
- "active_group": active_group,
- "fieldsets": fieldsets,
- "use_single_form_template": use_single_form_template,
- },
- )
|