From 744710e7d388528a7cfa0235571060efd6712e13 Mon Sep 17 00:00:00 2001 From: ajurna Date: Fri, 24 Jul 2015 10:22:24 +0100 Subject: [PATCH] moved some validation from settings page to form. --- comic/forms.py | 9 +++++++++ comic/views.py | 29 ++++++++++++++--------------- 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/comic/forms.py b/comic/forms.py index 2baea92..4366297 100644 --- a/comic/forms.py +++ b/comic/forms.py @@ -1,5 +1,8 @@ from django import forms from django.contrib.auth.models import User + +from os import path + from comic.models import Setting @@ -174,6 +177,12 @@ class SettingsForm(forms.Form): } )) + def clean_base_dir(self): + data = self.cleaned_data['base_dir'] + if not path.isdir(data): + raise forms.ValidationError('This is not a valid Directory') + return data + @staticmethod def get_initial_values(): base_dir, created = Setting.objects.get_or_create(name='BASE_DIR') diff --git a/comic/views.py b/comic/views.py index e558bf2..24cfdfc 100644 --- a/comic/views.py +++ b/comic/views.py @@ -140,33 +140,32 @@ def user_add_page(request): @user_passes_test(lambda u: u.is_superuser) def settings_page(request): - error_message = '' + success_message = [] if request.POST: form = SettingsForm(request.POST) if form.is_valid(): - if path.isdir(form.cleaned_data['base_dir']): - base_dir = Setting.objects.get(name='BASE_DIR') - base_dir.value = form.cleaned_data['base_dir'] - base_dir.save() - else: - error_message = 'This is not a valid Directory' + base_dir = Setting.objects.get(name='BASE_DIR') + base_dir.value = form.cleaned_data['base_dir'] + base_dir.save() recap = Setting.objects.get(name='RECAPTCHA') if form.cleaned_data['recaptcha']: recap.value = '1' else: recap.value = '0' recap.save() - rprik = Setting.objects.get(name='RECAPTCHA_PRIVATE_KEY') - rprik.value = form.cleaned_data['recaptcha_private_key'] - rprik.save() - rpubk = Setting.objects.get(name='RECAPTCHA_PUBLIC_KEY') - rpubk.value = form.cleaned_data['recaptcha_public_key'] - rpubk.save() + recaptcha_private_key = Setting.objects.get(name='RECAPTCHA_PRIVATE_KEY') + recaptcha_private_key.value = form.cleaned_data['recaptcha_private_key'] + recaptcha_private_key.save() + recaptcha_public_key = Setting.objects.get(name='RECAPTCHA_PUBLIC_KEY') + recaptcha_public_key.value = form.cleaned_data['recaptcha_public_key'] + recaptcha_public_key.save() + success_message.append('Settings updated.') form = SettingsForm(initial=SettingsForm.get_initial_values()) context = RequestContext(request, { - 'error_message': error_message, + 'error_message': form.errors, + 'success_message': '
'.join(success_message), 'form': form, - 'menu': Menu(request.user, 'Settings') + 'menu': Menu(request.user, 'Settings'), }) return render(request, 'comic/settings_page.html', context)