Django

Code

Changeset 6208

Show
Ignore:
Timestamp:
09/14/07 14:28:26 (1 year ago)
Author:
jacob
Message:

Fixed #4542: added a generic localflavor DateField?. Thanks, Nick Lane.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/trunk/tests/regressiontests/forms/localflavor.py

    r6202 r6208  
    20372037ValidationError: [u'Enter a valid Canadian Social Insurance number in XXX-XXX-XXXX format.'] 
    20382038 
     2039## Generic DateField ########################################################## 
     2040 
     2041>>> from django.contrib.localflavor.generic.forms import * 
     2042 
     2043A DateField that uses generic dd/mm/yy dates instead of mm/dd/yy where 
     2044appropriate. 
     2045 
     2046>>> import datetime 
     2047>>> f = DateField() 
     2048>>> f.clean(datetime.date(2006, 10, 25)) 
     2049datetime.date(2006, 10, 25) 
     2050>>> f.clean(datetime.datetime(2006, 10, 25, 14, 30)) 
     2051datetime.date(2006, 10, 25) 
     2052>>> f.clean(datetime.datetime(2006, 10, 25, 14, 30, 59)) 
     2053datetime.date(2006, 10, 25) 
     2054>>> f.clean(datetime.datetime(2006, 10, 25, 14, 30, 59, 200)) 
     2055datetime.date(2006, 10, 25) 
     2056>>> f.clean('2006-10-25') 
     2057datetime.date(2006, 10, 25) 
     2058>>> f.clean('25/10/2006') 
     2059datetime.date(2006, 10, 25) 
     2060>>> f.clean('25/10/06') 
     2061datetime.date(2006, 10, 25) 
     2062>>> f.clean('Oct 25 2006') 
     2063datetime.date(2006, 10, 25) 
     2064>>> f.clean('October 25 2006') 
     2065datetime.date(2006, 10, 25) 
     2066>>> f.clean('October 25, 2006') 
     2067datetime.date(2006, 10, 25) 
     2068>>> f.clean('25 October 2006') 
     2069datetime.date(2006, 10, 25) 
     2070>>> f.clean('25 October, 2006') 
     2071datetime.date(2006, 10, 25) 
     2072>>> f.clean('2006-4-31') 
     2073Traceback (most recent call last): 
     2074... 
     2075ValidationError: [u'Enter a valid date.'] 
     2076>>> f.clean('200a-10-25') 
     2077Traceback (most recent call last): 
     2078... 
     2079ValidationError: [u'Enter a valid date.'] 
     2080>>> f.clean('10/25/06') 
     2081Traceback (most recent call last): 
     2082... 
     2083ValidationError: [u'Enter a valid date.'] 
     2084>>> f.clean(None) 
     2085Traceback (most recent call last): 
     2086... 
     2087ValidationError: [u'This field is required.'] 
     2088 
     2089>>> f = DateField(required=False) 
     2090>>> f.clean(None) 
     2091>>> repr(f.clean(None)) 
     2092'None' 
     2093>>> f.clean('') 
     2094>>> repr(f.clean('')) 
     2095'None' 
     2096 
     2097DateField accepts an optional input_formats parameter: 
     2098>>> f = DateField(input_formats=['%Y %m %d']) 
     2099>>> f.clean(datetime.date(2006, 10, 25)) 
     2100datetime.date(2006, 10, 25) 
     2101>>> f.clean(datetime.datetime(2006, 10, 25, 14, 30)) 
     2102datetime.date(2006, 10, 25) 
     2103>>> f.clean('2006 10 25') 
     2104datetime.date(2006, 10, 25) 
     2105 
     2106The input_formats parameter overrides all default input formats, 
     2107so the default formats won't work unless you specify them: 
     2108>>> f.clean('2006-10-25') 
     2109Traceback (most recent call last): 
     2110... 
     2111ValidationError: [u'Enter a valid date.'] 
     2112>>> f.clean('25/10/2006') 
     2113Traceback (most recent call last): 
     2114... 
     2115ValidationError: [u'Enter a valid date.'] 
     2116>>> f.clean('25/10/06') 
     2117Traceback (most recent call last): 
     2118... 
     2119ValidationError: [u'Enter a valid date.'] 
     2120 
     2121## Generic DateTimeField ###################################################### 
     2122 
     2123A DateField that uses generic dd/mm/yy dates instead of mm/dd/yy where 
     2124appropriate. 
     2125 
     2126>>> import datetime 
     2127>>> f = DateTimeField() 
     2128>>> f.clean(datetime.date(2006, 10, 25)) 
     2129datetime.datetime(2006, 10, 25, 0, 0) 
     2130>>> f.clean(datetime.datetime(2006, 10, 25, 14, 30)) 
     2131datetime.datetime(2006, 10, 25, 14, 30) 
     2132>>> f.clean(datetime.datetime(2006, 10, 25, 14, 30, 59)) 
     2133datetime.datetime(2006, 10, 25, 14, 30, 59) 
     2134>>> f.clean(datetime.datetime(2006, 10, 25, 14, 30, 59, 200)) 
     2135datetime.datetime(2006, 10, 25, 14, 30, 59, 200) 
     2136>>> f.clean('2006-10-25 14:30:45') 
     2137datetime.datetime(2006, 10, 25, 14, 30, 45) 
     2138>>> f.clean('2006-10-25 14:30:00') 
     2139datetime.datetime(2006, 10, 25, 14, 30) 
     2140>>> f.clean('2006-10-25 14:30') 
     2141datetime.datetime(2006, 10, 25, 14, 30) 
     2142>>> f.clean('2006-10-25') 
     2143datetime.datetime(2006, 10, 25, 0, 0) 
     2144>>> f.clean('25/10/2006 14:30:45') 
     2145datetime.datetime(2006, 10, 25, 14, 30, 45) 
     2146>>> f.clean('25/10/2006 14:30:00') 
     2147datetime.datetime(2006, 10, 25, 14, 30) 
     2148>>> f.clean('25/10/2006 14:30') 
     2149datetime.datetime(2006, 10, 25, 14, 30) 
     2150>>> f.clean('25/10/2006') 
     2151datetime.datetime(2006, 10, 25, 0, 0) 
     2152>>> f.clean('25/10/06 14:30:45') 
     2153datetime.datetime(2006, 10, 25, 14, 30, 45) 
     2154>>> f.clean('25/10/06 14:30:00') 
     2155datetime.datetime(2006, 10, 25, 14, 30) 
     2156>>> f.clean('25/10/06 14:30') 
     2157datetime.datetime(2006, 10, 25, 14, 30) 
     2158>>> f.clean('25/10/06') 
     2159datetime.datetime(2006, 10, 25, 0, 0) 
     2160>>> f.clean('hello') 
     2161Traceback (most recent call last): 
     2162... 
     2163ValidationError: [u'Enter a valid date/time.'] 
     2164>>> f.clean('2006-10-25 4:30 p.m.') 
     2165Traceback (most recent call last): 
     2166... 
     2167ValidationError: [u'Enter a valid date/time.'] 
     2168 
     2169DateField accepts an optional input_formats parameter: 
     2170>>> f = DateTimeField(input_formats=['%Y %m %d %I:%M %p']) 
     2171>>> f.clean(datetime.date(2006, 10, 25)) 
     2172datetime.datetime(2006, 10, 25, 0, 0) 
     2173>>> f.clean(datetime.datetime(2006, 10, 25, 14, 30)) 
     2174datetime.datetime(2006, 10, 25, 14, 30) 
     2175>>> f.clean(datetime.datetime(2006, 10, 25, 14, 30, 59)) 
     2176datetime.datetime(2006, 10, 25, 14, 30, 59) 
     2177>>> f.clean(datetime.datetime(2006, 10, 25, 14, 30, 59, 200)) 
     2178datetime.datetime(2006, 10, 25, 14, 30, 59, 200) 
     2179>>> f.clean('2006 10 25 2:30 PM') 
     2180datetime.datetime(2006, 10, 25, 14, 30) 
     2181 
     2182The input_formats parameter overrides all default input formats, 
     2183so the default formats won't work unless you specify them: 
     2184>>> f.clean('2006-10-25 14:30:45') 
     2185Traceback (most recent call last): 
     2186... 
     2187ValidationError: [u'Enter a valid date/time.'] 
     2188 
     2189>>> f = DateTimeField(required=False) 
     2190>>> f.clean(None) 
     2191>>> repr(f.clean(None)) 
     2192'None' 
     2193>>> f.clean('') 
     2194>>> repr(f.clean('')) 
     2195'None' 
     2196 
    20392197"""