# HG changeset patch # User verrierj # Date 1314956975 -7200 # Node ID a71757b03e89785c58c864cc2a960cdaacfabbb7 # Parent e6cd648f4f16004fe416f4a93cdf0362660e9f54 Add javascript to profile form diff -r e6cd648f4f16 -r a71757b03e89 src/ldt/ldt/user/forms.py --- a/src/ldt/ldt/user/forms.py Wed Aug 31 17:52:47 2011 +0200 +++ b/src/ldt/ldt/user/forms.py Fri Sep 02 11:49:35 2011 +0200 @@ -4,6 +4,9 @@ from django.utils.translation import gettext as _ from models import Ldt +from django.contrib.auth.models import User + + class LdtForm(UserCreationForm): @@ -90,4 +93,56 @@ self.user.save() return self.user + +class ProfileChangeForm(forms.Form): + first_name = forms.CharField(label=_("First name"), max_length=30) + last_name = forms.CharField(label=_("Last name"), max_length=30) + email1 = forms.EmailField(label=_("E-mail"), max_length=75) + email2 = forms.EmailField(label=_("E-mail"), max_length=75) + username = forms.RegexField(label=_("Username"), max_length=30, regex=r'^[\w.@+-]+$') + def __init__(self, user=None, *args, **kwargs): + self.user = user + super(ProfileChangeForm, self).__init__(*args, **kwargs) + + def clean_email2(self): + email1 = self.cleaned_data.get('email1') + email2 = self.cleaned_data.get('email2') + if email1 and email2: + if email1 != email2: + raise forms.ValidationError(_("The two emails didn't match.")) + return email2 + + def clean_username(self): + retrieved_username = '%s' % self.cleaned_data.get('username') + if retrieved_username != self.user.username and (len(User.objects.filter(username=retrieved_username)) > 0): + raise forms.ValidationError(_("username %s is already used." % retrieved_username)) + return retrieved_username + + def clean_first_name(self): + first_name = self.cleaned_data.get('first_name') + if not self.isValidName(first_name): + raise forms.ValidationError(_("Please use only letter, blanks, or dashes.")) + return first_name + + def clean_last_name(self): + last_name = self.cleaned_data.get('last_name') + if not self.isValidName(last_name): + raise forms.ValidationError(_("Please use only letter, blanks, or dashes.")) + return last_name + + def isValidName(self, string): + for i in string: + if not i.isalpha() and not i in [' ','-']: + return False + return True + + + def save(self): + self.user.email = self.cleaned_data['email1'] + self.user.first_name = self.cleaned_data['first_name'] + self.user.last_name = self.cleaned_data['last_name'] + self.user.username = self.cleaned_data['username'] + self.user.save() + return self.user + \ No newline at end of file diff -r e6cd648f4f16 -r a71757b03e89 src/ldt/ldt/user/templates/ldt/user/change_password.html --- a/src/ldt/ldt/user/templates/ldt/user/change_password.html Wed Aug 31 17:52:47 2011 +0200 +++ b/src/ldt/ldt/user/templates/ldt/user/change_password.html Fri Sep 02 11:49:35 2011 +0200 @@ -1,47 +1,60 @@ -{% extends "ldt/user/user_base.html" %} +{% extends "ldt/user/user_change.html" %} {# form of password change #} {% load i18n %} {% block css_import %} {{ block.super }} - + + {% endblock %} {% block content %} {{ block.super }} {% if form %}
{% csrf_token %} - + - + - + - +
+
+ + {% trans "passwords don't match" %}
+
{% else %} diff -r e6cd648f4f16 -r a71757b03e89 src/ldt/ldt/user/templates/ldt/user/change_profile.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/ldt/ldt/user/templates/ldt/user/change_profile.html Fri Sep 02 11:49:35 2011 +0200 @@ -0,0 +1,120 @@ +{% extends "ldt/user/user_change.html" %} +{# form of password change #} + +{% load i18n %} +{% block css_import %} + +{{ block.super }} + + + +{% endblock %} +{% block content %} + +{{ block.super }} + +{% if not form %} +{%trans "Your profile has been updated" %} +{% endif %} +
+{% csrf_token %} + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + {% for error in form.username.errors %} + + {{ error }} + + {% endfor %} +
+ + + + {% trans "Please use only letters, blanks or dashes" %} + {% for error in form.first_name.errors %} + + {{ error }} + + {% endfor %} +
+ + + + {% trans "Please use only letters, blanks or dashes" %} + {% for error in form.last_name.errors %} + + {{ error }} + + {% endfor %} +
+ + + + {% trans "emails don't match" %} + {% trans "incorrect email" %} + {% for error in form.email1.errors %} + + {{ error }} + + {% endfor %} +
+ + + + {% trans "incorrect email" %} + {% for error in form.email2.errors %} + + {{ error }} + + {% endfor %} +
+
+ +{% endblock%} + diff -r e6cd648f4f16 -r a71757b03e89 src/ldt/ldt/user/templates/ldt/user/user_base.html --- a/src/ldt/ldt/user/templates/ldt/user/user_base.html Wed Aug 31 17:52:47 2011 +0200 +++ b/src/ldt/ldt/user/templates/ldt/user/user_base.html Fri Sep 02 11:49:35 2011 +0200 @@ -3,23 +3,14 @@ {# all contents are writed in the "iricontent" block #} {% load i18n %} - {% block css_import %} {{ block.super }} - + {% endblock %} + {% block content %} -{% if user.is_authenticated %} - -{% endif %} +
{% block iricontent %}{% endblock %}
diff -r e6cd648f4f16 -r a71757b03e89 src/ldt/ldt/user/templates/ldt/user/user_change.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/ldt/ldt/user/templates/ldt/user/user_change.html Fri Sep 02 11:49:35 2011 +0200 @@ -0,0 +1,83 @@ +{% extends "ldt/ldt_base.html" %} +{# this page inherit base html, all pages of ldt inherit this page. #} +{# all contents are writed in the "iricontent" block #} +{% load i18n %} + +{% block css_import %} +{{ block.super }} + + + + +{% endblock %} + + +{% block content %} + + + + +
+ {% block iricontent %}{% endblock %} +
+{% endblock%} diff -r e6cd648f4f16 -r a71757b03e89 src/ldt/ldt/user/urls.py --- a/src/ldt/ldt/user/urls.py Wed Aug 31 17:52:47 2011 +0200 +++ b/src/ldt/ldt/user/urls.py Fri Sep 02 11:49:35 2011 +0200 @@ -2,12 +2,10 @@ urlpatterns = patterns('', url(r'^loginAjax/$', 'ldt.user.views.loginAjax'), - url(r'^profile/', 'ldt.user.views.profile'), + url(r'^profile/$', 'ldt.user.views.profile'), + url(r'^language/$', 'ldt.user.views.language'), + url(r'^password/$', 'ldt.user.views.password'), url(r'^logout/', 'ldt.user.views.logout_view'), - url(r'^emailchange/$', 'ldt.user.views.change_email'), - url(r'^namechange/$', 'ldt.user.views.change_name'), - url(r'^pwdchange/$', 'ldt.user.views.change_password'), - url(r'^languagechange/$', 'ldt.user.views.change_language'), # url(r'^space/ldt/$', 'ldt.ldt_utils.views.list_ldt'), # url(r'^space/ldt/indexproject/(?P.*)$', 'ldt.ldt_utils.views.index_project'), # url(r'^space/ldt/init/(?P.*)/(?P.*)$', 'ldt.ldt_utils.views.init'), diff -r e6cd648f4f16 -r a71757b03e89 src/ldt/ldt/user/views.py --- a/src/ldt/ldt/user/views.py Wed Aug 31 17:52:47 2011 +0200 +++ b/src/ldt/ldt/user/views.py Fri Sep 02 11:49:35 2011 +0200 @@ -7,14 +7,21 @@ from django.template import RequestContext, loader from django.utils import simplejson from django.utils.translation import ugettext as _ -from forms import EmailChangeForm, NameChangeForm +from forms import ProfileChangeForm @login_required def profile(request): - return render_to_response('ldt/user/user_base.html', context_instance=RequestContext(request)) - + if request.method == "POST": + form = ProfileChangeForm(request.user, request.POST) + + if form.is_valid(): + form.save() + form = None + else: + form = ProfileChangeForm() + return render_to_response('ldt/user/change_profile.html', {'form' : form }, context_instance=RequestContext(request)) def logout_view(request): @@ -42,21 +49,9 @@ return HttpResponse(simplejson.dumps({'message': error_message, })) return render_to_response('ldt/user/login_ajax.html', context_instance=RequestContext(request)) - -@login_required -def change_email(request): - if request.method == "POST": - form = EmailChangeForm(request.user, request.POST) - if form.is_valid(): - form.save() - form = None - else: - form = EmailChangeForm(request.user) - return render_to_response('ldt/user/change_email.html', {'form': form, }, context_instance=RequestContext(request)) - - + @login_required -def change_password(request): +def password(request): if request.method == "POST": form = PasswordChangeForm(request.user, request.POST) if form.is_valid(): @@ -68,17 +63,5 @@ @login_required -def change_name(request): - if request.method == "POST": - form = NameChangeForm(request.user, request.POST) - if form.is_valid(): - form.save() - form = None - else: - form = NameChangeForm(request.user) - return render_to_response('ldt/user/change_name.html', {'form': form, }, context_instance=RequestContext(request)) - -@login_required -def change_language(request): +def language(request): return render_to_response('ldt/user/change_language.html', { 'url_change_language' : reverse('django.views.i18n.set_language')}, context_instance=RequestContext(request)) -