Minor fix in application help text
[flowspy] / longerusername / forms.py
1 from django.utils.translation import ugettext as _
2 from django.core.validators import MaxLengthValidator
3 from django.contrib.auth import forms as auth_forms
4 from django import forms
5
6 from longerusername import MAX_USERNAME_LENGTH
7
8 def update_username_field(field):
9     field.widget.attrs['maxlength'] = MAX_USERNAME_LENGTH()
10     field.max_length = MAX_USERNAME_LENGTH()
11     field.help_text = _("Required, %s characters or fewer. Only letters, "
12                         "numbers, and characters such as @.+_- are "
13                         "allowed." % MAX_USERNAME_LENGTH())
14
15     # we need to find the MaxLengthValidator and change its
16     # limit_value otherwise the auth forms will fail validation
17     for v in field.validators:
18         if isinstance(v, MaxLengthValidator):
19             v.limit_value = MAX_USERNAME_LENGTH()
20
21 class UserCreationForm(auth_forms.UserCreationForm):
22     def __init__(self, *args, **kwargs):
23         super(UserCreationForm, self).__init__(*args, **kwargs)
24         update_username_field(self.fields['username'])
25
26 class UserChangeForm(auth_forms.UserChangeForm):
27     def __init__(self, *args, **kwargs):
28         super(UserChangeForm, self).__init__(*args, **kwargs)
29         update_username_field(self.fields['username'])
30
31 class AuthenticationForm(auth_forms.AuthenticationForm):
32     def __init__(self, *args, **kwargs):
33         super(AuthenticationForm, self).__init__(*args, **kwargs)
34         update_username_field(self.fields['username'])