from django.db import transaction from django.shortcuts import render, redirect from boards.abstracts.settingsmanager import get_settings_manager from boards.views.base import BaseBoardView, CONTEXT_FORM from boards.forms import SettingsForm, PlainErrorList CONTEXT_HIDDEN_TAGS = 'hidden_tags' class SettingsView(BaseBoardView): def get(self, request): context = self.get_context_data(request=request) settings_manager = get_settings_manager(request) selected_theme = settings_manager.get_theme() form = SettingsForm(initial={'theme': selected_theme}, error_class=PlainErrorList) context[CONTEXT_FORM] = form context[CONTEXT_HIDDEN_TAGS] = settings_manager.get_hidden_tags() return render(request, 'boards/settings.html', context) def post(self, request): settings_manager = get_settings_manager(request) with transaction.atomic(): form = SettingsForm(request.POST, error_class=PlainErrorList) if form.is_valid(): selected_theme = form.cleaned_data['theme'] settings_manager.set_theme(selected_theme) return redirect('settings')