settings.py
41 lines
| 1.2 KiB
| text/x-python
|
PythonLexer
neko259
|
r547 | from django.db import transaction | ||
from django.shortcuts import render, redirect | ||||
neko259
|
r730 | from boards.abstracts.settingsmanager import get_settings_manager | ||
neko259
|
r722 | from boards.views.base import BaseBoardView, CONTEXT_FORM | ||
neko259
|
r729 | from boards.forms import SettingsForm, PlainErrorList | ||
neko259
|
r547 | |||
neko259
|
r900 | FORM_THEME = 'theme' | ||
neko259
|
r733 | CONTEXT_HIDDEN_TAGS = 'hidden_tags' | ||
neko259
|
r561 | |||
neko259
|
r547 | class SettingsView(BaseBoardView): | ||
def get(self, request): | ||||
neko259
|
r919 | params = self.get_context_data() | ||
neko259
|
r730 | settings_manager = get_settings_manager(request) | ||
neko259
|
r547 | |||
neko259
|
r728 | selected_theme = settings_manager.get_theme() | ||
neko259
|
r547 | |||
neko259
|
r900 | form = SettingsForm(initial={FORM_THEME: selected_theme}, | ||
neko259
|
r729 | error_class=PlainErrorList) | ||
neko259
|
r547 | |||
neko259
|
r919 | params[CONTEXT_FORM] = form | ||
params[CONTEXT_HIDDEN_TAGS] = settings_manager.get_hidden_tags() | ||||
neko259
|
r547 | |||
neko259
|
r872 | # TODO Use dict here | ||
neko259
|
r919 | return render(request, 'boards/settings.html', params) | ||
neko259
|
r547 | |||
def post(self, request): | ||||
neko259
|
r730 | settings_manager = get_settings_manager(request) | ||
neko259
|
r547 | |||
with transaction.atomic(): | ||||
neko259
|
r729 | form = SettingsForm(request.POST, error_class=PlainErrorList) | ||
neko259
|
r547 | |||
if form.is_valid(): | ||||
neko259
|
r900 | selected_theme = form.cleaned_data[FORM_THEME] | ||
neko259
|
r547 | |||
neko259
|
r728 | settings_manager.set_theme(selected_theme) | ||
neko259
|
r547 | |||
return redirect('settings') | ||||