Skip to content

Commit 28865cd

Browse files
committed
HTML* classes for cgi: handle MissingValue case
1 parent 2530fc0 commit 28865cd

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

roundup/cgi/templating.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1938,6 +1938,9 @@ def __getitem__(self, item):
19381938
due to __getattr__ returning the __getitem__ of HTMLItem -- this
19391939
lookup doesn't work for new-style classes.
19401940
"""
1941+
if not self._value:
1942+
msg = self._('Attempt to look up %(item)s on a missing value')
1943+
return MissingValue(msg%locals())
19411944
i = HTMLItem(self._client, self._prop.classname, self._value)
19421945
return i[item]
19431946

test/db_test_base.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2536,6 +2536,9 @@ def setUp(self):
25362536
issue = {'title': 'ts1', 'status': '2', 'assignedto': '3',
25372537
'priority': '3', 'messages' : [u_m], 'nosy' : ['3']}
25382538
self.db.issue.create(**issue)
2539+
issue = {'title': 'ts2', 'status': '2',
2540+
'messages' : [u_m], 'nosy' : ['3']}
2541+
self.db.issue.create(**issue)
25392542

25402543
def testHTMLItemAttributes(self):
25412544
issue = HTMLItem(self.client, 'issue', '1')
@@ -2578,4 +2581,19 @@ def testHTMLItemDereference(self):
25782581
ae(n['author']['username'].plain(),'worker5')
25792582

25802583

2584+
def testHTMLItemDerefFail(self):
2585+
issue = HTMLItem(self.client, 'issue', '2')
2586+
ae = self.assertEqual
2587+
ae(issue.assignedto.plain(),'')
2588+
ae(issue ['assignedto'].plain(),'')
2589+
ae(issue.priority.plain(),'')
2590+
ae(issue ['priority'].plain(),'')
2591+
m = '[Attempt to look up %s on a missing value]'
2592+
ae(str(issue.priority.name),m%'name')
2593+
ae(str(issue ['priority'].name),m%'name')
2594+
ae(str(issue.assignedto.username),m%'username')
2595+
ae(str(issue ['assignedto'].username),m%'username')
2596+
ae(bool(issue ['assignedto']['username']),False)
2597+
ae(bool(issue ['priority']['name']),False)
2598+
25812599
# vim: set et sts=4 sw=4 :

0 commit comments

Comments
 (0)