From fa66316f8aca59ecdf70ea10adcdfe20fcc11690 Mon Sep 17 00:00:00 2001 From: Hiroshi Miura Date: Mon, 20 Jul 2015 09:39:11 +0900 Subject: [PATCH] form key ordering: detect django version - Django 1.6 and before use SortedDict instead of OrderedDict It detect version and return proper dict for key ordering. - field deletion is done by reorder funcion. Signed-off-by: Hiroshi Miura --- symposion/forms.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/symposion/forms.py b/symposion/forms.py index dcf96e3d..e207a0fd 100644 --- a/symposion/forms.py +++ b/symposion/forms.py @@ -1,6 +1,7 @@ from collections import OrderedDict from django import forms +from django import VERSION as django_VERSION import account.forms @@ -13,7 +14,6 @@ class SignupForm(account.forms.SignupForm): def __init__(self, *args, **kwargs): super(SignupForm, self).__init__(*args, **kwargs) - del self.fields["username"] key_order = [ "email", "email_confirm", @@ -46,4 +46,10 @@ def reorder_fields(fields, order): if key not in order: del fields[key] - return OrderedDict(sorted(fields.items(), key=lambda k: order.index(k[0]))) + if django_VERSION < (1, 7, 0): + # 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])))