Skip to content

Commit c5b8d42

Browse files
committed
Merge my own changes from different checkouts
2 parents f06137f + efaf191 commit c5b8d42

File tree

2 files changed

+30
-16
lines changed

2 files changed

+30
-16
lines changed

roundup/cgi/client.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1203,11 +1203,15 @@ def handle_action(self):
12031203
We explicitly catch Reject and ValueError exceptions and
12041204
present their messages to the user.
12051205
"""
1206-
if ':action' in self.form:
1207-
action = self.form[':action']
1208-
elif '@action' in self.form:
1209-
action = self.form['@action']
1210-
else:
1206+
action = None
1207+
try:
1208+
if ':action' in self.form:
1209+
action = self.form[':action']
1210+
elif '@action' in self.form:
1211+
action = self.form['@action']
1212+
except TypeError:
1213+
pass
1214+
if action is None:
12111215
return None
12121216

12131217
if isinstance(action, list):

roundup/cgi/templating.py

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -509,7 +509,6 @@ def __getitem__(self, item):
509509
raise KeyError, 'No such property "%s" on %s'%(item, self.classname)
510510

511511
# look up the correct HTMLProperty class
512-
form = self._client.form
513512
for klass, htmlklass in propclasses:
514513
if not isinstance(prop, klass):
515514
continue
@@ -1225,7 +1224,11 @@ def __init__(self, client, classname, nodeid, prop, name, value,
12251224
# If no value is already present for this property, see if one
12261225
# is specified in the current form.
12271226
form = self._client.form
1228-
if not self._value and form.has_key(self._formname):
1227+
try:
1228+
is_in = form.has_key(self._formname)
1229+
except TypeError:
1230+
is_in = False
1231+
if not self._value and is_in:
12291232
if isinstance(prop, hyperdb.Multilink):
12301233
value = lookupIds(self._db, prop,
12311234
handleListCGIValue(form[self._formname]),
@@ -2426,7 +2429,7 @@ def _parse_sort(self, var, name):
24262429
for special in '@:':
24272430
idx = 0
24282431
key = '%s%s%d'%(special, name, idx)
2429-
while key in self.form:
2432+
while self._form_has_key(key):
24302433
self.special_char = special
24312434
fields.append(self.form.getfirst(key))
24322435
dirkey = '%s%sdir%d'%(special, name, idx)
@@ -2439,7 +2442,7 @@ def _parse_sort(self, var, name):
24392442
# backward compatible (and query) URL format
24402443
key = special + name
24412444
dirkey = key + 'dir'
2442-
if key in self.form and not fields:
2445+
if self._form_has_key(key) and not fields:
24432446
fields = handleListCGIValue(self.form[key])
24442447
if dirkey in self.form:
24452448
dirs.append(self.form.getfirst(dirkey))
@@ -2453,13 +2456,20 @@ def _parse_sort(self, var, name):
24532456
else:
24542457
var.append(('+', f))
24552458

2459+
def _form_has_key(self, name):
2460+
try:
2461+
return self.form.has_key(name)
2462+
except TypeError:
2463+
pass
2464+
return False
2465+
24562466
def _post_init(self):
24572467
""" Set attributes based on self.form
24582468
"""
24592469
# extract the index display information from the form
24602470
self.columns = []
24612471
for name in ':columns @columns'.split():
2462-
if self.form.has_key(name):
2472+
if self._form_has_key(name):
24632473
self.special_char = name[0]
24642474
self.columns = handleListCGIValue(self.form[name])
24652475
break
@@ -2478,7 +2488,7 @@ def _post_init(self):
24782488
# filtering
24792489
self.filter = []
24802490
for name in ':filter @filter'.split():
2481-
if self.form.has_key(name):
2491+
if self._form_has_key(name):
24822492
self.special_char = name[0]
24832493
self.filter = handleListCGIValue(self.form[name])
24842494

@@ -2487,7 +2497,7 @@ def _post_init(self):
24872497
if self.classname is not None:
24882498
cls = db.getclass (self.classname)
24892499
for name in self.filter:
2490-
if not self.form.has_key(name):
2500+
if not self._form_has_key(name):
24912501
continue
24922502
prop = cls.get_transitive_prop (name)
24932503
fv = self.form[name]
@@ -2509,15 +2519,15 @@ def _post_init(self):
25092519
# full-text search argument
25102520
self.search_text = None
25112521
for name in ':search_text @search_text'.split():
2512-
if self.form.has_key(name):
2522+
if self._form_has_key(name):
25132523
self.special_char = name[0]
25142524
self.search_text = self.form.getfirst(name)
25152525

25162526
# pagination - size and start index
25172527
# figure batch args
25182528
self.pagesize = 50
25192529
for name in ':pagesize @pagesize'.split():
2520-
if self.form.has_key(name):
2530+
if self._form_has_key(name):
25212531
self.special_char = name[0]
25222532
try:
25232533
self.pagesize = int(self.form.getfirst(name))
@@ -2527,7 +2537,7 @@ def _post_init(self):
25272537

25282538
self.startwith = 0
25292539
for name in ':startwith @startwith'.split():
2530-
if self.form.has_key(name):
2540+
if self._form_has_key(name):
25312541
self.special_char = name[0]
25322542
try:
25332543
self.startwith = int(self.form.getfirst(name))
@@ -2536,7 +2546,7 @@ def _post_init(self):
25362546
pass
25372547

25382548
# dispname
2539-
if self.form.has_key('@dispname'):
2549+
if self._form_has_key('@dispname'):
25402550
self.dispname = self.form.getfirst('@dispname')
25412551
else:
25422552
self.dispname = None

0 commit comments

Comments
 (0)