From: yomguy
Date: Thu, 31 Mar 2011 15:33:09 +0000 (+0200)
Subject: complete account registration and password handling
X-Git-Tag: 1.1~301
X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=128b571832cd2f386823f40a7baa212bfad129c8;p=telemeta.git
complete account registration and password handling
---
diff --git a/telemeta/locale/fr/LC_MESSAGES/django.mo b/telemeta/locale/fr/LC_MESSAGES/django.mo
index 1519873d..12888708 100644
Binary files a/telemeta/locale/fr/LC_MESSAGES/django.mo and b/telemeta/locale/fr/LC_MESSAGES/django.mo differ
diff --git a/telemeta/locale/fr/LC_MESSAGES/django.po b/telemeta/locale/fr/LC_MESSAGES/django.po
index d3591816..6e5b553b 100644
--- a/telemeta/locale/fr/LC_MESSAGES/django.po
+++ b/telemeta/locale/fr/LC_MESSAGES/django.po
@@ -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
index 00000000..12e792ac
--- /dev/null
+++ b/telemeta/templates/telemeta/registration/logged_out.html
@@ -0,0 +1,12 @@
+{% extends "telemeta/base.html" %}
+{% load i18n %}
+
+{% block breadcrumbs %}{% endblock %}
+
+{% block content %}
+
+{% trans "Thanks for spending some quality time with the Web site today." %}
+
+{% trans 'Log in again' %}
+
+{% 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
index 00000000..63bc2191
--- /dev/null
+++ b/telemeta/templates/telemeta/registration/password_change_done.html
@@ -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
index 00000000..c2f232c2
--- /dev/null
+++ b/telemeta/templates/telemeta/registration/password_change_form.html
@@ -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
index 00000000..069712c9
--- /dev/null
+++ b/telemeta/templates/telemeta/registration/password_reset_complete.html
@@ -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
index 00000000..cf76fccf
--- /dev/null
+++ b/telemeta/templates/telemeta/registration/password_reset_confirm.html
@@ -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
index 00000000..d32a6dde
--- /dev/null
+++ b/telemeta/templates/telemeta/registration/password_reset_done.html
@@ -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
index 00000000..7c1c2731
--- /dev/null
+++ b/telemeta/templates/telemeta/registration/password_reset_email.html
@@ -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
index 00000000..f02a94c9
--- /dev/null
+++ b/telemeta/templates/telemeta/registration/password_reset_form.html
@@ -0,0 +1 @@
+{% extends "telemeta_default/registration/password_reset_form.html" %}
\ No newline at end of file
diff --git a/telemeta/templates/telemeta_default/login.html b/telemeta/templates/telemeta_default/login.html
index 6997ae68..ff3d92a0 100644
--- a/telemeta/templates/telemeta_default/login.html
+++ b/telemeta/templates/telemeta_default/login.html
@@ -3,7 +3,7 @@
{% block content %}
{% trans "User authentication" %}
-
+
{% if form.errors %}
{% trans "Your username and password didn't match. Please try again." %}
{% endif %}
@@ -17,10 +17,11 @@
{{ form.password }}
-{% trans "Sign in" %}
-
+{% trans "Password forgotten" %} ?
+
{% endblock %}
diff --git a/telemeta/templates/telemeta_default/profile_detail.html b/telemeta/templates/telemeta_default/profile_detail.html
index 4589484e..437981a1 100644
--- a/telemeta/templates/telemeta_default/profile_detail.html
+++ b/telemeta/templates/telemeta_default/profile_detail.html
@@ -46,6 +46,7 @@
{% trans "Last login" %}{{ usr.last_login }}
+ {% trans "Change password" %}
{% endblock %}
diff --git a/telemeta/templates/telemeta_default/profile_edit.html b/telemeta/templates/telemeta_default/profile_edit.html
index 59c40bfb..936f03b2 100644
--- a/telemeta/templates/telemeta_default/profile_edit.html
+++ b/telemeta/templates/telemeta_default/profile_edit.html
@@ -14,7 +14,7 @@
{% 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 %}
{{ field.errors }} |
{% trans field.label_tag %} : | {{ field }} |
diff --git a/telemeta/templates/telemeta_default/registration/logged_out.html b/telemeta/templates/telemeta_default/registration/logged_out.html
new file mode 100644
index 00000000..12e792ac
--- /dev/null
+++ b/telemeta/templates/telemeta_default/registration/logged_out.html
@@ -0,0 +1,12 @@
+{% extends "telemeta/base.html" %}
+{% load i18n %}
+
+{% block breadcrumbs %}{% endblock %}
+
+{% block content %}
+
+{% trans "Thanks for spending some quality time with the Web site today." %}
+
+{% trans 'Log in again' %}
+
+{% 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
index 00000000..4037fc11
--- /dev/null
+++ b/telemeta/templates/telemeta_default/registration/password_change_done.html
@@ -0,0 +1,14 @@
+{% extends "telemeta/base.html" %}
+{% load i18n %}
+{% block userlinks %}{% url django-admindocs-docroot as docsroot %}{% if docsroot %}{% trans 'Documentation' %} / {% endif %}{% trans 'Change password' %} / {% trans 'Log out' %}{% endblock %}
+{% block breadcrumbs %}{% endblock %}
+
+{% block title %}{% trans 'Password change successful' %}{% endblock %}
+
+{% block content %}
+
+{% trans 'Password change successful' %}
+
+{% trans 'Your password was changed.' %}
+
+{% 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
index 00000000..f44fb607
--- /dev/null
+++ b/telemeta/templates/telemeta_default/registration/password_change_form.html
@@ -0,0 +1,52 @@
+{% extends "telemeta/base.html" %}
+{% load i18n adminmedia %}
+{% block extrastyle %}{{ block.super }}{% endblock %}
+{% block userlinks %}{% url django-admindocs-docroot as docsroot %}{% if docsroot %}{% trans 'Documentation' %} / {% endif %} {% trans 'Change password' %} / {% trans 'Log out' %}{% endblock %}
+{% block breadcrumbs %}{% endblock %}
+
+{% block title %}{% trans 'Password change' %}{% endblock %}
+
+{% block content %}
+
+{% 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
index 00000000..140b8174
--- /dev/null
+++ b/telemeta/templates/telemeta_default/registration/password_reset_complete.html
@@ -0,0 +1,16 @@
+{% extends "telemeta/base.html" %}
+{% load i18n %}
+
+{% block breadcrumbs %}{% endblock %}
+
+{% block title %}{% trans 'Password reset complete' %}{% endblock %}
+
+{% block content %}
+
+{% trans 'Password reset complete' %}
+
+{% trans "Your password has been set. You may go ahead and log in now." %}
+
+{% trans 'Log in' %}
+
+{% 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
index 00000000..347df5a0
--- /dev/null
+++ b/telemeta/templates/telemeta_default/registration/password_reset_confirm.html
@@ -0,0 +1,32 @@
+{% extends "telemeta/base.html" %}
+{% load i18n %}
+
+{% block breadcrumbs %}{% endblock %}
+
+{% block title %}{% trans 'Password reset' %}{% endblock %}
+
+{% block content %}
+
+{% if validlink %}
+
+{% trans 'Enter new password' %}
+
+{% trans "Please enter your new password twice so we can verify you typed it in correctly." %}
+
+
+
+{% else %}
+
+{% trans 'Password reset unsuccessful' %}
+
+{% trans "The password reset link was invalid, possibly because it has already been used. Please request a new password reset." %}
+
+{% 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
index 00000000..cc776025
--- /dev/null
+++ b/telemeta/templates/telemeta_default/registration/password_reset_done.html
@@ -0,0 +1,14 @@
+{% extends "telemeta/base.html" %}
+{% load i18n %}
+
+{% block breadcrumbs %}{% endblock %}
+
+{% block title %}{% trans 'Password reset successful' %}{% endblock %}
+
+{% block content %}
+
+{% trans 'Password reset successful' %}
+
+{% trans "We've e-mailed you instructions for setting your password to the e-mail address you submitted. You should be receiving it shortly." %}
+
+{% 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
index 00000000..3b786ac4
--- /dev/null
+++ b/telemeta/templates/telemeta_default/registration/password_reset_email.html
@@ -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
index 00000000..9003af5e
--- /dev/null
+++ b/telemeta/templates/telemeta_default/registration/password_reset_form.html
@@ -0,0 +1,19 @@
+{% extends "telemeta/base.html" %}
+{% load i18n %}
+
+{% block breadcrumbs %}{% endblock %}
+
+{% block title %}{% trans "Password reset" %}{% endblock %}
+
+{% block content %}
+
+{% trans "Password reset" %}
+
+{% trans "Forgotten your password? Enter your e-mail address below, and we'll e-mail instructions for setting a new one." %}
+
+
+
+{% endblock %}
diff --git a/telemeta/urls.py b/telemeta/urls.py
index 5b3aefe8..500aa278 100644
--- a/telemeta/urls.py
+++ b/telemeta/urls.py
@@ -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[A-Za-z0-9._-]+)/profile/$', web_view.profile_detail, name="telemeta-profile-detail"),
url(r'^accounts/(?P[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[A-Za-z0-9._-]+)/(?P[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'),
diff --git a/telemeta/web/base.py b/telemeta/web/base.py
index 97274769..90131cca 100644
--- a/telemeta/web/base.py
+++ b/telemeta/web/base.py
@@ -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})