I added your suggested solution to trunk because the fact that form.elements(...) does not work in this case should be considered a bug. I wish there was a better solution but I could not think of one.
On 4 Lug, 11:06, Bob_in_Comox <[email protected]> wrote: > Using web2py version 1.79.2 > > In building a form using SQLFORM I use: > form = SQLFORM(db.table, record, fields=myfields, labels=mylabels, > col3=mycol3, deletable=True) > > where mylabels and mycol3 use XML() to wrap some HTML markup > > PROBLEM: > Works fine, except when I try to delete a record I get: > > File "/home/bob/cdmc_site/web2py/applications/init/controllers/ > trip.py", line 221, in edit > if form.accepts(request.vars, session): > File "/home/bob/cdmc_site/web2py/gluon/sqlhtml.py", line 930, in > accepts > for component in self.elements('input, select, textarea'): > File "/home/bob/cdmc_site/web2py/gluon/html.py", line 634, in > elements > subset = [self.elements(a,**kargs) for a in args] > File "/home/bob/cdmc_site/web2py/gluon/html.py", line 695, in > elements > child_matches = c.elements( *args, **kargs ) > File "/home/bob/cdmc_site/web2py/gluon/html.py", line 695, in > elements > child_matches = c.elements( *args, **kargs ) > File "/home/bob/cdmc_site/web2py/gluon/html.py", line 695, in > elements > child_matches = c.elements( *args, **kargs ) > File "/home/bob/cdmc_site/web2py/gluon/html.py", line 695, in > elements > child_matches = c.elements( *args, **kargs ) > AttributeError: 'XML' object has no attribute 'elements' > > SOLUTION: > add a dummy 'elements' method to gluon.html.XML(XmlComponent): > > def elements(self, *args, **kargs): > return [] > > CAVEAT: > While this works for me, perhaps it is a bit simplistic.

