diff --git a/roundup/backends/back_anydbm.py b/roundup/backends/back_anydbm.py --- a/roundup/backends/back_anydbm.py +++ b/roundup/backends/back_anydbm.py @@ -1297,7 +1297,7 @@ if not isinstance(value, password.Password): raise TypeError('new property "%s" not a ' 'Password'%propname) - propvalues[propname] = value + propvalues[propname] = value.dummystr() elif value is not None and isinstance(prop, hyperdb.Date): if not isinstance(value, date.Date): diff --git a/roundup/backends/rdbms_common.py b/roundup/backends/rdbms_common.py --- a/roundup/backends/rdbms_common.py +++ b/roundup/backends/rdbms_common.py @@ -1863,7 +1863,7 @@ elif isinstance(prop, Password): if not isinstance(value, password.Password): raise TypeError('new property "%s" not a Password'%propname) - propvalues[propname] = value + propvalues[propname] = value.dummystr() elif value is not None and isinstance(prop, Date): if not isinstance(value, date.Date): diff --git a/roundup/cgi/templating.py b/roundup/cgi/templating.py --- a/roundup/cgi/templating.py +++ b/roundup/cgi/templating.py @@ -1114,6 +1114,13 @@ cell[-1] += ' -> %s'%current[k] current[k] = val + elif isinstance(prop, hyperdb.Password) and args[k] is not None: + val = args[k].dummystr() + cell.append('%s: %s'%(self._(k), val)) + if current.has_key(k): + cell[-1] += ' -> %s'%current[k] + current[k] = val + elif not args[k]: if current.has_key(k): cell.append('%s: %s'%(self._(k), current[k])) @@ -1567,7 +1574,10 @@ if self._value is None: return '' - return self._('*encrypted*') + value = self._value.dummystr() + if escape: + value = cgi.escape(value) + return value def field(self, size=30, **kwargs): """ Render a form edit field for the property. diff --git a/roundup/password.py b/roundup/password.py --- a/roundup/password.py +++ b/roundup/password.py @@ -246,6 +246,10 @@ return cmp(self.password, encodePassword(other, self.scheme, self.password)) + def dummystr(self): + "return dummy string to store in journal - reports scheme, but nothing else" + return "{%s}*encrypted*" % (self.scheme,) + def __str__(self): """Stringify the encrypted password for database storage.""" if self.password is None: