# -*- coding: utf-8 -*- # Tests for the contrib/localflavor/ generic form fields. tests = r""" ## Generic DateField ########################################################## >>> from django.contrib.localflavor.generic.forms import * A DateField that uses generic dd/mm/yy dates instead of mm/dd/yy where appropriate. >>> import datetime >>> f = DateField() >>> f.clean(datetime.date(2006, 10, 25)) datetime.date(2006, 10, 25) >>> f.clean(datetime.datetime(2006, 10, 25, 14, 30)) datetime.date(2006, 10, 25) >>> f.clean(datetime.datetime(2006, 10, 25, 14, 30, 59)) datetime.date(2006, 10, 25) >>> f.clean(datetime.datetime(2006, 10, 25, 14, 30, 59, 200)) datetime.date(2006, 10, 25) >>> f.clean('2006-10-25') datetime.date(2006, 10, 25) >>> f.clean('25/10/2006') datetime.date(2006, 10, 25) >>> f.clean('25/10/06') datetime.date(2006, 10, 25) >>> f.clean('Oct 25 2006') datetime.date(2006, 10, 25) >>> f.clean('October 25 2006') datetime.date(2006, 10, 25) >>> f.clean('October 25, 2006') datetime.date(2006, 10, 25) >>> f.clean('25 October 2006') datetime.date(2006, 10, 25) >>> f.clean('25 October, 2006') datetime.date(2006, 10, 25) >>> f.clean('2006-4-31') Traceback (most recent call last): ... ValidationError: [u'Enter a valid date.'] >>> f.clean('200a-10-25') Traceback (most recent call last): ... ValidationError: [u'Enter a valid date.'] >>> f.clean('10/25/06') Traceback (most recent call last): ... ValidationError: [u'Enter a valid date.'] >>> f.clean(None) Traceback (most recent call last): ... ValidationError: [u'This field is required.'] >>> f = DateField(required=False) >>> f.clean(None) >>> repr(f.clean(None)) 'None' >>> f.clean('') >>> repr(f.clean('')) 'None' DateField accepts an optional input_formats parameter: >>> f = DateField(input_formats=['%Y %m %d']) >>> f.clean(datetime.date(2006, 10, 25)) datetime.date(2006, 10, 25) >>> f.clean(datetime.datetime(2006, 10, 25, 14, 30)) datetime.date(2006, 10, 25) >>> f.clean('2006 10 25') datetime.date(2006, 10, 25) The input_formats parameter overrides all default input formats, so the default formats won't work unless you specify them: >>> f.clean('2006-10-25') Traceback (most recent call last): ... ValidationError: [u'Enter a valid date.'] >>> f.clean('25/10/2006') Traceback (most recent call last): ... ValidationError: [u'Enter a valid date.'] >>> f.clean('25/10/06') Traceback (most recent call last): ... ValidationError: [u'Enter a valid date.'] ## Generic DateTimeField ###################################################### A DateField that uses generic dd/mm/yy dates instead of mm/dd/yy where appropriate. >>> import datetime >>> f = DateTimeField() >>> f.clean(datetime.date(2006, 10, 25)) datetime.datetime(2006, 10, 25, 0, 0) >>> f.clean(datetime.datetime(2006, 10, 25, 14, 30)) datetime.datetime(2006, 10, 25, 14, 30) >>> f.clean(datetime.datetime(2006, 10, 25, 14, 30, 59)) datetime.datetime(2006, 10, 25, 14, 30, 59) >>> f.clean(datetime.datetime(2006, 10, 25, 14, 30, 59, 200)) datetime.datetime(2006, 10, 25, 14, 30, 59, 200) >>> f.clean('2006-10-25 14:30:45') datetime.datetime(2006, 10, 25, 14, 30, 45) >>> f.clean('2006-10-25 14:30:00') datetime.datetime(2006, 10, 25, 14, 30) >>> f.clean('2006-10-25 14:30') datetime.datetime(2006, 10, 25, 14, 30) >>> f.clean('2006-10-25') datetime.datetime(2006, 10, 25, 0, 0) >>> f.clean('25/10/2006 14:30:45') datetime.datetime(2006, 10, 25, 14, 30, 45) >>> f.clean('25/10/2006 14:30:00') datetime.datetime(2006, 10, 25, 14, 30) >>> f.clean('25/10/2006 14:30') datetime.datetime(2006, 10, 25, 14, 30) >>> f.clean('25/10/2006') datetime.datetime(2006, 10, 25, 0, 0) >>> f.clean('25/10/06 14:30:45') datetime.datetime(2006, 10, 25, 14, 30, 45) >>> f.clean('25/10/06 14:30:00') datetime.datetime(2006, 10, 25, 14, 30) >>> f.clean('25/10/06 14:30') datetime.datetime(2006, 10, 25, 14, 30) >>> f.clean('25/10/06') datetime.datetime(2006, 10, 25, 0, 0) >>> f.clean('hello') Traceback (most recent call last): ... ValidationError: [u'Enter a valid date/time.'] >>> f.clean('2006-10-25 4:30 p.m.') Traceback (most recent call last): ... ValidationError: [u'Enter a valid date/time.'] DateField accepts an optional input_formats parameter: >>> f = DateTimeField(input_formats=['%Y %m %d %I:%M %p']) >>> f.clean(datetime.date(2006, 10, 25)) datetime.datetime(2006, 10, 25, 0, 0) >>> f.clean(datetime.datetime(2006, 10, 25, 14, 30)) datetime.datetime(2006, 10, 25, 14, 30) >>> f.clean(datetime.datetime(2006, 10, 25, 14, 30, 59)) datetime.datetime(2006, 10, 25, 14, 30, 59) >>> f.clean(datetime.datetime(2006, 10, 25, 14, 30, 59, 200)) datetime.datetime(2006, 10, 25, 14, 30, 59, 200) >>> f.clean('2006 10 25 2:30 PM') datetime.datetime(2006, 10, 25, 14, 30) The input_formats parameter overrides all default input formats, so the default formats won't work unless you specify them: >>> f.clean('2006-10-25 14:30:45') Traceback (most recent call last): ... ValidationError: [u'Enter a valid date/time.'] >>> f = DateTimeField(required=False) >>> f.clean(None) >>> repr(f.clean(None)) 'None' >>> f.clean('') >>> repr(f.clean('')) 'None' """