Changeset 6578
- Timestamp:
- 10/21/07 09:50:47 (1 year ago)
- Files:
-
- django/trunk/django/newforms/fields.py (modified) (2 diffs)
- django/trunk/django/newforms/widgets.py (modified) (5 diffs)
- django/trunk/docs/newforms.txt (modified) (4 diffs)
- django/trunk/tests/regressiontests/forms/widgets.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/trunk/django/newforms/fields.py
r6577 r6578 12 12 13 13 from util import ErrorList, ValidationError 14 from widgets import TextInput, PasswordInput, HiddenInput, MultipleHiddenInput, FileInput, CheckboxInput, Select, NullBooleanSelect, SelectMultiple 14 from widgets import TextInput, PasswordInput, HiddenInput, MultipleHiddenInput, FileInput, CheckboxInput, Select, NullBooleanSelect, SelectMultiple, DateTimeInput 15 15 16 16 try: … … 285 285 286 286 class DateTimeField(Field): 287 widget = DateTimeInput 288 287 289 def __init__(self, input_formats=None, *args, **kwargs): 288 290 super(DateTimeField, self).__init__(*args, **kwargs) django/trunk/django/newforms/widgets.py
r6563 r6578 9 9 10 10 import copy 11 import datetime 11 12 from itertools import chain 12 13 … … 20 21 'Widget', 'TextInput', 'PasswordInput', 21 22 'HiddenInput', 'MultipleHiddenInput', 22 'FileInput', ' Textarea', 'CheckboxInput',23 'FileInput', 'DateTimeInput', 'Textarea', 'CheckboxInput', 23 24 'Select', 'NullBooleanSelect', 'SelectMultiple', 'RadioSelect', 24 25 'CheckboxSelectMultiple', 'MultiWidget', 'SplitDateTimeWidget', … … 134 135 def render(self, name, value, attrs=None): 135 136 return super(FileInput, self).render(name, None, attrs=attrs) 136 137 137 138 def value_from_datadict(self, data, files, name): 138 139 "File widgets take data from FILES, not POST" … … 151 152 final_attrs = self.build_attrs(attrs, name=name) 152 153 return u'<textarea%s>%s</textarea>' % (flatatt(final_attrs), escape(value)) 154 155 class DateTimeInput(Input): 156 input_type = 'text' 157 format = '%Y-%m-%d %H:%M:%S' # '2006-10-25 14:30:59' 158 159 def __init__(self, attrs=None, format=None): 160 super(DateTimeInput, self).__init__(attrs) 161 if format: 162 self.format = format 163 164 def render(self, name, value, attrs=None): 165 return super(DateTimeInput, self).render(name, 166 value.strftime(self.format), attrs) 153 167 154 168 class CheckboxInput(Widget): … … 433 447 def decompress(self, value): 434 448 if value: 435 return [value.date(), value.time() ]449 return [value.date(), value.time().replace(microsecond=0)] 436 450 return [None, None] django/trunk/docs/newforms.txt
r6564 r6578 1202 1202 ~~~~~~~~~~~~~~~~~ 1203 1203 1204 * Default widget: `` TextInput``1204 * Default widget: ``DateTimeInput`` 1205 1205 * Empty value: ``None`` 1206 1206 * Normalizes to: A Python ``datetime.datetime`` object. … … 1222 1222 '%m/%d/%y %H:%M', # '10/25/06 14:30' 1223 1223 '%m/%d/%y', # '10/25/06' 1224 1225 **New in Django development version:** The ``DateTimeField`` used to use a 1226 ``TextInput`` widget by default. This has now changed. 1224 1227 1225 1228 ``DecimalField`` … … 1559 1562 instances. 1560 1563 ``FileInput`` ``<input type='file' ...`` 1564 ``DateTimeInput`` ``<input type='text' ...`` 1561 1565 ``Textarea`` ``<textarea>...</textarea>`` 1562 1566 ``CheckboxInput`` ``<input type='checkbox' ...`` … … 1571 1575 one for the Date, and one for the Time. 1572 1576 ============================ =========================================== 1577 1578 **New in Django development version:** The ``DateTimeInput`` has been added 1579 since the last release. 1573 1580 1574 1581 Specifying widgets django/trunk/tests/regressiontests/forms/widgets.py
r6563 r6578 852 852 >>> w.render('date', datetime.datetime(2006, 1, 10, 7, 30)) 853 853 u'<input type="text" class="pretty" value="2006-01-10" name="date_0" /><input type="text" class="pretty" value="07:30:00" name="date_1" />' 854 855 # DateTimeInput ############################################################### 856 857 >>> w = DateTimeInput() 858 >>> d = datetime.datetime(2007, 9, 17, 12, 51, 34, 482548) 859 >>> print d 860 2007-09-17 12:51:34.482548 861 862 The microseconds are trimmed on display, by default. 863 >>> w.render('date', d) 864 u'<input type="text" name="date" value="2007-09-17 12:51:34" />' 865 >>> w.render('date', datetime.datetime(2007, 9, 17, 12, 51, 34)) 866 u'<input type="text" name="date" value="2007-09-17 12:51:34" />' 867 >>> w.render('date', datetime.datetime(2007, 9, 17, 12, 51)) 868 u'<input type="text" name="date" value="2007-09-17 12:51:00" />' 854 869 """
