web/form.py
branchtls-sprint
changeset 1055 b87222b63950
parent 1053 e4d965b5ca37
child 1056 be43d95ebb52
equal deleted inserted replaced
1054:434e098f6c76 1055:b87222b63950
   256 
   256 
   257 class FieldWidget(object):
   257 class FieldWidget(object):
   258     needs_js = ()
   258     needs_js = ()
   259     needs_css = ()
   259     needs_css = ()
   260     setdomid = True
   260     setdomid = True
   261     
   261     settabindex = True
   262     def __init__(self, attrs=None, setdomid=None):
   262     
       
   263     def __init__(self, attrs=None, setdomid=None, settabindex=None):
   263         self.attrs = attrs or {}
   264         self.attrs = attrs or {}
   264         if setdomid is not None:
   265         if setdomid is not None:
   265             # override class's default value
   266             # override class's default value
   266             self.setdomid = setdomid
   267             self.setdomid = setdomid
       
   268         if settabindex is not None:
       
   269             # override class's default value
       
   270             self.settabindex = settabindex
   267 
   271 
   268     def add_media(self, form):
   272     def add_media(self, form):
   269         """adds media (CSS & JS) required by this widget"""
   273         """adds media (CSS & JS) required by this widget"""
   270         req = form.req
   274         req = form.req
   271         if self.needs_js:
   275         if self.needs_js:
   282         if not isinstance(values, (tuple, list)):
   286         if not isinstance(values, (tuple, list)):
   283             values = (values,)
   287             values = (values,)
   284         attrs = dict(self.attrs)
   288         attrs = dict(self.attrs)
   285         if self.setdomid:
   289         if self.setdomid:
   286             attrs['id'] = form.context[field]['id']
   290             attrs['id'] = form.context[field]['id']
       
   291         if self.settabindex:
       
   292             attrs['tabindex'] = form.req.next_tabindex()
   287         return name, values, attrs
   293         return name, values, attrs
   288 
   294 
   289 class Input(FieldWidget):
   295 class Input(FieldWidget):
   290     type = None
   296     type = None
   291     
   297     
   322         return name, ('',), attrs
   328         return name, ('',), attrs
   323         
   329         
   324 class HiddenInput(Input):
   330 class HiddenInput(Input):
   325     type = 'hidden'
   331     type = 'hidden'
   326     setdomid = False # by default, don't set id attribute on hidden input
   332     setdomid = False # by default, don't set id attribute on hidden input
       
   333     settabindex = False
   327     
   334     
   328 class ButtonInput(Input):
   335 class ButtonInput(Input):
   329     type = 'button'
   336     type = 'button'
   330 
   337 
   331 class TextArea(FieldWidget):
   338 class TextArea(FieldWidget):