@@ -878,7 +878,7 @@ def history(self, direction='descending', dre=re.compile('^\d+$')):
878878 prop = self [prop_n ]
879879 if not isinstance (prop , HTMLProperty ):
880880 continue
881- current [prop_n ] = prop .plain ()
881+ current [prop_n ] = prop .plain (escape = 1 )
882882 # make link if hrefable
883883 if (self ._props .has_key (prop_n ) and
884884 isinstance (self ._props [prop_n ], hyperdb .Link )):
@@ -979,6 +979,7 @@ def history(self, direction='descending', dre=re.compile('^\d+$')):
979979 if labelprop is not None and \
980980 labelprop != 'id' :
981981 label = linkcl .get (linkid , labelprop )
982+ label = cgi .escape (label )
982983 except IndexError :
983984 comments ['no_link' ] = self ._ (
984985 "<strike>The linked node"
@@ -1002,7 +1003,8 @@ def history(self, direction='descending', dre=re.compile('^\d+$')):
10021003 # there's no labelprop!
10031004 if labelprop is not None and labelprop != 'id' :
10041005 try :
1005- label = linkcl .get (args [k ], labelprop )
1006+ label = cgi .escape (linkcl .get (args [k ],
1007+ labelprop ))
10061008 except IndexError :
10071009 comments ['no_link' ] = self ._ (
10081010 "<strike>The linked node"
@@ -1012,7 +1014,8 @@ def history(self, direction='descending', dre=re.compile('^\d+$')):
10121014 label = None
10131015 if label is not None :
10141016 if hrefable :
1015- old = '<a href="%s%s">%s</a>' % (classname , args [k ], label )
1017+ old = '<a href="%s%s">%s</a>' % (classname ,
1018+ args [k ], label )
10161019 else :
10171020 old = label ;
10181021 cell .append ('%s: %s' % (self ._ (k ), old ))
@@ -1369,7 +1372,7 @@ def field(self, **kwargs):
13691372 If not editable, just display the value via plain().
13701373 """
13711374 if not self .is_edit_ok ():
1372- return self .plain ()
1375+ return self .plain (escape = 1 )
13731376
13741377 value = self ._value
13751378 if value is None :
@@ -1423,7 +1426,7 @@ def email(self, escape=1):
14231426 return value
14241427
14251428class PasswordHTMLProperty (HTMLProperty ):
1426- def plain (self ):
1429+ def plain (self , escape = 0 ):
14271430 """ Render a "plain" representation of the property
14281431 """
14291432 if not self .is_view_ok ():
@@ -1439,7 +1442,7 @@ def field(self, size=30):
14391442 If not editable, just display the value via plain().
14401443 """
14411444 if not self .is_edit_ok ():
1442- return self .plain ()
1445+ return self .plain (escape = 1 )
14431446
14441447 return self .input (type = "password" , name = self ._formname , size = size )
14451448
@@ -1459,7 +1462,7 @@ def confirm(self, size=30):
14591462 size = size )
14601463
14611464class NumberHTMLProperty (HTMLProperty ):
1462- def plain (self ):
1465+ def plain (self , escape = 0 ):
14631466 """ Render a "plain" representation of the property
14641467 """
14651468 if not self .is_view_ok ():
@@ -1476,7 +1479,7 @@ def field(self, size=30):
14761479 If not editable, just display the value via plain().
14771480 """
14781481 if not self .is_edit_ok ():
1479- return self .plain ()
1482+ return self .plain (escape = 1 )
14801483
14811484 value = self ._value
14821485 if value is None :
@@ -1496,7 +1499,7 @@ def __float__(self):
14961499
14971500
14981501class BooleanHTMLProperty (HTMLProperty ):
1499- def plain (self ):
1502+ def plain (self , escape = 0 ):
15001503 """ Render a "plain" representation of the property
15011504 """
15021505 if not self .is_view_ok ():
@@ -1512,7 +1515,7 @@ def field(self):
15121515 If not editable, just display the value via plain().
15131516 """
15141517 if not self .is_edit_ok ():
1515- return self .plain ()
1518+ return self .plain (escape = 1 )
15161519
15171520 value = self ._value
15181521 if isinstance (value , str ) or isinstance (value , unicode ):
@@ -1549,7 +1552,7 @@ def __init__(self, client, classname, nodeid, prop, name, value,
15491552 if self ._offset is None :
15501553 self ._offset = self ._prop .offset (self ._db )
15511554
1552- def plain (self ):
1555+ def plain (self , escape = 0 ):
15531556 """ Render a "plain" representation of the property
15541557 """
15551558 if not self .is_view_ok ():
@@ -1600,7 +1603,7 @@ def field(self, size=30, default=None, format=_marker, popcal=True):
16001603 """
16011604 if not self .is_edit_ok ():
16021605 if format is self ._marker :
1603- return self .plain ()
1606+ return self .plain (escape = 1 )
16041607 else :
16051608 return self .pretty (format )
16061609
@@ -1720,7 +1723,7 @@ def __init__(self, client, classname, nodeid, prop, name, value,
17201723 if self ._value and not isinstance (self ._value , (str , unicode )):
17211724 self ._value .setTranslator (self ._client .translator )
17221725
1723- def plain (self ):
1726+ def plain (self , escape = 0 ):
17241727 """ Render a "plain" representation of the property
17251728 """
17261729 if not self .is_view_ok ():
@@ -1744,7 +1747,7 @@ def field(self, size=30):
17441747 If not editable, just display the value via plain().
17451748 """
17461749 if not self .is_edit_ok ():
1747- return self .plain ()
1750+ return self .plain (escape = 1 )
17481751
17491752 value = self ._value
17501753 if value is None :
@@ -1806,7 +1809,7 @@ def field(self, showid=0, size=None):
18061809 If not editable, just display the value via plain().
18071810 """
18081811 if not self .is_edit_ok ():
1809- return self .plain ()
1812+ return self .plain (escape = 1 )
18101813
18111814 # edit field
18121815 linkcl = self ._db .getclass (self ._prop .classname )
@@ -1842,7 +1845,7 @@ def menu(self, size=None, height=None, showid=0, additional=[], value=None,
18421845 If not editable, just display the value via plain().
18431846 """
18441847 if not self .is_edit_ok ():
1845- return self .plain ()
1848+ return self .plain (escape = 1 )
18461849
18471850 if value is None :
18481851 value = self ._value
@@ -1999,7 +2002,7 @@ def field(self, size=30, showid=0):
19992002 If not editable, just display the value via plain().
20002003 """
20012004 if not self .is_edit_ok ():
2002- return self .plain ()
2005+ return self .plain (escape = 1 )
20032006
20042007 linkcl = self ._db .getclass (self ._prop .classname )
20052008 value = self ._value [:]
@@ -2034,7 +2037,7 @@ def menu(self, size=None, height=None, showid=0, additional=[],
20342037 If not editable, just display the value via plain().
20352038 """
20362039 if not self .is_edit_ok ():
2037- return self .plain ()
2040+ return self .plain (escape = 1 )
20382041
20392042 if value is None :
20402043 value = self ._value
0 commit comments