Add email to registration form, improve forms HTML.
--- a/src/iconolab/auth/forms.py Wed Mar 15 16:49:22 2017 +0100
+++ b/src/iconolab/auth/forms.py Wed Mar 15 17:11:48 2017 +0100
@@ -1,5 +1,6 @@
from django import forms
from django.contrib.auth.models import User
+from django.contrib.auth.forms import UserCreationForm
class UserForm(forms.ModelForm):
email = forms.EmailField(required=False)
@@ -7,3 +8,17 @@
class Meta:
model = User
fields = ('email',)
+
+class UserCreationForm(UserCreationForm):
+ email = forms.EmailField(required=True)
+
+ class Meta:
+ model = User
+ fields = ("username", "email", "password1", "password2")
+
+ def save(self, commit=True):
+ user = super(UserCreationForm, self).save(commit=False)
+ user.email = self.cleaned_data["email"]
+ if commit:
+ user.save()
+ return user
--- a/src/iconolab/auth/views.py Wed Mar 15 16:49:22 2017 +0100
+++ b/src/iconolab/auth/views.py Wed Mar 15 17:11:48 2017 +0100
@@ -1,6 +1,6 @@
from django.utils.http import is_safe_url
from django.contrib.auth import authenticate, login, logout, get_user_model
-from django.contrib.auth.forms import UserCreationForm
+from iconolab.auth.forms import UserCreationForm
from django.shortcuts import redirect, render, HttpResponseRedirect
from django.core.urlresolvers import reverse_lazy
from django.contrib.auth.forms import AuthenticationForm
@@ -15,7 +15,7 @@
def login_view(request):
return HttpResponse('show show a login form')
-
+
def logout_view(request):
logout(request)
@@ -25,38 +25,38 @@
form_class = AuthenticationForm
success_url = reverse_lazy('home')
redirect_field_name = "next"
-
+
def get_context_data(self, **kwargs):
context = super(LoginView, self).get_context_data(**kwargs)
context["next"] = self.get_success_url()
return context
-
+
def get(self, request, *args, **kwargs):
if request.user.is_authenticated():
return HttpResponseRedirect(self.get_success_url())
return super(LoginView, self).get(request, *args, **kwargs)
-
+
def form_valid(self, form):
login(self.request, form.get_user())
return HttpResponseRedirect(self.get_success_url())
-
+
def get_success_url(self):
redirect_to = self.request.POST.get(self.redirect_field_name, self.request.GET.get(self.redirect_field_name, self.success_url))
return redirect_to
class LogoutView(RedirectView):
url = reverse_lazy("home")
-
+
def get(self, request, *args, **kwargs):
logout(request)
return super(LogoutView, self).get(request, *args, **kwargs)
-
+
class RegisterView(CreateView):
- model = User
+ model = User
template_name = 'registration/register.html'
form_class = UserCreationForm
success_url = reverse_lazy("account:user_created")
-
+
def post(self, request, *args, **kwargs):
self.object = None
form = self.get_form()
@@ -69,4 +69,4 @@
return self.form_invalid(form)
class UserCreatedView(TemplateView):
- template_name='registration/created.html'
\ No newline at end of file
+ template_name='registration/created.html'
--- a/src/iconolab/templates/registration/login.html Wed Mar 15 16:49:22 2017 +0100
+++ b/src/iconolab/templates/registration/login.html Wed Mar 15 17:11:48 2017 +0100
@@ -6,8 +6,8 @@
<p>Combinaison identifiant/mot de passe incorrecte. Veuillez réessayer.</p>
{% endif %}
-<div class='col-md-6 center centerer'>
- <h3>Se connecter</h3>
+<div class="col-md-6 col-md-offset-3">
+ <h3 class="text-center">Se connecter</h3>
<form class="form" action="{% url 'account:login' %}" method="POST">
{% csrf_token %}
{% for field in form %}
@@ -15,13 +15,13 @@
<label class="control-label" for="id_{{ field.name }}">{{ field.label }}</label>
<input type="{% if field.name == "username" %}text{% else %}password{% endif %}" class="form-control"
name="{{ field.name }}"
- id="id_{{ field.name }}" >
+ id="id_{{ field.name }}" >
{% if field.errors %}{{ field.errors }}{% endif %}
</fieldset>
{% endfor %}
<input type="hidden" name="next" value="{{next}}">
- <input type="submit" value="S'identifier" class="btn btn-primary">
+ <input type="submit" value="S'identifier" class="btn btn-block btn-primary">
</form>
</div>
-{% endblock %}
\ No newline at end of file
+{% endblock %}
--- a/src/iconolab/templates/registration/register.html Wed Mar 15 16:49:22 2017 +0100
+++ b/src/iconolab/templates/registration/register.html Wed Mar 15 17:11:48 2017 +0100
@@ -1,22 +1,28 @@
{% extends "iconolab_base.html" %}
+{% load iconolab_tags %}
+
{% block content %}
-<div class='col-md-6 center centerer'>
- <h3>S'enregistrer</h3>
- <form class="form" action="{% url 'account:register' %}" method="POST">
- {% csrf_token %}
+<div class="col-md-6 col-md-offset-3">
+ <h3 class="text-center">Créer un compte</h3>
+ <form action="{% url 'account:register' %}" method="POST">
+ {% csrf_token %}
{% for field in form %}
- <fieldset class="form-group">
+ <fieldset class="form-group {% if field.errors %}has-error{% endif %}">
<label class="control-label" for="id_{{ field.name }}">{{ field.label }}</label>
- <input type="{% if field.name == "username" %}text{% else %}password{% endif %}" class="form-control"
+ <input type="{{ field.field.widget.input_type }}" class="form-control"
name="{{ field.name }}"
- id="id_{{ field.name }}" >
- {% if field.errors %}{{ field.errors }}{% else %}<p class="help-text">{{ field.help_text }}</p>{% endif %}
+ id="id_{{ field.name }}" >
+ {% if field.errors %}
+ <span class="help-block">{{ field.errors.as_text }}</span>
+ {% else %}
+ <span class="help-block">{{ field.help_text }}</span>
+ {% endif %}
</fieldset>
{% endfor %}
- <input type="submit" value="S'enregistrer" class="btn btn-primary">
+ <input type="submit" value="S'enregistrer" class="btn btn-block btn-primary">
</form>
</div>
-{% endblock %}
\ No newline at end of file
+{% endblock %}
--- a/src_js/iconolab-bundle/src/iconolab.scss Wed Mar 15 16:49:22 2017 +0100
+++ b/src_js/iconolab-bundle/src/iconolab.scss Wed Mar 15 17:11:48 2017 +0100
@@ -1,6 +1,9 @@
header {
margin-bottom: 20px;
}
+footer {
+ margin-top: 20px;
+}
#topnav {
.navbar {