Skip to content

Commit

Permalink
Fix required keyword for Calendar*Pickers
Browse files Browse the repository at this point in the history
Corresponds to the tw2.core patch for the validators.
  • Loading branch information
moschlar committed Jun 13, 2012
1 parent c489fb8 commit a5fa620
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 4 deletions.
37 changes: 37 additions & 0 deletions tests/test_widgets.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from tw2.forms.widgets import *
from tw2.forms.calendars import *
from webob import Request
from webob.multidict import NestedMultiDict
from tw2.core.testbase import (
Expand All @@ -12,6 +13,7 @@
from cgi import FieldStorage
import formencode
import formencode.national
from datetime import datetime

import webob
if hasattr(webob, 'NestedMultiDict'):
Expand Down Expand Up @@ -851,3 +853,38 @@ def test_request_post_valid(self):
r.body == """Form posted successfully {'field2': 'b', 'field3': 'c', 'field1': 'a'}""" or
r.body == """Form posted successfully {'field2': u'b', 'field3': u'c', 'field1': u'a'}"""
), r.body


def test_picker_validation():
""" Test that CalendarDate*Pickers validate correctly. """

class SomeForm(TableForm):
date = CalendarDatePicker(date_format='%Y-%m-%d')
datetime = CalendarDateTimePicker(date_format='%Y-%m-%d %H:%M')

data = SomeForm.validate({'date': '2012-06-13', 'datetime': '2012-06-13 10:07'})
for field in data.itervalues():
assert isinstance(field, datetime)


def test_picker_required_validation():
""" Test that CalendarDate*Pickers validate required fields correctly. """

class SomeForm(TableForm):
date = CalendarDatePicker(date_format='%Y-%m-%d', required=True)
datetime = CalendarDateTimePicker(date_format='%Y-%m-%d %H:%M', required=True)

try:
data = SomeForm.validate({'date': '', 'datetime': '2012-06-13 10:07'})
except ValidationError:
pass
else:
assert False

try:
data = SomeForm.validate({'date': '2012-06-13', 'datetime': ''})
except ValidationError:
pass
else:
assert False

5 changes: 3 additions & 2 deletions tw2/forms/calendars.py
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ class CalendarDatePicker(FormField):
template = "tw2.forms.templates.calendar"
calendar_lang = twc.Param("Default Language to use in the Calendar",
default='en')
not_empty = twc.Param("Allow this field to be empty", default=True)
required = twc.Param(default=False)
button_text = twc.Param("Text to display on Button", default="Choose")
date_format = twc.Param("Date Display Format", default="%m/%d/%Y")
picker_shows_time = twc.Param('Picker Shows Time', default=False)
Expand All @@ -147,13 +147,14 @@ def __init__(self, *args, **kw):
if self.validator is None:
self.validator = twc.DateTimeValidator(
format=self.date_format,
required=self.required
)
super(CalendarDatePicker, self).__init__(*args, **kw)

def prepare(self):
super(CalendarDatePicker, self).prepare()
self.resources = [calendar_css, calendar_js, calendar_setup]
if not self.value:
if not self.value and self.required:
if callable(self.default):
self.value = self.default()
else:
Expand Down
3 changes: 1 addition & 2 deletions tw2/forms/widgets.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,7 @@ class FormField(twc.Widget):
@property
def required(self):
return self.validator and (
getattr(self.validator, 'required', None) or
getattr(self.validator, 'not_empty', None)
getattr(self.validator, 'required', None)
)


Expand Down

0 comments on commit a5fa620

Please sign in to comment.