Commits

Anonymous committed 7a55792

Fixed #3278 -- newforms: Fixed bug in DeclarativeFieldsMetaclass where it inadvertently overrode the class' name. Thanks, russblau@imapmail.org

Comments (0)

Files changed (2)

django/newforms/forms.py

 class DeclarativeFieldsMetaclass(type):
     "Metaclass that converts Field attributes to a dictionary called 'fields'."
     def __new__(cls, name, bases, attrs):
-        fields = [(name, attrs.pop(name)) for name, obj in attrs.items() if isinstance(obj, Field)]
+        fields = [(field_name, attrs.pop(field_name)) for field_name, obj in attrs.items() if isinstance(obj, Field)]
         fields.sort(lambda x, y: cmp(x[1].creation_counter, y[1].creation_counter))
         attrs['fields'] = SortedDictFromList(fields)
         return type.__new__(cls, name, bases, attrs)

tests/regressiontests/forms/tests.py

 >>> p.clean_data
 Traceback (most recent call last):
 ...
-AttributeError: 'birthday' object has no attribute 'clean_data'
+AttributeError: 'Person' object has no attribute 'clean_data'
 >>> print p
 <tr><th><label for="id_first_name">First name:</label></th><td><ul class="errorlist"><li>This field is required.</li></ul><input type="text" name="first_name" id="id_first_name" /></td></tr>
 <tr><th><label for="id_last_name">Last name:</label></th><td><ul class="errorlist"><li>This field is required.</li></ul><input type="text" name="last_name" id="id_last_name" /></td></tr>
 >>> p.clean_data
 Traceback (most recent call last):
 ...
-AttributeError: 'birthday' object has no attribute 'clean_data'
+AttributeError: 'Person' object has no attribute 'clean_data'
 >>> print p
 <tr><th><label for="id_first_name">First name:</label></th><td><input type="text" name="first_name" id="id_first_name" /></td></tr>
 <tr><th><label for="id_last_name">Last name:</label></th><td><input type="text" name="last_name" id="id_last_name" /></td></tr>
 >>> p.clean_data
 Traceback (most recent call last):
 ...
-AttributeError: 'birthday' object has no attribute 'clean_data'
+AttributeError: 'Person' object has no attribute 'clean_data'
 >>> p['first_name'].errors
 [u'This field is required.']
 >>> p['first_name'].errors.as_ul()