I think is not working. Anybody is using it with multiple=true?.

I make a fix.

def widget_checkbox(self, field, value, **attributes):
        """
        generates a TABLE tag, including INPUT checkboxes (multiple allowed)

        see also: :meth:`FormWidget.widget`
        """

        from gluon.sqlhtml import OptionsWidget

        # was values = re.compile('[\w\-:]+').findall(str(value))
        values = not isinstance(value,(list,tuple)) and [value] or value

        attr = OptionsWidget._attributes(field, {}, **attributes)

        requires = field.requires
        if not isinstance(requires, (list, tuple)):
            requires = [requires]
        if requires:
            if 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

        for r_index in range(rows):
            tds = []
            for k, v in options[r_index*cols:(r_index+1)*cols]:
                #print "k: %s"%k
                #print "v: %s"%v
                #print "values: %s"%values
                if int(k) in values:
                    r_value = k
                else:
                    r_value = []
                #print "r_value: %s"%r_value
                tds.append(TD(INPUT(_type='checkbox', _name=field.name,
                         requires=attr.get('requires',None),
                         hideerror=True, _value=k,
                         value=r_value
                         ), v))
            opts.append(TR(tds))

        if opts:
            opts[-1][0][0]['hideerror'] = False
        return TABLE(*opts, **attr)



-- 
Pablo Martín Mulone (mar...@tecnodoc.com.ar)
http://www.tecnodoc.com.ar/

My blog: http://martin.tecnodoc.com.ar
Expert4Solution Profile:
http://www.experts4solutions.com/e4s/default/expert/6

Reply via email to