diff --git a/comic/views.py b/comic/views.py
index d0a9cb7..7ed3d38 100644
--- a/comic/views.py
+++ b/comic/views.py
@@ -6,6 +6,7 @@ from django.contrib.auth.decorators import login_required
from comic.models import Setting, ComicBook, ComicStatus
from util import generate_breadcrumbs
+from forms import SettingsForm
from os import path
@@ -27,26 +28,40 @@ def comic_list(request, comic_path=''):
})
return render(request, 'comic/comic_list.html', context)
+
@login_required
def settings_page(request):
- obj, created = Setting.objects.get_or_create(name='BASE_DIR')
error_message = ''
+
if request.POST:
- if path.isdir(request.POST['base_directory']):
- obj.value = request.POST['base_directory']
- obj.save()
- else:
- error_message = 'This is not a valid Directory'
- elif obj.value == '':
- error_message = 'Base Directory cannot be blank'
- elif not path.isdir(obj.value):
- error_message = 'Base Directory does not exist'
+ 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'
+ 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()
+ form = SettingsForm(initial=SettingsForm.get_initial_values())
context = RequestContext(request, {
- 'base_dir': obj,
'error_message': error_message,
+ 'form': form,
})
return render(request, 'comic/settings_page.html', context)
+
@login_required
def read_comic(request, comic_path, page):
base_dir = Setting.objects.get(name='BASE_DIR').value
diff --git a/comic_auth/forms.py b/comic_auth/forms.py
new file mode 100644
index 0000000..75eb739
--- /dev/null
+++ b/comic_auth/forms.py
@@ -0,0 +1,44 @@
+from django import forms
+from captcha.fields import ReCaptchaField
+from comic.models import Setting
+
+class LoginForm(forms.Form):
+
+ username = forms.CharField(max_length=50,
+ label='',
+ widget=forms.TextInput(
+ attrs={
+ 'class': 'form-control',
+ 'placeholder': 'Username',
+ 'autofocus': True,
+ 'required': True,
+ }
+ ))
+ password = forms.CharField(label='Password',
+ widget=forms.PasswordInput(
+ attrs={
+ 'class': 'form-control',
+ 'placeholder': 'Username',
+ 'required': True,
+ }
+ ))
+
+ def __init__(self, *args, **kwargs):
+ super(LoginForm, self).__init__(*args, **kwargs)
+ setting, created = Setting.objects.get_or_create(name='RECAPTCHA')
+ if created:
+ setting.value = '0'
+ if setting.value == '1':
+ public_key = Setting.objects.get(name='RECAPTCHA_PUBLIC_KEY').value
+ private_key = Setting.objects.get(name='RECAPTCHA_PRIVATE_KEY').value
+
+ captcha = ReCaptchaField(
+ label='',
+ public_key=public_key,
+ private_key=private_key,
+ attrs={
+ 'theme': 'white',
+ 'class': 'form-control',
+ }
+ )
+ self.fields['captcha'] = captcha
\ No newline at end of file
diff --git a/comic_auth/templates/comic_auth/login.html b/comic_auth/templates/comic_auth/login.html
index cead66f..7ab6502 100644
--- a/comic_auth/templates/comic_auth/login.html
+++ b/comic_auth/templates/comic_auth/login.html
@@ -1,5 +1,5 @@
{% extends "base.html" %}
-{% block title %}CBreader Login{% endblock %}
+{% block title %}CBWebReader - Login{% endblock %}
{% block content %}
@@ -9,10 +9,7 @@
diff --git a/comic_auth/views.py b/comic_auth/views.py
index ac98233..70f53c9 100644
--- a/comic_auth/views.py
+++ b/comic_auth/views.py
@@ -1,25 +1,38 @@
from django.shortcuts import render, redirect, RequestContext
from django.contrib.auth import authenticate, login, logout
+from comic_auth.forms import LoginForm
def comic_login(request):
if request.POST:
- user = authenticate(username=request.POST['user'],
- password=request.POST['password'])
- if user is not None:
- if user.is_active:
- login(request, user)
- if request.GET.has_key('next'):
- return redirect(request.GET['next'])
+ form = LoginForm(request.POST)
+ if form.is_valid():
+ user = authenticate(username=form.cleaned_data['username'],
+ password=form.cleaned_data['password'])
+ if user is not None:
+ if user.is_active:
+ login(request, user)
+ if request.GET.has_key('next'):
+ return redirect(request.GET['next'])
+ else:
+ return redirect('/comic/')
else:
- return redirect('/comic/')
- else:
- context = RequestContext(request, {
- 'error': True
- })
- return render(request, 'comic_auth/login.html', context)
+ context = RequestContext(request, {
+ 'error': True,
+
+ })
+ return render(request, 'comic_auth/login.html', context)
+ else:
+ context = RequestContext(request, {
+ 'error': True,
+ 'form': form
+ })
+ return render(request, 'comic_auth/login.html', context)
else:
- context = RequestContext(request, {})
+ form = LoginForm()
+ context = RequestContext(request, {
+ 'form': form
+ })
return render(request, 'comic_auth/login.html', context)
def comic_logout(request):