Add email to registration form, improve forms HTML.
authorAlexandre Segura <mex.zktk@gmail.com>
Wed, 15 Mar 2017 17:11:48 +0100
changeset 436 60d98f985e3b
parent 435 26338fe87deb
child 437 0aa597a588c1
Add email to registration form, improve forms HTML.
src/iconolab/auth/forms.py
src/iconolab/auth/views.py
src/iconolab/templates/registration/login.html
src/iconolab/templates/registration/register.html
src_js/iconolab-bundle/src/iconolab.scss
--- 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 {