Django

Code

Ticket #10968: patch.diff

File patch.diff, 2.4 kB (added by matehat, 11 months ago)

Patch for django.forms.forms.py and regressiontests

  • django/forms/forms.py

    old new  
    243243                    value = getattr(self, 'clean_%s' % name)() 
    244244                    self.cleaned_data[name] = value 
    245245            except ValidationError, e: 
    246                 self._errors[name] = e.messages 
     246                self._errors[name] = self.error_class(e.messages) 
     247#                self._errors[name] = e.messages 
    247248                if name in self.cleaned_data: 
    248249                    del self.cleaned_data[name] 
    249250        try: 
  • tests/regressiontests/forms/error_messages.py

    old new  
    358358Traceback (most recent call last): 
    359359... 
    360360ValidationError: [u'4 IS INVALID CHOICE'] 
     361 
     362# Subclassing ErrorList ####################################################### 
     363 
     364>>> from django.forms import * 
     365>>> from django.utils.safestring import mark_safe 
     366>>>  
     367>>> class TestForm(Form): 
     368...      first_name = CharField() 
     369...      last_name = CharField() 
     370...      birthday = DateField() 
     371...  
     372>>> class CustomErrorList(util.ErrorList): 
     373...      def __unicode__(self): 
     374...          return self.as_divs() 
     375...      def as_divs(self): 
     376...          if not self: return u'' 
     377...          return mark_safe(u'<div class="error">%s</div>' 
     378...                    % ''.join([u'<p>%s</p>' % e for e in self])) 
     379...  
     380 
     381This form should print errors the default way. 
     382>>> form1 = TestForm({'first_name': 'John'}) 
     383>>> print form1.errors 
     384<ul class="errorlist"><li>last_name<ul class="errorlist"><li>This field is required.</li></ul></li><li>birthday<ul class="errorlist"><li>This field is required.</li></ul></li></ul> 
     385>>> print form1['last_name'].errors 
     386<ul class="errorlist"><li>This field is required.</li></ul> 
     387 
     388This one should wrap error groups in the customized way. 
     389>>> form2 = TestForm({'first_name': 'John'}, error_class=CustomErrorList) 
     390>>> print form2.errors 
     391<ul class="errorlist"><li>last_name<div class="error"><p>This field is required.</p></div></li><li>birthday<div class="error"><p>This field is required.</p></div></li></ul> 
     392>>> print form2['last_name'].errors 
     393<div class="error"><p>This field is required.</p></div> 
     394 
    361395"""