added account page to change password and email address.

This commit is contained in:
2015-07-08 16:08:41 +01:00
parent 20367d3b61
commit 132625f521
5 changed files with 75 additions and 2 deletions

View File

@@ -1,6 +1,36 @@
from django import forms from django import forms
from comic.models import Setting from comic.models import Setting
class AccountForm(forms.Form):
username = forms.CharField(help_text='Username',
required=False,
widget=forms.TextInput(
attrs={
'class': 'form-control disabled',
'readonly': True,
}
))
email = forms.CharField(help_text='Email Address',
widget=forms.TextInput(
attrs={
'class': 'form-control'
}
))
password1 = forms.CharField(help_text='New Password',
required=False,
widget=forms.PasswordInput(
attrs={
'class': 'form-control',
}
))
password2 = forms.CharField(help_text='New Password Confirmation',
required=False,
widget=forms.PasswordInput(
attrs={
'class': 'form-control',
}
))
class SettingsForm(forms.Form): class SettingsForm(forms.Form):
base_dir = forms.CharField(help_text='Base Directory', base_dir = forms.CharField(help_text='Base Directory',

View File

@@ -4,7 +4,10 @@
{% block content %} {% block content %}
{% if error_message %} {% if error_message %}
<div class="alert alert-danger" role="alert">{{ error_message }}</div> <div class="alert alert-danger" role="alert">{{ error_message|safe }}</div>
{% endif %}
{% if success_message %}
<div class="alert alert-success" role="alert">{{ success_message|safe }}</div>
{% endif %} {% endif %}
<form method="POST"> <form method="POST">
{% csrf_token %} {% csrf_token %}

View File

@@ -5,6 +5,7 @@ from . import views
urlpatterns = [ urlpatterns = [
url(r'^$', views.comic_list, name='index'), url(r'^$', views.comic_list, name='index'),
url(r'^settings/$', views.settings_page, name='settings'), url(r'^settings/$', views.settings_page, name='settings'),
url(r'^account/$', views.account_page, name='account'),
url(r'^(?P<comic_path>[\w]+)/$', views.comic_list, name='comic_list'), url(r'^(?P<comic_path>[\w]+)/$', views.comic_list, name='comic_list'),
url(r'^read/(?P<comic_path>[\w]+)/(?P<page>[0-9]+)/$', views.read_comic, name='read_comic'), url(r'^read/(?P<comic_path>[\w]+)/(?P<page>[0-9]+)/$', views.read_comic, name='read_comic'),
url(r'^read/(?P<comic_path>[\w]+)/(?P<page>[0-9]+)/img$', views.get_image, name='get_image'), url(r'^read/(?P<comic_path>[\w]+)/(?P<page>[0-9]+)/img$', views.get_image, name='get_image'),

View File

@@ -13,6 +13,7 @@ class Menu:
""" """
self.menu_items = OrderedDict() self.menu_items = OrderedDict()
self.menu_items['Browse'] = '/comic/' self.menu_items['Browse'] = '/comic/'
self.menu_items['Account'] = '/comic/account/'
self.menu_items['Settings'] = '/comic/settings/' self.menu_items['Settings'] = '/comic/settings/'
self.menu_items['Logout'] = '/logout/' self.menu_items['Logout'] = '/logout/'
self.current_page = page self.current_page = page

View File

@@ -3,10 +3,12 @@ from django.template import RequestContext
from django.utils.http import urlsafe_base64_decode from django.utils.http import urlsafe_base64_decode
from django.shortcuts import render, redirect from django.shortcuts import render, redirect
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
from django.core.validators import validate_email
from django.core.exceptions import ValidationError
from comic.models import Setting, ComicBook, ComicStatus from comic.models import Setting, ComicBook, ComicStatus
from util import generate_breadcrumbs from util import generate_breadcrumbs
from forms import SettingsForm from forms import SettingsForm, AccountForm
from util import Menu from util import Menu
from os import path from os import path
@@ -29,6 +31,42 @@ def comic_list(request, comic_path=''):
}) })
return render(request, 'comic/comic_list.html', context) return render(request, 'comic/comic_list.html', context)
@login_required
def account_page(request):
error_message = []
success_message = []
if request.POST:
form = AccountForm(request.POST)
if form.is_valid():
if form.cleaned_data['password1'] != '':
if form.cleaned_data['password1'] == form.cleaned_data['password2']:
if len(form.cleaned_data['password1']) < 8:
error_message.append('Password is too short')
else:
success_message.append('password changed')
request.user.set_password(form.cleaned_data['password1'])
else:
error_message.append("Passwords don't match")
if form.cleaned_data['email'] != request.user.email:
try:
validate_email(form.cleaned_data['email'])
success_message.append('Email Address updated')
request.user.email = form.cleaned_data['email']
except ValidationError:
error_message.append('Invalid E-mail.')
request.user.save()
else:
form = AccountForm(initial={
'username': request.user.username,
'email': request.user.email,
})
context = RequestContext(request, {
'form': form,
'menu': Menu('Account'),
'error_message': '</br>'.join(error_message),
'success_message': '</br>'.join(success_message),
})
return render(request, 'comic/settings_page.html', context)
@login_required @login_required
def settings_page(request): def settings_page(request):