Hello, I get in trouble with Github and can't commit when I make change for some reasons... The folks at github investigate about the issue...
So here a patch, see attachement. Richard On Tue, Dec 3, 2013 at 5:25 PM, Massimo Di Pierro < massimo.dipie...@gmail.com> wrote: > yes please. > > > On Tuesday, 3 December 2013 12:00:54 UTC-6, Richard wrote: > >> Would you I make a patch on Github? >> >> Richard >> >> >> On Tue, Dec 3, 2013 at 12:58 PM, Massimo Di Pierro <massimo....@gmail.com >> > wrote: >> >>> I opened a ticket and will process asap. >>> >>> >>> On Monday, 2 December 2013 14:46:41 UTC-6, Richard wrote: >>>> >>>> Hello, >>>> >>>> I set a label True/False flag for checkbox widget like so : >>>> >>>> class CheckboxesWidget(OptionsWidget): >>>> >>>> @classmethod >>>> def widget(cls, field, value, **attributes): >>>> """ >>>> generates a TABLE tag, including INPUT checkboxes (multiple >>>> allowed) >>>> >>>> see also: :meth:`FormWidget.widget` >>>> """ >>>> # was values = re.compile('[\w\-:]+').findall(str(value)) >>>> if isinstance(value, (list, tuple)): >>>> values = [str(v) for v in value] >>>> else: >>>> values = [str(value)] >>>> >>>> attr = cls._attributes(field, {}, **attributes) >>>> attr['_class'] = attr.get('_class', 'web2py_checkboxeswidget') >>>> >>>> label = attr.get('label') >>>> if not isinstance(label, bool): >>>> label = True >>>> elif label is True: >>>> label = True >>>> elif label is False: >>>> label = False >>>> >>>> requires = field.requires >>>> if not isinstance(requires, (list, tuple)): >>>> requires = [requires] >>>> if requires and hasattr(requires[0], 'options'): >>>> options = requires[0].options() >>>> else: >>>> raise SyntaxError('widget cannot determine options of %s' >>>> % field) >>>> >>>> options = [(k, v) for k, v in options if k != ''] >>>> opts = [] >>>> cols = attributes.get('cols', 1) >>>> totals = len(options) >>>> mods = totals % cols >>>> rows = totals / cols >>>> if mods: >>>> rows += 1 >>>> >>>> #widget style >>>> wrappers = dict( >>>> table=(TABLE, TR, TD), >>>> ul=(DIV, UL, LI), >>>> divs=(CAT, DIV, DIV) >>>> ) >>>> parent, child, inner = wrappers[attributes.get('style', >>>> 'table')] >>>> >>>> for r_index in range(rows): >>>> tds = [] >>>> for k, v in options[r_index * cols:(r_index + 1) * cols]: >>>> if k in values: >>>> r_value = k >>>> else: >>>> r_value = [] >>>> tds.append(inner(INPUT(_type='checkbox', >>>> _id='%s%s' % (field.name, k), >>>> _name=field.name, >>>> requires=attr.get('requires', >>>> None), >>>> hideerror=True, _value=k, >>>> value=r_value), >>>> LABEL(v, _for='%s%s' % (field.name, >>>> k)) if label is True else '')) >>>> opts.append(child(tds)) >>>> >>>> if opts: >>>> opts.append( >>>> INPUT(requires=attr.get('requires', None), >>>> _style="display:none;", >>>> _disabled="disabled", >>>> _name=field.name, >>>> hideerror=False)) >>>> return parent(*opts, **attr) >>>> >>>> The purpose of this change is in context where a user need single >>>> checkbox for each row of a grid where he don't need to display a label >>>> beside the checkbox, since he only want to know which record is checked and >>>> need to be updated... >>>> >>>> I need that in order to create a special form that allow bunch/batch >>>> records update, see attach image (sorry I had to hide data of some >>>> columns)... You can see, that each row has a checkbox that is generated >>>> like this : >>>> >>>> form_fields = [Field('checkbox_%s' % r['table'].id, 'integer', >>>> requires=IS_EMPTY_OR(IS_IN_SE >>>> T([r['table'].id])), >>>> widget=lambda field, value: >>>> SQLFORM.widgets.checkboxes.widget(field, value, style='divs', >>>> label=False)) for r in rows] >>>> >>>> The form is then create with .factory() after adding the last fields of >>>> the models that appears in the last line of the html table on the attach >>>> image... >>>> >>>> I can, make the change on Git and send a PR, if this change is kind of >>>> approved!! >>>> >>>> Thanks >>>> >>>> Richard >>>> >>>> -- >>> Resources: >>> - http://web2py.com >>> - http://web2py.com/book (Documentation) >>> - http://github.com/web2py/web2py (Source code) >>> - https://code.google.com/p/web2py/issues/list (Report Issues) >>> --- >>> You received this message because you are subscribed to the Google >>> Groups "web2py-users" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to web2py+un...@googlegroups.com. >>> >>> For more options, visit https://groups.google.com/groups/opt_out. >>> >> >> -- > Resources: > - http://web2py.com > - http://web2py.com/book (Documentation) > - http://github.com/web2py/web2py (Source code) > - https://code.google.com/p/web2py/issues/list (Report Issues) > --- > You received this message because you are subscribed to the Google Groups > "web2py-users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to web2py+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
# HG changeset patch # User Richard Vézina <vezi...@medicago.com> # Date 1386176098 18000 # mer déc 04 11:54:58 2013 -0500 # Node ID 7629b749a096c36d6cad2e376c110dc83d8e3d90 # Parent f59e42d2de63434be6ab016f236bd7ff9e6af6fc Checkbox widget label attribute to allow display or not of label beside checkbox diff -r f59e42d2de63 -r 7629b749a096 gluon/sqlhtml.py --- a/gluon/sqlhtml.py mar déc 03 09:32:42 2013 -0600 +++ b/gluon/sqlhtml.py mer déc 04 11:54:58 2013 -0500 @@ -400,6 +400,14 @@ attr = cls._attributes(field, {}, **attributes) attr['_class'] = attr.get('_class', 'web2py_checkboxeswidget') + label = attr.get('label') + if not isinstance(label, bool): + label = True + elif label is True or label is False: + label = label + else: + label = True + requires = field.requires if not isinstance(requires, (list, tuple)): requires = [requires] @@ -439,7 +447,7 @@ requires=attr.get('requires', None), hideerror=True, _value=k, value=r_value), - LABEL(v, _for='%s%s' % (field.name, k)))) + LABEL(v, _for='%s%s' % (field.name, k)) if label is True else '')) opts.append(child(tds)) if opts: