@@ -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