diff --git a/VERSION b/VERSION index fe1fdcee..0992eff4 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 1.99.3 (2011-12-02 17:31:14) dev +Version 1.99.3 (2011-12-02 17:48:23) dev diff --git a/gluon/sqlhtml.py b/gluon/sqlhtml.py index e44df094..e5b03470 100644 --- a/gluon/sqlhtml.py +++ b/gluon/sqlhtml.py @@ -60,22 +60,27 @@ def safe_float(x): class FormWidget(object): """ - helper for SQLFORM to generate form input fields (widget), - related to the fieldtype + helper for SQLFORM to generate form input fields + (widget), related to the fieldtype """ - @staticmethod - def _attributes(field, widget_attributes, **attributes): + _class = 'generic-widget' + + @classmethod + def _attributes(cls, field, + widget_attributes, **attributes): """ helper to build a common set of attributes - :param field: the field involved, some attributes are derived from this + :param field: the field involved, + some attributes are derived from this :param widget_attributes: widget related attributes :param attributes: any other supplied attributes """ attr = dict( _id = '%s_%s' % (field._tablename, field.name), - _class = widget_class.match(str(field.type)).group(), + _class = cls._class or \ + widget_class.match(str(field.type)).group(), _name = field.name, requires = field.requires, ) @@ -102,7 +107,7 @@ class FormWidget(object): raise NotImplementedError class StringWidget(FormWidget): - + _class = 'string' @staticmethod def widget(field, value, **attributes): """ @@ -121,36 +126,32 @@ class StringWidget(FormWidget): class IntegerWidget(StringWidget): - - pass + _class = 'integer' class DoubleWidget(StringWidget): - - pass + _class = 'double' class DecimalWidget(StringWidget): - - pass + _class = 'double' class TimeWidget(StringWidget): - - pass + _class = 'time' class DateWidget(StringWidget): - - pass + _class = 'date' class DatetimeWidget(StringWidget): - + _class = 'datetime' pass class TextWidget(FormWidget): + _class = 'text' @staticmethod def widget(field, value, **attributes): @@ -160,15 +161,14 @@ class TextWidget(FormWidget): see also: :meth:`FormWidget.widget` """ - default = dict( - value = value, - ) - attr = TextWidget._attributes(field, default, **attributes) - + default = dict(value = value) + attr = TextWidget._attributes(field, default, + **attributes) return TEXTAREA(**attr) class BooleanWidget(FormWidget): + _class = 'boolean' @staticmethod def widget(field, value, **attributes): @@ -178,12 +178,9 @@ class BooleanWidget(FormWidget): see also: :meth:`FormWidget.widget` """ - default=dict( - _type='checkbox', - value=value, - ) - attr = BooleanWidget._attributes(field, default, **attributes) - + default=dict(_type='checkbox', value=value) + attr = BooleanWidget._attributes(field, default, + **attributes) return INPUT(**attr) @@ -207,11 +204,9 @@ class OptionsWidget(FormWidget): see also: :meth:`FormWidget.widget` """ - default = dict( - value=value, - ) - attr = OptionsWidget._attributes(field, default, **attributes) - + default = dict(value=value) + attr = OptionsWidget._attributes(field, default, + **attributes) requires = field.requires if not isinstance(requires, (list, tuple)): requires = [requires] @@ -219,13 +214,13 @@ class OptionsWidget(FormWidget): if hasattr(requires[0], 'options'): options = requires[0].options() else: - raise SyntaxError, 'widget cannot determine options of %s' \ - % field + raise SyntaxError, 'widget cannot determine options of %s' % field opts = [OPTION(v, _value=k) for (k, v) in options] return SELECT(*opts, **attr) class ListWidget(StringWidget): + @staticmethod def widget(field,value,**attributes): _id = '%s_%s' % (field._tablename, field.name) @@ -413,6 +408,7 @@ class CheckboxesWidget(OptionsWidget): class PasswordWidget(FormWidget): + _class = 'password' DEFAULT_PASSWORD_DISPLAY = 8*('*') @@ -436,6 +432,7 @@ class PasswordWidget(FormWidget): class UploadWidget(FormWidget): + _class = 'upload' DEFAULT_WIDTH = '150px' ID_DELETE_SUFFIX = '__delete' @@ -535,6 +532,7 @@ class UploadWidget(FormWidget): class AutocompleteWidget(object): + _class = 'string' def __init__(self, request, field, id_field=None, db=None, orderby=None, limitby=(0,10),