diff --git a/gluon/html.py b/gluon/html.py index 1806f427..e677d9bb 100644 --- a/gluon/html.py +++ b/gluon/html.py @@ -1482,8 +1482,11 @@ class A(DIV): def xml(self): if not self.components and self['_href']: self.append(self['_href']) - if not self['_disable_with']: - self['_data-w2p_disable_with'] = 'default' + disable_needed = ['callback', 'cid', 'delete', 'component', 'target'] + disable_needed = any((self[attr] for attr in disable_needed)) + if disable_needed: + self['_data-w2p_disable_with'] = self['_disable_with'] or 'default' + self['_disable_with'] = None if self['callback'] and not self['_id']: self['_id'] = web2py_uuid() if self['delete']: @@ -2518,7 +2521,7 @@ def test(): >>> from validators import * >>> print DIV(A('click me', _href=URL(a='a', c='b', f='c')), BR(), HR(), DIV(SPAN("World"), _class='unknown')).xml() -
click me

World
+
click me

World
>>> print DIV(UL("doc","cat","mouse")).xml()
>>> print DIV(UL("doc", LI("cat", _class='feline'), 18)).xml() diff --git a/gluon/tests/test_html.py b/gluon/tests/test_html.py index 8272adbd..a5668da3 100644 --- a/gluon/tests/test_html.py +++ b/gluon/tests/test_html.py @@ -69,8 +69,50 @@ class TestBareHelpers(unittest.TestCase): '') def testA(self): - self.assertEqual(A('<>', _a='1', _b='2').xml(), - '<>') + self.assertEqual( + A('<>', _a='1', _b='2').xml(), + '<>' + ) + self.assertEqual( + A('a', cid='b').xml(), + 'a' + ) + self.assertEqual( + A('a', callback='b', _id='c').xml(), + 'a' + ) + self.assertEqual( + A('a', delete='tr').xml(), + 'a' + ) + self.assertEqual( + A('a', _id='b', target='').xml(), + 'a' + ) + self.assertEqual( + A('a', component='b').xml(), + 'a' + ) + self.assertEqual( + A('a', _id='b', callback='c', noconfirm=True).xml(), + 'a' + ) + self.assertEqual( + A('a', cid='b').xml(), + 'a' + ) + self.assertEqual( + A('a', cid='b', _disable_with='processing...').xml(), + 'a' + ) + self.assertEqual( + A('a', callback='b', delete='tr', noconfirm=True, _id='c').xml(), + 'a' + ) + self.assertEqual( + A('a', callback='b', delete='tr', confirm='Are you sure?', _id='c').xml(), + 'a' + ) def testB(self): self.assertEqual(B('<>', _a='1', _b='2').xml(), @@ -237,7 +279,7 @@ class TestBareHelpers(unittest.TestCase): class TestData(unittest.TestCase): def testAdata(self): - self.assertEqual(A('<>', data=dict(abc='', cde='standard'), _a='1', _b='2').xml(),'<>') + self.assertEqual(A('<>', data=dict(abc='', cde='standard'), _a='1', _b='2').xml(),'<>') if __name__ == '__main__':