From a07c196929738c80dfba54e25b0ce82a699a6fda Mon Sep 17 00:00:00 2001 From: cketti Date: Tue, 17 Dec 2013 01:19:37 +0100 Subject: [PATCH 1/3] Fix typo in german translation --- account/locale/de/LC_MESSAGES/django.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/account/locale/de/LC_MESSAGES/django.po b/account/locale/de/LC_MESSAGES/django.po index ba122c0..cb9f6c9 100644 --- a/account/locale/de/LC_MESSAGES/django.po +++ b/account/locale/de/LC_MESSAGES/django.po @@ -206,7 +206,7 @@ msgstr "c-lab-PIN" #: templates/clabpin.html:8 msgid "Change your c-lab PIN to access the c-lab in the basement." -msgstr "PIN ändern für den Zugang um c-lab im Keller." +msgstr "PIN ändern für den Zugang zum c-lab im Keller." #: templates/gastropin.html:5 msgid "Gastro PIN" From 1cbeb07b1e4eb277bae3b219c45a789694608c2f Mon Sep 17 00:00:00 2001 From: smile Date: Sat, 8 Feb 2014 20:39:08 +0100 Subject: [PATCH 2/3] fixed username case sensitivity problems --- account/forms.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/account/forms.py b/account/forms.py index 1558bb8..0db0a99 100644 --- a/account/forms.py +++ b/account/forms.py @@ -14,7 +14,7 @@ class LoginForm(forms.Form): help_text=_('Cookies must be enabled.')) def clean(self): - username = self.cleaned_data.get('username') + username = self.cleaned_data.get('username').lower() password = self.cleaned_data.get('password') user = authenticate(username=username, password=password) if not user or not user.is_active: @@ -23,7 +23,7 @@ class LoginForm(forms.Form): return self.cleaned_data def login(self, request): - username = self.cleaned_data.get('username') + username = self.cleaned_data.get('username').lower() password = self.cleaned_data.get('password') user = authenticate(username=username, password=password) return user @@ -79,7 +79,7 @@ class PasswordForm(forms.Form): def clean(self): cleaned_data = super(PasswordForm, self).clean() old_password = cleaned_data.get('old_password') - username = self._request.user.username + username = self._request.user.username.lower() user = authenticate(username=username, password=old_password) if not user or not user.is_active: From afe6655e84f877d7c899030c87e9b4c9ebfbf370 Mon Sep 17 00:00:00 2001 From: Uwe Kamper Date: Thu, 13 Feb 2014 23:20:20 +0100 Subject: [PATCH 3/3] Resolve an error that corrupts the local database when a user logs in with a mixed-case username --- account/forms.py | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) mode change 100644 => 100755 account/forms.py diff --git a/account/forms.py b/account/forms.py old mode 100644 new mode 100755 index 0db0a99..1acf493 --- a/account/forms.py +++ b/account/forms.py @@ -7,14 +7,28 @@ from django import forms from django.contrib.auth import authenticate from django.utils.translation import ugettext as _ +class UsernameField(forms.CharField): + """ + The username field makes sure that usernames are always entered in lower-case. + If we do not convert the username to lower-case, Django will create more than + one user object in the database. If we then try to login again, the Django auth + subsystem will do an query that looks like this: username__iexact="username". The + result is an error, because iexact returns the objects for "username" and "Username". + """ + + def to_python(self, value): + value = super(UsernameField, self).to_python(value) + value = value.lower() + return value + class LoginForm(forms.Form): - username = forms.CharField(max_length=255) + username = UsernameField(max_length=255) password = forms.CharField(max_length=255, widget=forms.PasswordInput, help_text=_('Cookies must be enabled.')) - + def clean(self): - username = self.cleaned_data.get('username').lower() + username = self.cleaned_data.get('username') password = self.cleaned_data.get('password') user = authenticate(username=username, password=password) if not user or not user.is_active: @@ -23,7 +37,7 @@ class LoginForm(forms.Form): return self.cleaned_data def login(self, request): - username = self.cleaned_data.get('username').lower() + username = self.cleaned_data.get('username') password = self.cleaned_data.get('password') user = authenticate(username=username, password=password) return user