Commit 09673c15 authored by Gabriel Detraz's avatar Gabriel Detraz

Prise en compte des remarques(u',csrf,context etc)

parent 0817782e
......@@ -4,13 +4,13 @@
from django import forms
from django.forms import widgets
class NameForm(forms.Form):
nom = forms.CharField(label='Nom', max_length=10)
prenom = forms.CharField(label='Prénom', max_length=10)
tel = forms.CharField(label='Téléphone', max_length=10)
etudes = forms.IntegerField(label="Année d'étude", max_value=9)
newalias = forms.EmailField(label='Nouveau alias Mail', max_length=20, required=False)
passwdexists = forms.CharField(label='Ancien mot de passe', max_length=10, widget= widgets.PasswordInput, required=False)
newpasswd1 = forms.CharField(label='Nouveau mot de passe', max_length=10, widget= widgets.PasswordInput, required=False)
newpasswd2 = forms.CharField(label='Nouveau mot de passe', max_length=10, widget= widgets.PasswordInput, required=False)
greylist = forms.CharField(label='GreyList', max_length=10, widget= widgets.CheckboxInput, required=False)
class CompteForm(forms.Form):
nom = forms.CharField(label=u'Nom', max_length=10)
prenom = forms.CharField(label=u'Prénom', max_length=10)
tel = forms.CharField(label=u'Téléphone', max_length=10)
etudes = forms.IntegerField(label=u"Année d'étude", max_value=9)
newalias = forms.EmailField(label=u'Nouveau alias Mail', max_length=20, required=False)
passwdexists = forms.CharField(label=u'Ancien mot de passe', max_length=10, widget= widgets.PasswordInput, required=False)
newpasswd1 = forms.CharField(label=u'Nouveau mot de passe', max_length=10, widget= widgets.PasswordInput, required=False)
newpasswd2 = forms.CharField(label=u'Nouveau mot de passe', max_length=10, widget= widgets.PasswordInput, required=False)
greylist = forms.CharField(label=u'GreyList', max_length=10, widget= widgets.CheckboxInput, required=False)
from django.db import models
# Create your models here.
class Test(models.Model):
pass
"""
This file demonstrates two different styles of tests (one doctest and one
unittest). These will both pass when you run "manage.py test".
Replace these with more appropriate tests for your application.
"""
from django.test import TestCase
class SimpleTest(TestCase):
def test_basic_addition(self):
"""
Tests that 1 + 1 always equals 2.
"""
self.failUnlessEqual(1 + 1, 2)
__test__ = {"doctest": """
Another way to test that 1 + 1 is equal to 2.
>>> 1 + 1 == 2
True
"""}
......@@ -5,5 +5,5 @@ import views
urlpatterns = patterns('',
url('^$', 'apps.compte.views.afficher', name='afficher')
url('^$', views.afficher, name='afficher')
)
......@@ -8,39 +8,37 @@ from django.shortcuts import render
from django.contrib.auth.decorators import login_required
from django.http import HttpResponseRedirect
from django.views.decorators.csrf import csrf_protect
from django.template import RequestContext
from django.utils.importlib import import_module
conn_pool = import_module('conn_pool', 'intranet')
from passlib.apps import ldap_context
from gestion.chgpass import check_password
import lc_ldap
import lc_ldap.crans_utils
from forms import NameForm
from forms import CompteForm
from django.forms.util import ErrorList
# Vue d'affichage seulement des infos pour l'adh
@csrf_protect
@login_required
def afficher(request):
luser = conn_pool.get_user(request.user)
# On transmet au template des infos plus complètes que true or false...
if luser.carte_ok():
carte = "Fournie"
carte = u"Fournie"
else:
carte = "Manquante"
carte = u"Manquante"
if luser.paiement_ok():
paiement = "Valide"
paiement = u"Valide"
else:
paiement = "Pas à jour"
paiement = u"Pas à jour"
if luser.access_ok():
connexion = "OK"
connexion = u"OK"
else:
connexion = "Pas de connexion"
connexion = u"Pas de connexion"
# On transmet au template si les checkbox sont cochées ou pas à la base.
try:
......@@ -53,72 +51,74 @@ def afficher(request):
gl = False
if request.method == "POST":
form = NameForm(request.POST)
form = CompteForm(request.POST)
if form.is_valid():
print form.changed_data
#print form.changed_data
# On ouvre une connexion
luser = conn_pool.get_user(request.user, mode='w')
# Modif de nom, prenom, tel (charfield dans forms)
luser['nom']=unicode(form.cleaned_data['nom'])
luser['prenom']=unicode(form.cleaned_data['prenom'])
# On vérifie qu'il n'y a que des chiffres
if form.cleaned_data['tel'].isdigit():
luser['tel']=unicode(form.cleaned_data['tel'])
else:
errors = form._errors.setdefault("tel", ErrorList())
errors.append(u"Le numéro ne doit contenir que des chiffres")
# Dans forms, etudes est un chiffre <9
luser['etudes'][1]=unicode(form.cleaned_data['etudes'])
# Trou dans le binding : on vérifie bien que le suffixe est @crans.org.
# Dans forms c'est defini comme mailadress
# On récupère la value error : l'alias est deja pris
if "newalias" in form.changed_data:
if "@crans.org" in form.cleaned_data['newalias']:
try:
luser['mailAlias'].append(form.cleaned_data['newalias'])
except ValueError:
errors = form._errors.setdefault("newalias", ErrorList())
errors.append(u"L'alias est déjà utilisé")
pass
luserconn = conn_pool.get_user(request.user, mode='w')
with luserconn as luser:
# Modif de nom, prenom, tel (charfield dans forms)
luser['nom']=form.cleaned_data['nom']
luser['prenom']=form.cleaned_data['prenom']
# On vérifie qu'il n'y a que des chiffres
if form.cleaned_data['tel'].isdigit():
luser['tel']=unicode(form.cleaned_data['tel'])
else:
errors = form._errors.setdefault("newalias", ErrorList())
errors.append(u"L'alias doit avoir @crans.org pour suffixe")
# Changement de mot de passe : il faut satisfaire à : le mot de passe existant est le bon, les 2 champs nouveaux mot de passe sont égaux,
# , et le nouveau mot de passe respete la convention Cr@ns. Si non, on renvoie une erreur à chaque fois.
if "passwdexists" in form.changed_data:
if ldap_context.verify(unicode(form.cleaned_data['passwdexists']),unicode(luser['userPassword'][0])):
new_field2 = form.cleaned_data['newpasswd1'].encode('utf-8')
new_field3 = form.cleaned_data['newpasswd2'].encode('utf-8')
if new_field2 == new_field3:
if check_password(new_field2)==(True, ''):
hashedPassword = lc_ldap.crans_utils.hash_password(new_field2)
luser['userPassword'] = [hashedPassword.decode('ascii')]
errors = form._errors.setdefault("tel", ErrorList())
errors.append(u"Le numéro ne doit contenir que des chiffres")
# Dans forms, etudes est un chiffre <9
# En unicode sinon ca plante
luser['etudes'][1]=unicode(form.cleaned_data['etudes'])
# Trou dans le binding : on vérifie bien que le suffixe est @crans.org.
# Dans forms c'est defini comme mailadress
# On récupère la value error : l'alias est deja pris
if "newalias" in form.changed_data:
if "@crans.org" in form.cleaned_data['newalias']:
try:
luser['mailAlias'].append(form.cleaned_data['newalias'])
except ValueError:
errors = form._errors.setdefault("newalias", ErrorList())
errors.append(u"L'alias est déjà utilisé")
pass
else:
errors = form._errors.setdefault("newalias", ErrorList())
errors.append(u"L'alias doit avoir @crans.org pour suffixe")
# Changement de mot de passe : il faut satisfaire à : le mot de passe existant est le bon, les 2 champs nouveaux mot de passe sont égaux,
# , et le nouveau mot de passe respete la convention Cr@ns. Si non, on renvoie une erreur à chaque fois.
if "passwdexists" in form.changed_data:
if ldap_context.verify(unicode(form.cleaned_data['passwdexists']),unicode(luser['userPassword'][0])):
new_field2 = form.cleaned_data['newpasswd1'].encode('utf-8')
new_field3 = form.cleaned_data['newpasswd2'].encode('utf-8')
if new_field2 == new_field3:
if check_password(new_field2)==(True, ''):
hashedPassword = lc_ldap.crans_utils.hash_password(new_field2)
luser['userPassword'] = [hashedPassword.decode('ascii')]
else:
errors = form._errors.setdefault("newpasswd2", ErrorList())
errors.append(u"Le nouveau mot de passe doit contenir au moins 9 carractères, au moins une majuscule, un chiffre et une minuscule")
else:
errors = form._errors.setdefault("newpasswd2", ErrorList())
errors.append(u"Le nouveau mot de passe doit contenir au moins 9 carractères, au moins une majuscule, un chiffre et une minuscule")
errors.append(u"Le nouveau mot de passe n'est pas le même sur les deux champs")
else:
errors = form._errors.setdefault("newpasswd2", ErrorList())
errors.append(u"Le nouveau mot de passe n'est pas le même sur les deux champs")
else:
errors = form._errors.setdefault("passwdexists", ErrorList())
errors.append(u"Le mot de passe existant n'est pas bon")
# Checkbox grey_list : rien de spécial ici
if form.cleaned_data['greylist']=="on":
luser["contourneGreylist"] = "OK"
elif form.cleaned_data['greylist']=="False":
luser["contourneGreylist"] = []
# On génère l'historique et on enregistre
luser.history_gen()
luser.save()
errors = form._errors.setdefault("passwdexists", ErrorList())
errors.append(u"Le mot de passe existant n'est pas bon")
# Checkbox grey_list : rien de spécial ici
if form.cleaned_data['greylist']=="on":
luser["contourneGreylist"] = "OK"
elif form.cleaned_data['greylist']=="False":
luser["contourneGreylist"] = []
# On génère l'historique et on enregistre
luser.history_gen()
luser.save()
else:
form = NameForm(initial={'nom': luser['nom'][0], 'prenom': luser['prenom'][0],'tel': luser['tel'][0],'greylist': gl, 'etudes': luser['etudes'][1]})
form = CompteForm(initial={'nom': luser['nom'][0], 'prenom': luser['prenom'][0],'tel': luser['tel'][0],'greylist': gl, 'etudes': luser['etudes'][1]})
return django.shortcuts.render_to_response("compte/affichage.html", locals(), context_instance=RequestContext(request))
......
# Create your views here.
import django.shortcuts
from django.contrib.auth.decorators import login_required
from django.template import RequestContext
from django.utils.importlib import import_module
conn_pool = import_module('conn_pool', 'intranet')
#from models import Test
import models
@login_required
def index(request):
luser = conn_pool.get_user(request.user)
carte =
return django.shortcuts.render_to_response("compte/test.html", {"luser" : luser }, context_instance=RequestContext(request))
# Create your views here.
import django.shortcuts
from django.contrib.auth.decorators import login_required
from django.views.decorators.csrf import csrf_protect
from django.template import RequestContext
from django.utils.importlib import import_module
conn_pool = import_module('conn_pool', 'intranet')
from models import Test
import models
@csrf_protect
@login_required
def index(request):
luser = conn_pool.get_user(request.user)
carte = luser.carte_ok
if carte:
carte = unicode("Valide")
else:
carte = unicode("Manquante")
paiement = luser.paiement_ok
if paiement:
paiement = unicode("Valide")
else:
paiement = unicode("Pas a jour")
connexion = luser.access_ok
if connexion:
connexion = unicode("OK")
else:
connexion = unicode("Pas de connexion")
return django.shortcuts.render_to_response("compte/test.html", {"luser" : luser, "carte": carte, "paiement": paiement, "connexion": connexion }, context_instance=RequestContext(request))
@csrf_protect
@login_required
def modify(request):
if request.method == "GET":
champ = request.GET['type']
return django.shortcuts.render_to_response("compte/modify.html", {'champ': champ }, context_instance=RequestContext(request))
else:
type = request.POST['type']
new_field = request.POST['champ']
luser = conn_pool.get_user(request.user)
# luser['nom']=unicode(new_field)
return django.shortcuts.redirec)
# return django.shortcuts.render_to_response("compte/test.html", context_instance=RequestContext(request))
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment