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.

Reply via email to