Changeset 7351 for django/branches/newforms-admin/django/newforms/extras
- Timestamp:
- 03/22/08 14:20:19 (10 months ago)
- Files:
-
- django/branches/newforms-admin (modified) (1 prop)
- django/branches/newforms-admin/django/newforms/extras/widgets.py (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/branches/newforms-admin
- Property svnmerge-integrated changed from /django/trunk:1-4345,4350-4357,4359-4365,4371-4372,4374-4377,4380-4386,4388,4390-4391,4400-4402,4404-4408,4410,4412-4419,4426-4427,4430-4432,4434,4441,4443-4444,4446-4447,4450,4452-4453,4455-4458,4476,4503,4546,4564-4569,4580-4586,4617,4630,4641-6390,6392-7232 to /django/trunk:1-4345,4350-4357,4359-4365,4371-4372,4374-4377,4380-4386,4388,4390-4391,4400-4402,4404-4408,4410,4412-4419,4426-4427,4430-4432,4434,4441,4443-4444,4446-4447,4450,4452-4453,4455-4458,4476,4503,4546,4564-4569,4580-4586,4617,4630,4641-6390,6392-7350
django/branches/newforms-admin/django/newforms/extras/widgets.py
r6777 r7351 4 4 5 5 import datetime 6 import re 6 7 7 8 from django.newforms.widgets import Widget, Select … … 10 11 11 12 __all__ = ('SelectDateWidget',) 13 14 RE_DATE = re.compile(r'(\d{4})-(\d\d?)-(\d\d?)$') 12 15 13 16 class SelectDateWidget(Widget): … … 33 36 def render(self, name, value, attrs=None): 34 37 try: 35 value = datetime.date(*map(int, value.split('-')))36 38 year_val, month_val, day_val = value.year, value.month, value.day 37 except (AttributeError, TypeError, ValueError):39 except AttributeError: 38 40 year_val = month_val = day_val = None 41 if isinstance(value, basestring): 42 match = RE_DATE.match(value) 43 if match: 44 year_val, month_val, day_val = [int(v) for v in match.groups()] 39 45 40 46 output = [] 41 47 48 if 'id' in self.attrs: 49 id_ = self.attrs['id'] 50 else: 51 id_ = 'id_%s' % name 52 42 53 month_choices = MONTHS.items() 43 54 month_choices.sort() 44 select_html = Select(choices=month_choices).render(self.month_field % name, month_val) 55 local_attrs = self.build_attrs(id=self.month_field % id_) 56 select_html = Select(choices=month_choices).render(self.month_field % name, month_val, local_attrs) 45 57 output.append(select_html) 46 58 47 59 day_choices = [(i, i) for i in range(1, 32)] 48 select_html = Select(choices=day_choices).render(self.day_field % name, day_val) 60 local_attrs['id'] = self.day_field % id_ 61 select_html = Select(choices=day_choices).render(self.day_field % name, day_val, local_attrs) 49 62 output.append(select_html) 50 63 51 64 year_choices = [(i, i) for i in self.years] 52 select_html = Select(choices=year_choices).render(self.year_field % name, year_val) 65 local_attrs['id'] = self.year_field % id_ 66 select_html = Select(choices=year_choices).render(self.year_field % name, year_val, local_attrs) 53 67 output.append(select_html) 54 68 55 69 return mark_safe(u'\n'.join(output)) 70 71 def id_for_label(self, id_): 72 return '%s_month' % id_ 73 id_for_label = classmethod(id_for_label) 56 74 57 75 def value_from_datadict(self, data, files, name):
