views.py 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. from django.contrib import messages
  2. from django.shortcuts import redirect
  3. from django.utils.translation import ugettext as _
  4. from misago.admin.views import render as mi_render
  5. from . import db_settings
  6. from .forms import ChangeSettingsForm
  7. from .models import SettingsGroup
  8. def render(request, template, context=None):
  9. context = context or {}
  10. context['settings_groups'] = SettingsGroup.objects.ordered_alphabetically()
  11. if not 'active_group' in context:
  12. context['active_group'] = {'key': None}
  13. return mi_render(request, template, context)
  14. def index(request):
  15. return render(request, 'misago/admin/conf/index.html')
  16. def group(request, key):
  17. try:
  18. active_group = SettingsGroup.objects.get(key=key)
  19. except SettingsGroup.DoesNotExist:
  20. messages.error(request, _("Settings group could not be found."))
  21. return redirect('misago:admin:system:settings:index')
  22. fieldsets = ChangeSettingsForm(group=active_group)
  23. if request.method == 'POST':
  24. fieldsets = ChangeSettingsForm(request.POST, group=active_group)
  25. valid_fieldsets = len([True for fieldset in fieldsets if
  26. fieldset['form'].is_valid()])
  27. if len(fieldsets) == valid_fieldsets:
  28. new_values = {}
  29. for fieldset in fieldsets:
  30. new_values.update(fieldset['form'].cleaned_data)
  31. for setting in active_group.setting_set.all():
  32. setting.value = new_values[setting.setting]
  33. setting.save(update_fields=['dry_value'])
  34. db_settings.flush_cache()
  35. messages.success(
  36. request, _("Changes in settings have been saved!"))
  37. return redirect('misago:admin:system:settings:group', key=key)
  38. use_single_form_template = (
  39. len(fieldsets) == 1 and not fieldsets[0]['legend'])
  40. return render(request, 'misago/admin/conf/group.html',{
  41. 'active_group': active_group,
  42. 'fieldsets': fieldsets,
  43. 'use_single_form_template': use_single_form_template,
  44. })