3207621058
- forms for labels and helps - views for success or warning messages - apps and models verbose_names for admin Signed-off-by: Hiroshi Miura <miurahr@linux.com>
58 lines
1.7 KiB
Python
58 lines
1.7 KiB
Python
try:
|
|
from collections import OrderedDict
|
|
except ImportError:
|
|
OrderedDict = None
|
|
|
|
from django import forms
|
|
|
|
import account.forms
|
|
from django.utils.translation import ugettext_lazy as _
|
|
|
|
|
|
class SignupForm(account.forms.SignupForm):
|
|
|
|
first_name = forms.CharField(label=_("First name"))
|
|
last_name = forms.CharField(label=_("Last name"))
|
|
email_confirm = forms.EmailField(label=_("Confirm Email"))
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
super(SignupForm, self).__init__(*args, **kwargs)
|
|
key_order = [
|
|
"email",
|
|
"email_confirm",
|
|
"first_name",
|
|
"last_name",
|
|
"password",
|
|
"password_confirm"
|
|
]
|
|
self.fields = reorder_fields(self.fields, key_order)
|
|
|
|
def clean_email_confirm(self):
|
|
email = self.cleaned_data.get("email")
|
|
email_confirm = self.cleaned_data["email_confirm"]
|
|
if email:
|
|
if email != email_confirm:
|
|
raise forms.ValidationError(
|
|
_("Email address must match previously typed email address"))
|
|
return email_confirm
|
|
|
|
|
|
def reorder_fields(fields, order):
|
|
"""Reorder form fields by order, removing items not in order.
|
|
|
|
>>> reorder_fields(
|
|
... OrderedDict([('a', 1), ('b', 2), ('c', 3)]),
|
|
... ['b', 'c', 'a'])
|
|
OrderedDict([('b', 2), ('c', 3), ('a', 1)])
|
|
"""
|
|
for key, v in fields.items():
|
|
if key not in order:
|
|
del fields[key]
|
|
|
|
if not OrderedDict or hasattr(fields, "keyOrder"):
|
|
# fields is SortedDict
|
|
fields.keyOrder.sort(key=lambda k: order.index(k[0]))
|
|
return fields
|
|
else:
|
|
# fields is OrderedDict
|
|
return OrderedDict(sorted(fields.items(), key=lambda k: order.index(k[0])))
|