Changeset 6176
- Timestamp:
- 09/14/07 02:19:38 (10 months ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/trunk/django/contrib/localflavor/br/forms.py
r5876 r6176 7 7 from django.newforms.fields import Field, RegexField, CharField, Select, EMPTY_VALUES 8 8 from django.utils.encoding import smart_unicode 9 from django.utils.translation import ugettext 9 from django.utils.translation import ugettext as _ 10 10 import re 11 11 … … 16 16 super(BRZipCodeField, self).__init__(r'^\d{5}-\d{3}$', 17 17 max_length=None, min_length=None, 18 error_message= ugettext('Enter a zip code in the format XXXXX-XXX.'),18 error_message=_('Enter a zip code in the format XXXXX-XXX.'), 19 19 *args, **kwargs) 20 20 … … 28 28 if m: 29 29 return u'%s-%s-%s' % (m.group(1), m.group(2), m.group(3)) 30 raise ValidationError( ugettext('Phone numbers must be in XX-XXXX-XXXX format.'))30 raise ValidationError(_('Phone numbers must be in XX-XXXX-XXXX format.')) 31 31 32 32 class BRStateSelect(Select): … … 39 39 super(BRStateSelect, self).__init__(attrs, choices=STATE_CHOICES) 40 40 41 class BRStateChoiceField(Field): 42 """ 43 A choice field that uses a list of Brazilian states as its choices. 44 """ 45 widget = Select 46 47 def __init__(self, required=True, widget=None, label=None, 48 initial=None, help_text=None): 49 super(BRStateChoiceField, self).__init__(required, widget, label, 50 initial, help_text) 51 from br_states import STATE_CHOICES 52 self.widget.choices = STATE_CHOICES 53 54 def clean(self, value): 55 value = super(BRStateChoiceField, self).clean(value) 56 if value in EMPTY_VALUES: 57 value = u'' 58 value = smart_unicode(value) 59 if value == u'': 60 return value 61 valid_values = set([smart_unicode(k) for k, v in self.widget.choices]) 62 if value not in valid_values: 63 raise ValidationError(_(u'Select a valid brazilian state.' 64 u' That state is not one' 65 u' of the available states.')) 66 return value 41 67 42 68 def DV_maker(v): … … 70 96 int(value) 71 97 except ValueError: 72 raise ValidationError( ugettext("This field requires only numbers."))98 raise ValidationError(_("This field requires only numbers.")) 73 99 if len(value) != 11: 74 raise ValidationError( ugettext("This field requires at most 11 digits or 14 characters."))100 raise ValidationError(_("This field requires at most 11 digits or 14 characters.")) 75 101 orig_dv = value[-2:] 76 102 … … 82 108 value = value[:-1] + str(new_2dv) 83 109 if value[-2:] != orig_dv: 84 raise ValidationError( ugettext("Invalid CPF number."))110 raise ValidationError(_("Invalid CPF number.")) 85 111 86 112 return orig_value … … 104 130 if len(value) != 14: 105 131 raise ValidationError( 106 ugettext("This field requires at least 14 digits"))132 _("This field requires at least 14 digits")) 107 133 orig_dv = value[-2:] 108 134 … … 114 140 value = value[:-1] + str(new_2dv) 115 141 if value[-2:] != orig_dv: 116 raise ValidationError( ugettext("Invalid CNPJ number."))142 raise ValidationError(_("Invalid CNPJ number.")) 117 143 118 144 return orig_value django/trunk/tests/regressiontests/forms/localflavor.py
r6145 r6176 981 981 u'<select name="states">\n<option value="AC">Acre</option>\n<option value="AL">Alagoas</option>\n<option value="AP">Amap\xe1</option>\n<option value="AM">Amazonas</option>\n<option value="BA">Bahia</option>\n<option value="CE">Cear\xe1</option>\n<option value="DF">Distrito Federal</option>\n<option value="ES">Esp\xedrito Santo</option>\n<option value="GO">Goi\xe1s</option>\n<option value="MA">Maranh\xe3o</option>\n<option value="MT">Mato Grosso</option>\n<option value="MS">Mato Grosso do Sul</option>\n<option value="MG">Minas Gerais</option>\n<option value="PA">Par\xe1</option>\n<option value="PB">Para\xedba</option>\n<option value="PR" selected="selected">Paran\xe1</option>\n<option value="PE">Pernambuco</option>\n<option value="PI">Piau\xed</option>\n<option value="RJ">Rio de Janeiro</option>\n<option value="RN">Rio Grande do Norte</option>\n<option value="RS">Rio Grande do Sul</option>\n<option value="RO">Rond\xf4nia</option>\n<option value="RR">Roraima</option>\n<option value="SC">Santa Catarina</option>\n<option value="SP">S\xe3o Paulo</option>\n<option value="SE">Sergipe</option>\n<option value="TO">Tocantins</option>\n</select>' 982 982 983 # BRStateChoiceField ######################################################### 984 >>> from django.contrib.localflavor.br.forms import BRStateChoiceField 985 >>> f = BRStateChoiceField() 986 >>> ', '.join([f.clean(s) for s, _ in f.widget.choices]) 987 u'AC, AL, AP, AM, BA, CE, DF, ES, GO, MA, MT, MS, MG, PA, PB, PR, PE, PI, RJ, RN, RS, RO, RR, SC, SP, SE, TO' 988 >>> f.clean('') 989 Traceback (most recent call last): 990 ... 991 ValidationError: [u'This field is required.'] 992 >>> f.clean('pr') 993 Traceback (most recent call last): 994 ... 995 ValidationError: [u'Select a valid brazilian state. That state is not one of the available states.'] 996 983 997 # DEZipCodeField ############################################################## 984 998
