]> git.parisson.com Git - telemeta.git/commitdiff
complete account registration and password handling
authoryomguy <yomguy@parisson.com>
Thu, 31 Mar 2011 15:33:09 +0000 (17:33 +0200)
committeryomguy <yomguy@parisson.com>
Thu, 31 Mar 2011 15:33:09 +0000 (17:33 +0200)
23 files changed:
telemeta/locale/fr/LC_MESSAGES/django.mo
telemeta/locale/fr/LC_MESSAGES/django.po
telemeta/templates/telemeta/registration/logged_out.html [new file with mode: 0644]
telemeta/templates/telemeta/registration/password_change_done.html [new file with mode: 0644]
telemeta/templates/telemeta/registration/password_change_form.html [new file with mode: 0644]
telemeta/templates/telemeta/registration/password_reset_complete.html [new file with mode: 0644]
telemeta/templates/telemeta/registration/password_reset_confirm.html [new file with mode: 0644]
telemeta/templates/telemeta/registration/password_reset_done.html [new file with mode: 0644]
telemeta/templates/telemeta/registration/password_reset_email.html [new file with mode: 0644]
telemeta/templates/telemeta/registration/password_reset_form.html [new file with mode: 0644]
telemeta/templates/telemeta_default/login.html
telemeta/templates/telemeta_default/profile_detail.html
telemeta/templates/telemeta_default/profile_edit.html
telemeta/templates/telemeta_default/registration/logged_out.html [new file with mode: 0644]
telemeta/templates/telemeta_default/registration/password_change_done.html [new file with mode: 0644]
telemeta/templates/telemeta_default/registration/password_change_form.html [new file with mode: 0644]
telemeta/templates/telemeta_default/registration/password_reset_complete.html [new file with mode: 0644]
telemeta/templates/telemeta_default/registration/password_reset_confirm.html [new file with mode: 0644]
telemeta/templates/telemeta_default/registration/password_reset_done.html [new file with mode: 0644]
telemeta/templates/telemeta_default/registration/password_reset_email.html [new file with mode: 0644]
telemeta/templates/telemeta_default/registration/password_reset_form.html [new file with mode: 0644]
telemeta/urls.py
telemeta/web/base.py

index 1519873d50ab268abc35f38f505b515cfa133c21..128887082d162df60826fe2e778ed2a992a64ddd 100644 (file)
Binary files a/telemeta/locale/fr/LC_MESSAGES/django.mo and b/telemeta/locale/fr/LC_MESSAGES/django.mo differ
index d3591816258c15e77426efe995e90ccd58cd5ba6..6e5b553b3bd5d552411792bedeb39eff3afa9b72 100644 (file)
@@ -884,3 +884,7 @@ msgstr "Statut super-utilisateur"
 #: templates/telemeta_default/profile_detail.html:21
 msgid "Last login"
 msgstr "Dernière connexion"
+
+#: templates/telemeta_default/login.html:21
+msgid "Password forgotten"
+msgstr "Mot de passe oublié"
diff --git a/telemeta/templates/telemeta/registration/logged_out.html b/telemeta/templates/telemeta/registration/logged_out.html
new file mode 100644 (file)
index 0000000..12e792a
--- /dev/null
@@ -0,0 +1,12 @@
+{% extends "telemeta/base.html" %}
+{% load i18n %}
+
+{% block breadcrumbs %}<div class="breadcrumbs"><a href="../">{% trans 'Home' %}</a></div>{% endblock %}
+
+{% block content %}
+
+<p>{% trans "Thanks for spending some quality time with the Web site today." %}</p>
+
+<p><a href="../">{% trans 'Log in again' %}</a></p>
+
+{% endblock %}
diff --git a/telemeta/templates/telemeta/registration/password_change_done.html b/telemeta/templates/telemeta/registration/password_change_done.html
new file mode 100644 (file)
index 0000000..63bc219
--- /dev/null
@@ -0,0 +1 @@
+{% extends "telemeta_default/registration/password_change_done.html" %}
\ No newline at end of file
diff --git a/telemeta/templates/telemeta/registration/password_change_form.html b/telemeta/templates/telemeta/registration/password_change_form.html
new file mode 100644 (file)
index 0000000..c2f232c
--- /dev/null
@@ -0,0 +1 @@
+{% extends "telemeta_default/registration/password_change_form.html" %}
\ No newline at end of file
diff --git a/telemeta/templates/telemeta/registration/password_reset_complete.html b/telemeta/templates/telemeta/registration/password_reset_complete.html
new file mode 100644 (file)
index 0000000..069712c
--- /dev/null
@@ -0,0 +1 @@
+{% extends "telemeta_default/registration/password_reset_complete.html" %}
\ No newline at end of file
diff --git a/telemeta/templates/telemeta/registration/password_reset_confirm.html b/telemeta/templates/telemeta/registration/password_reset_confirm.html
new file mode 100644 (file)
index 0000000..cf76fcc
--- /dev/null
@@ -0,0 +1 @@
+{% extends "telemeta_default/registration/password_reset_confirm.html" %}
\ No newline at end of file
diff --git a/telemeta/templates/telemeta/registration/password_reset_done.html b/telemeta/templates/telemeta/registration/password_reset_done.html
new file mode 100644 (file)
index 0000000..d32a6dd
--- /dev/null
@@ -0,0 +1 @@
+{% extends "telemeta_default/registration/password_reset_done.html" %}
\ No newline at end of file
diff --git a/telemeta/templates/telemeta/registration/password_reset_email.html b/telemeta/templates/telemeta/registration/password_reset_email.html
new file mode 100644 (file)
index 0000000..7c1c273
--- /dev/null
@@ -0,0 +1 @@
+{% extends "telemeta_default/registration/password_reset_email.html" %}
\ No newline at end of file
diff --git a/telemeta/templates/telemeta/registration/password_reset_form.html b/telemeta/templates/telemeta/registration/password_reset_form.html
new file mode 100644 (file)
index 0000000..f02a94c
--- /dev/null
@@ -0,0 +1 @@
+{% extends "telemeta_default/registration/password_reset_form.html" %}
\ No newline at end of file
index 6997ae688edee157a4386d52dcf573751a07f8b4..ff3d92a0b324435338c960c9512c3f46822ac52c 100644 (file)
@@ -3,7 +3,7 @@
 
 {% block content %}
 <h3>{% trans "User authentication" %}</h3>
-
+<br />
 {% if form.errors %}
 <p class="login-error">{% trans "Your username and password didn't match. Please try again." %}</p>
 {% endif %}
 {{ form.password }}
 
 </p>
-<a href="#" class="component_icon button icon_login"
+<a href="#" class="component_icon button icon_login" style="float: right;"
                 onclick="document.getElementById('_loginForm').submit(); return false;">{% trans "Sign in" %}</a>
-<!--<input class="submit" type="submit" value="{% trans "Sign in" %}"/>-->
 <input type="hidden" name="next" value="{{ next }}" />
+<span style="align: right;"><a href="{% url telemeta-password-reset %}">{% trans "Password forgotten" %} ?</a></span>
 </form>
 
+
 {% endblock %}
index 4589484eb6659d8a8af109cdd987e7f3b0b5920c..437981a1fa7ed9fbfce6401cc6523c91dd39a10d 100644 (file)
@@ -46,6 +46,7 @@
       <dt>{% trans "Last login" %}</dt><dd>{{ usr.last_login }}</dd>
      </dl>
     </div>
+    <a href="{% url telemeta-password-change %}" class="component_icon button icon_login" style="float:left">{% trans "Change password" %}</a>
    </div>
 {% endblock %}
 
index 59c40bfbc7d602319c43cfdaf66d4f544164b092..936f03b225ccb21865dcba6341d3be9e851ebc79 100644 (file)
@@ -14,7 +14,7 @@
        <table>
        {% for form in forms %}
         {% for field in form %}
-        {% if not field.html_name in hidden_fields %}
+        {% if not field.html_name in user_hidden_fields %}
         <tr>
             <tr><td class="error">{{ field.errors }}</td></tr>
             <td>{% trans field.label_tag %} : </td><td>{{ field }}</td>
diff --git a/telemeta/templates/telemeta_default/registration/logged_out.html b/telemeta/templates/telemeta_default/registration/logged_out.html
new file mode 100644 (file)
index 0000000..12e792a
--- /dev/null
@@ -0,0 +1,12 @@
+{% extends "telemeta/base.html" %}
+{% load i18n %}
+
+{% block breadcrumbs %}<div class="breadcrumbs"><a href="../">{% trans 'Home' %}</a></div>{% endblock %}
+
+{% block content %}
+
+<p>{% trans "Thanks for spending some quality time with the Web site today." %}</p>
+
+<p><a href="../">{% trans 'Log in again' %}</a></p>
+
+{% endblock %}
diff --git a/telemeta/templates/telemeta_default/registration/password_change_done.html b/telemeta/templates/telemeta_default/registration/password_change_done.html
new file mode 100644 (file)
index 0000000..4037fc1
--- /dev/null
@@ -0,0 +1,14 @@
+{% extends "telemeta/base.html" %}
+{% load i18n %}
+{% block userlinks %}{% url django-admindocs-docroot as docsroot %}{% if docsroot %}<a href="{{ docsroot }}">{% trans 'Documentation' %}</a> / {% endif %}{% trans 'Change password' %} / <a href="../../logout/">{% trans 'Log out' %}</a>{% endblock %}
+{% block breadcrumbs %}<div class="breadcrumbs"><a href="../../">{% trans 'Home' %}</a> &rsaquo; {% trans 'Password change' %}</div>{% endblock %}
+
+{% block title %}{% trans 'Password change successful' %}{% endblock %}
+
+{% block content %}
+
+<h1>{% trans 'Password change successful' %}</h1>
+
+<p>{% trans 'Your password was changed.' %}</p>
+
+{% endblock %}
diff --git a/telemeta/templates/telemeta_default/registration/password_change_form.html b/telemeta/templates/telemeta_default/registration/password_change_form.html
new file mode 100644 (file)
index 0000000..f44fb60
--- /dev/null
@@ -0,0 +1,52 @@
+{% extends "telemeta/base.html" %}
+{% load i18n adminmedia %}
+{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% admin_media_prefix %}css/forms.css" />{% endblock %}
+{% block userlinks %}{% url django-admindocs-docroot as docsroot %}{% if docsroot %}<a href="{{ docsroot }}">{% trans 'Documentation' %}</a> / {% endif %} {% trans 'Change password' %} / <a href="../logout/">{% trans 'Log out' %}</a>{% endblock %}
+{% block breadcrumbs %}<div class="breadcrumbs"><a href="../">{% trans 'Home' %}</a> &rsaquo; {% trans 'Password change' %}</div>{% endblock %}
+
+{% block title %}{% trans 'Password change' %}{% endblock %}
+
+{% block content %}<div id="content-main">
+
+<form id="password_change" action="" method="post">{% csrf_token %}
+<div>
+{% if form.errors %}
+    <p class="errornote">
+    {% blocktrans count form.errors.items|length as counter %}Please correct the error below.{% plural %}Please correct the errors below.{% endblocktrans %}
+    </p>
+{% endif %}
+
+<h1>{% trans 'Password change' %}</h1>
+
+<p>{% trans "Please enter your old password, for security's sake, and then enter your new password twice so we can verify you typed it in correctly." %}</p>
+
+<fieldset class="aligned wide">
+
+<div class="form-row">
+    {{ form.old_password.errors }}
+    <label for="id_old_password" class="required">{% trans 'Old password' %}:</label>{{ form.old_password }}
+</div>
+
+<div class="form-row">
+    {{ form.new_password1.errors }}
+    <label for="id_new_password1" class="required">{% trans 'New password' %}:</label>{{ form.new_password1 }}
+</div>
+
+<div class="form-row">
+{{ form.new_password2.errors }}
+    <label for="id_new_password2" class="required">{% trans 'Password (again)' %}:</label>{{ form.new_password2 }}
+</div>
+
+</fieldset>
+
+<br />
+<div class="submit-row">
+   <a href="#" class="component_icon button icon_save"
+   onclick="document.getElementById('password_change').submit(); return false;">{% trans 'Change my password' %}</a>
+</div>
+
+<script type="text/javascript">document.getElementById("id_old_password").focus();</script>
+</div>
+</form></div>
+
+{% endblock %}
diff --git a/telemeta/templates/telemeta_default/registration/password_reset_complete.html b/telemeta/templates/telemeta_default/registration/password_reset_complete.html
new file mode 100644 (file)
index 0000000..140b817
--- /dev/null
@@ -0,0 +1,16 @@
+{% extends "telemeta/base.html" %}
+{% load i18n %}
+
+{% block breadcrumbs %}<div class="breadcrumbs"><a href="../../">{% trans 'Home' %}</a> &rsaquo; {% trans 'Password reset' %}</div>{% endblock %}
+
+{% block title %}{% trans 'Password reset complete' %}{% endblock %}
+
+{% block content %}
+
+<h1>{% trans 'Password reset complete' %}</h1>
+
+<p>{% trans "Your password has been set.  You may go ahead and log in now." %}</p>
+
+<p><a href="{{ login_url }}">{% trans 'Log in' %}</a></p>
+
+{% endblock %}
diff --git a/telemeta/templates/telemeta_default/registration/password_reset_confirm.html b/telemeta/templates/telemeta_default/registration/password_reset_confirm.html
new file mode 100644 (file)
index 0000000..347df5a
--- /dev/null
@@ -0,0 +1,32 @@
+{% extends "telemeta/base.html" %}
+{% load i18n %}
+
+{% block breadcrumbs %}<div class="breadcrumbs"><a href="../">{% trans 'Home' %}</a> &rsaquo; {% trans 'Password reset confirmation' %}</div>{% endblock %}
+
+{% block title %}{% trans 'Password reset' %}{% endblock %}
+
+{% block content %}
+
+{% if validlink %}
+
+<h1>{% trans 'Enter new password' %}</h1>
+
+<p>{% trans "Please enter your new password twice so we can verify you typed it in correctly." %}</p>
+
+<form id="password_confirm" action="" method="post">{% csrf_token %}
+{{ form.new_password1.errors }}
+<p class="aligned wide"><label for="id_new_password1">{% trans 'New password:' %}</label>{{ form.new_password1 }}</p>
+{{ form.new_password2.errors }}
+<p class="aligned wide"><label for="id_new_password2">{% trans 'Confirm password:' %}</label>{{ form.new_password2 }}</p>
+<p><a href="#" class="component_icon button icon_save" onclick="document.getElementById('password_confirm').submit(); return false;">{% trans 'Change my password' %}</a></p>
+</form>
+
+{% else %}
+
+<h1>{% trans 'Password reset unsuccessful' %}</h1>
+
+<p>{% trans "The password reset link was invalid, possibly because it has already been used.  Please request a new password reset." %}</p>
+
+{% endif %}
+
+{% endblock %}
diff --git a/telemeta/templates/telemeta_default/registration/password_reset_done.html b/telemeta/templates/telemeta_default/registration/password_reset_done.html
new file mode 100644 (file)
index 0000000..cc77602
--- /dev/null
@@ -0,0 +1,14 @@
+{% extends "telemeta/base.html" %}
+{% load i18n %}
+
+{% block breadcrumbs %}<div class="breadcrumbs"><a href="../">{% trans 'Home' %}</a> &rsaquo; {% trans 'Password reset' %}</div>{% endblock %}
+
+{% block title %}{% trans 'Password reset successful' %}{% endblock %}
+
+{% block content %}
+
+<h1>{% trans 'Password reset successful' %}</h1>
+
+<p>{% trans "We've e-mailed you instructions for setting your password to the e-mail address you submitted. You should be receiving it shortly." %}</p>
+
+{% endblock %}
diff --git a/telemeta/templates/telemeta_default/registration/password_reset_email.html b/telemeta/templates/telemeta_default/registration/password_reset_email.html
new file mode 100644 (file)
index 0000000..3b786ac
--- /dev/null
@@ -0,0 +1,15 @@
+{% load i18n %}{% autoescape off %}
+{% trans "You're receiving this e-mail because you requested a password reset" %}
+{% blocktrans %}for your user account at {{ site_name }}{% endblocktrans %}.
+
+{% trans "Please go to the following page and choose a new password:" %}
+{% block reset_link %}
+{{ protocol }}://{{ domain }}{% url telemeta-password-reset-confirm uidb36=uid token=token %}
+{% endblock %}
+{% trans "Your username, in case you've forgotten:" %} {{ user.username }}
+
+{% trans "Thanks for using our site!" %}
+
+{% blocktrans %}The {{ site_name }} team{% endblocktrans %}
+
+{% endautoescape %}
diff --git a/telemeta/templates/telemeta_default/registration/password_reset_form.html b/telemeta/templates/telemeta_default/registration/password_reset_form.html
new file mode 100644 (file)
index 0000000..9003af5
--- /dev/null
@@ -0,0 +1,19 @@
+{% extends "telemeta/base.html" %}
+{% load i18n %}
+
+{% block breadcrumbs %}<div class="breadcrumbs"><a href="../">{% trans 'Home' %}</a> &rsaquo; {% trans 'Password reset' %}</div>{% endblock %}
+
+{% block title %}{% trans "Password reset" %}{% endblock %}
+
+{% block content %}
+
+<h1>{% trans "Password reset" %}</h1>
+
+<p>{% trans "Forgotten your password? Enter your e-mail address below, and we'll e-mail instructions for setting a new one." %}</p>
+
+<form id="password_reset" action="" method="post">{% csrf_token %}
+{{ form.email.errors }}
+<p><label for="id_email">{% trans 'E-mail address:' %}</label> {{ form.email }} <a href="#" class="component_icon button icon_ok" onclick="document.getElementById('password_reset').submit(); return false;">{% trans 'Reset my password' %}</a></p>
+</form>
+
+{% endblock %}
index 5b3aefe8530b843b02addb7ab45c7e46afce3dea..500aa2782d91e97f871f14a6d95d7656c5230916 100644 (file)
@@ -215,11 +215,21 @@ urlpatterns = patterns('',
     url(r'^login/$', 'django.contrib.auth.views.login', {'template_name': 'telemeta/login.html'},
         name="telemeta-login"),
     url(r'^logout/$', web_view.logout, name="telemeta-logout"),
-    
+
     # Profile
     url(r'^accounts/(?P<username>[A-Za-z0-9._-]+)/profile/$', web_view.profile_detail, name="telemeta-profile-detail"),
     url(r'^accounts/(?P<username>[A-Za-z0-9._-]+)/profile/edit/$', web_view.profile_edit, name="telemeta-profile-edit"),
     
+    # Registration
+    url(r'^accounts/password_change/$', 'django.contrib.auth.views.password_change', {'template_name': 'telemeta/registration/password_change_form.html'}, name="telemeta-password-change"),
+    url(r'^accounts/password_change_done/$', 'django.contrib.auth.views.password_change_done', {'template_name': 'telemeta/registration/password_change_done.html'}, name="telemeta-password-change-done"),
+    
+    url(r'^accounts/password_reset/$', 'django.contrib.auth.views.password_reset', {'template_name': 'telemeta/registration/password_reset_form.html', 'email_template_name': 'telemeta/registration/password_reset_email.html'}, name="telemeta-password-reset"),
+    url(r'^accounts/password_reset_done/$', 'django.contrib.auth.views.password_reset_done', {'template_name': 'telemeta/registration/password_reset_done.html'}, name="telemeta-password-reset-done"),
+    url(r'^accounts/password_reset_confirm/(?P<uidb36>[A-Za-z0-9._-]+)/(?P<token>[A-Za-z0-9._-]+)/$', 'django.contrib.auth.views.password_reset_confirm', {'template_name': 'telemeta/registration/password_reset_confirm.html'}, name="telemeta-password-reset-confirm"),
+    url(r'^accounts/password_reset_complete/$', 'django.contrib.auth.views.password_reset_complete', {'template_name': 'telemeta/registration/password_reset_complete.html'}, name="telemeta-password-reset-complete"),
+    url(r'^accounts/password_reset_complete/$', 'django.contrib.auth.views.password_reset_complete', {'template_name': 'telemeta/registration/password_reset_complete.html'}, name="telemeta-password-reset-complete"),
+       
     # JSON RPC
     url(r'^json/browse/', 'jsonrpc.views.browse', name="jsonrpc_browser"), # for the graphical browser/web console only, omissible
     url(r'^json/$', jsonrpc_site.dispatch, name='jsonrpc_mountpoint'),
index 972747690c482b223402512147a91e8322dbcbaa..90131ccafe7512ead18490da609359ab133fa727 100644 (file)
@@ -1092,7 +1092,7 @@ class WebView(object):
         
     def profile_edit(self, request, username, template='telemeta/profile_edit.html'):
         if request.user.is_staff:
-            user_hidden_fields = []
+            user_hidden_fields = ['profile-user', 'user-password', 'user-last_login', 'user-date_joined']
         else:
             user_hidden_fields = ['user-username', 'user-is_staff', 'profile-user', 'user-is_active', 
                          'user-password', 'user-last_login', 'user-date_joined', 'user-groups', 
@@ -1118,5 +1118,5 @@ class WebView(object):
             user_form = UserChangeForm(instance=user, prefix='user')
             profile_form = UserProfileForm(instance=profile, prefix='profile')
             forms = [user_form, profile_form]
-        return render(request, template, {'forms': forms, 'usr': user, 'hidden_fields': user_hidden_fields})
+        return render(request, template, {'forms': forms, 'usr': user, 'user_hidden_fields': user_hidden_fields})