Login form avec plus de 30 chars
authorAli Jetha <ali@U-AJ.(none)>
Fri, 15 Oct 2010 13:01:24 +0000 (09:01 -0400)
committerAli Jetha <ali@U-AJ.(none)>
Fri, 15 Oct 2010 13:01:24 +0000 (09:01 -0400)
auf_savoirs_en_partage/chercheurs/forms.py
auf_savoirs_en_partage/chercheurs/models.py
auf_savoirs_en_partage/chercheurs/views.py
auf_savoirs_en_partage/templates/container_base.html
auf_savoirs_en_partage/templates/savoirs/login.html
auf_savoirs_en_partage/urls.py

index a72f9d5..cbc2143 100644 (file)
@@ -4,7 +4,8 @@ from models import *
 
 
 class PersonneForm(forms.ModelForm):
-    password = forms.CharField(widget=forms.PasswordInput(), label="Mot de passe")  
+    password = forms.CharField(widget=forms.PasswordInput(), label="Mot de passe") 
+    genre = forms.ChoiceField(widget=forms.RadioSelect(), choices=GENRE_CHOICES)
     class Meta:
         model = Utilisateur
         fields = ('nom', 'prenom', 'courriel', 'password', 'genre')
index dadcb80..98af4f4 100644 (file)
@@ -13,6 +13,7 @@ class Personne(models.Model):
     prenom = models.CharField(max_length=128, verbose_name = 'Prénom')
     courriel = models.EmailField(max_length=128, unique=True)
     fonction = models.CharField(max_length=128, null = True, blank = True)
+    date_naissance = models.DateField(null=True, blank=True)
     sousfonction = models.CharField(max_length=128, null = True, blank = True,
                                     verbose_name = 'Sous-fonction')
     mobile = models.CharField(max_length=32, null = True, blank = True,
index c42c0c4..676b6ba 100644 (file)
@@ -13,6 +13,36 @@ from django.contrib.auth.decorators import login_required
 
 from django.db.models import Q
 
+from django.utils.translation import ugettext_lazy as _
+from django.contrib.auth.forms import AuthenticationForm as OriginalAuthenticationForm
+
+class AuthenticationForm(OriginalAuthenticationForm):
+    username = forms.CharField(label=_("Username"), max_length=255)
+
+
+def chercheur_login(request, template_name='registration/login.html', redirect_field_name='next'):
+    "Displays the login form and handles the login action."
+    redirect_to = request.REQUEST.get(redirect_field_name, '')
+    if request.method == "POST":
+        form = AuthenticationForm(data=request.POST)
+        if form.is_valid():
+            # Light security check -- make sure redirect_to isn't garbage.
+            if not redirect_to or '//' in redirect_to or ' ' in redirect_to:
+                redirect_to = settings.LOGIN_REDIRECT_URL
+            from django.contrib.auth import login
+            login(request, form.get_user())
+            if request.session.test_cookie_worked():
+                request.session.delete_test_cookie()
+            return HttpResponseRedirect(redirect_to)
+    else:
+        form = AuthenticationForm(request)
+    request.session.set_test_cookie()
+    return render_to_response(template_name, {
+        'form': form,
+        redirect_field_name: redirect_to,
+    }, context_instance=RequestContext(request))
+    
+    
 def chercheur_queryset (request):
     list = Chercheur.objects.order_by("id")
     pays = ""
index 4ea79d2..d1e2bb2 100644 (file)
@@ -46,7 +46,7 @@
                     {% if user.is_authenticated %}
                     <a href="{% url django.contrib.auth.views.logout %}" class="bout-droit">Déconnexion</a>
                     {% else %}
-                    <a href="{% url django.contrib.auth.views.login %}" class="bout-droit">Connexion</a>
+                    <a href="{% url chercheurs.views.chercheur_login %}" class="bout-droit">Connexion</a>
                     {% endif %}
                     <span>|</span>
                     <a href="{% url savoirs.views.nous_contacter %}">Nous contacter</a>
index f93928b..94581d9 100644 (file)
@@ -7,7 +7,7 @@
 {% endif %}
 
   <div class="zone-texte">
-    <form method="post" action="{% url django.contrib.auth.views.login %}">
+    <form method="post" action="{% url chercheurs.views.chercheur_login %}">
       <table>
         <tr>
           <td>{{ form.username.label_tag }}</td>
index 55709fd..128578b 100644 (file)
@@ -23,7 +23,7 @@ urlpatterns = patterns(
     (r'^admin/assigner_disciplines', 'savoirs.admin_views.assigner_disciplines'),
     (r'^admin/(.*)', admin.site.root),
 
-    (r'^accounts/login/$', 'django.contrib.auth.views.login', {'template_name': 'savoirs/login.html'}),
+    (r'^accounts/login/$', 'chercheurs.views.chercheur_login', {'template_name': 'savoirs/login.html'}),
     (r'^accounts/logout/$', 'django.contrib.auth.views.logout', {'template_name': 'savoirs/logout.html'}),
 
     # sous-menu gauche