Changeset 8682
- Timestamp:
- 08/28/08 15:58:10 (3 months ago)
- Files:
-
- django/trunk/django/contrib/admin/options.py (modified) (1 diff)
- django/trunk/django/contrib/admin/widgets.py (modified) (1 diff)
- django/trunk/django/db/models/fields/__init__.py (modified) (1 diff)
- django/trunk/tests/modeltests/model_forms/models.py (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/trunk/django/contrib/admin/options.py
r8555 r8682 93 93 if isinstance(db_field, models.IntegerField): 94 94 kwargs['widget'] = widgets.AdminIntegerFieldWidget 95 return db_field.formfield(**kwargs) 96 97 # For CommaSeparatedIntegerFields, add a custom CSS class. 98 if isinstance(db_field, models.CommaSeparatedIntegerField): 99 kwargs['widget'] = widgets.AdminCommaSeparatedIntegerFieldWidget 95 100 return db_field.formfield(**kwargs) 96 101 django/trunk/django/contrib/admin/widgets.py
r8679 r8682 237 237 final_attrs.update(attrs) 238 238 super(AdminIntegerFieldWidget, self).__init__(attrs=final_attrs) 239 240 class AdminCommaSeparatedIntegerFieldWidget(forms.TextInput): 241 def __init__(self, attrs=None): 242 final_attrs = {'class': 'vCommaSeparatedIntegerField'} 243 if attrs is not None: 244 final_attrs.update(attrs) 245 super(AdminCommaSeparatedIntegerFieldWidget, self).__init__(attrs=final_attrs) django/trunk/django/db/models/fields/__init__.py
r8646 r8682 395 395 # TODO: Maybe move this into contrib, because it's specialized. 396 396 class CommaSeparatedIntegerField(CharField): 397 pass 397 def formfield(self, **kwargs): 398 defaults = { 399 'form_class': forms.RegexField, 400 'regex': '^[\d,]+$', 401 'max_length': self.max_length, 402 'error_messages': { 403 'invalid': _(u'Enter only digits separated by commas.'), 404 } 405 } 406 defaults.update(kwargs) 407 return super(CommaSeparatedIntegerField, self).formfield(**defaults) 398 408 399 409 ansi_date_re = re.compile(r'^\d{4}-\d{1,2}-\d{1,2}$') django/trunk/tests/modeltests/model_forms/models.py
r8528 r8682 98 98 def __unicode__(self): 99 99 return self.description 100 101 class CommaSeparatedInteger(models.Model): 102 field = models.CommaSeparatedIntegerField(max_length=20) 103 104 def __unicode__(self): 105 return self.field 100 106 101 107 __test__ = {'API_TESTS': """ … … 1051 1057 <script type="text/javascript" src="/some/form/javascript"></script> 1052 1058 1059 >>> class CommaSeparatedIntegerForm(ModelForm): 1060 ... class Meta: 1061 ... model = CommaSeparatedInteger 1062 1063 >>> f = CommaSeparatedIntegerForm().fields['field'] 1064 >>> f.clean('1,2,3') 1065 u'1,2,3' 1066 >>> f.clean('1a,2') 1067 Traceback (most recent call last): 1068 ... 1069 ValidationError: [u'Enter only digits separated by commas.'] 1070 >>> f.clean(',,,,') 1071 u',,,,' 1072 >>> f.clean('1.2') 1073 Traceback (most recent call last): 1074 ... 1075 ValidationError: [u'Enter only digits separated by commas.'] 1076 >>> f.clean('1,a,2') 1077 Traceback (most recent call last): 1078 ... 1079 ValidationError: [u'Enter only digits separated by commas.'] 1080 >>> f.clean('1,,2') 1081 u'1,,2' 1082 >>> f.clean('1') 1083 u'1' 1084 1053 1085 """}
