settings.py
53 lines
| 1.8 KiB
| text/x-python
|
PythonLexer
neko259
|
r547 | from django.db import transaction | ||
from django.shortcuts import render, redirect | ||||
neko259
|
r690 | from boards import utils | ||
neko259
|
r547 | |||
neko259
|
r722 | from boards.views.base import BaseBoardView, CONTEXT_FORM | ||
neko259
|
r547 | from boards.forms import SettingsForm, ModeratorSettingsForm, PlainErrorList | ||
neko259
|
r565 | from boards.models.post import SETTING_MODERATE | ||
neko259
|
r547 | |||
neko259
|
r561 | |||
neko259
|
r547 | class SettingsView(BaseBoardView): | ||
def get(self, request): | ||||
context = self.get_context_data(request=request) | ||||
neko259
|
r690 | user = utils.get_user(request) | ||
neko259
|
r547 | is_moderator = user.is_moderator() | ||
neko259
|
r690 | selected_theme = utils.get_theme(request, user) | ||
neko259
|
r547 | |||
if is_moderator: | ||||
neko259
|
r561 | form = ModeratorSettingsForm(initial={ | ||
'theme': selected_theme, | ||||
neko259
|
r690 | 'moderate': user.get_setting(SETTING_MODERATE) and \ | ||
user.is_moderator() | ||||
neko259
|
r561 | }, error_class=PlainErrorList) | ||
neko259
|
r547 | else: | ||
form = SettingsForm(initial={'theme': selected_theme}, | ||||
error_class=PlainErrorList) | ||||
neko259
|
r722 | context[CONTEXT_FORM] = form | ||
neko259
|
r547 | |||
return render(request, 'boards/settings.html', context) | ||||
def post(self, request): | ||||
neko259
|
r690 | user = utils.get_user(request) | ||
neko259
|
r547 | is_moderator = user.is_moderator() | ||
with transaction.atomic(): | ||||
if is_moderator: | ||||
form = ModeratorSettingsForm(request.POST, | ||||
error_class=PlainErrorList) | ||||
else: | ||||
form = SettingsForm(request.POST, error_class=PlainErrorList) | ||||
if form.is_valid(): | ||||
selected_theme = form.cleaned_data['theme'] | ||||
user.save_setting('theme', selected_theme) | ||||
if is_moderator: | ||||
moderate = form.cleaned_data['moderate'] | ||||
user.save_setting(SETTING_MODERATE, moderate) | ||||
return redirect('settings') | ||||