diff options
| author | Adrian Holovaty <adrian@holovaty.com> | 2007-01-24 05:23:19 +0000 |
|---|---|---|
| committer | Adrian Holovaty <adrian@holovaty.com> | 2007-01-24 05:23:19 +0000 |
| commit | 788f8f74540b87f79fbfbe44a4b2f00502d66d8a (patch) | |
| tree | d21e6c5a6fc94d113311c08781fb036f48977ec3 /django/newforms/widgets.py | |
| parent | 85fe1079968209e380141c67fe7ef5048d28584b (diff) | |
newforms: Implemented NullBooleanField and NullBooleanSelect
git-svn-id: http://code.djangoproject.com/svn/django/trunk@4411 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django/newforms/widgets.py')
| -rw-r--r-- | django/newforms/widgets.py | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/django/newforms/widgets.py b/django/newforms/widgets.py index 2b709d8684..c71810465e 100644 --- a/django/newforms/widgets.py +++ b/django/newforms/widgets.py @@ -5,13 +5,14 @@ HTML Widget classes __all__ = ( 'Widget', 'TextInput', 'PasswordInput', 'HiddenInput', 'MultipleHiddenInput', 'FileInput', 'Textarea', 'CheckboxInput', - 'Select', 'SelectMultiple', 'RadioSelect', 'CheckboxSelectMultiple', + 'Select', 'NullBooleanSelect', 'SelectMultiple', 'RadioSelect', 'CheckboxSelectMultiple', 'MultiWidget', 'SplitDateTimeWidget', ) from util import flatatt, StrAndUnicode, smart_unicode from django.utils.datastructures import MultiValueDict from django.utils.html import escape +from django.utils.translation import gettext from itertools import chain try: @@ -151,6 +152,25 @@ class Select(Widget): output.append(u'</select>') return u'\n'.join(output) +class NullBooleanSelect(Select): + """ + A Select Widget intended to be used with NullBooleanField. + """ + def __init__(self, attrs=None): + choices = ((u'1', gettext('Unknown')), (u'2', gettext('Yes')), (u'3', gettext('No'))) + super(NullBooleanSelect, self).__init__(attrs, choices) + + def render(self, name, value, attrs=None, choices=()): + try: + value = {True: u'2', False: u'3', u'2': u'2', u'3': u'3'}[value] + except KeyError: + value = u'1' + return super(NullBooleanSelect, self).render(name, value, attrs, choices) + + def value_from_datadict(self, data, name): + value = data.get(name, None) + return {u'2': True, u'3': False, True: True, False: False}.get(value, None) + class SelectMultiple(Widget): def __init__(self, attrs=None, choices=()): # choices can be any iterable |
