Index: roundup/hyperdb.py =================================================================== --- roundup/hyperdb.py (revision 4212) +++ roundup/hyperdb.py (working copy) @@ -37,6 +37,7 @@ """A roundup property type.""" def __init__(self, required=False): self.required = required + self.quiet = False def __repr__(self): ' more useful for dumps ' return '<%s.%s>'%(self.__class__.__module__, self.__class__.__name__) Index: roundup/roundupdb.py =================================================================== --- roundup/roundupdb.py (revision 4212) +++ roundup/roundupdb.py (working copy) @@ -561,6 +561,9 @@ value.sort() value = ', '.join(value) else: + # Omit quiet properties from history/changelog + if prop.quiet: + continue value = str(value) if '\n' in value: value = '\n'+self.indentChangeNoteValue(value) @@ -654,6 +657,9 @@ l.sort() change += ' -%s'%(', '.join(l)) else: + # Omit quiet properties from history/changelog + if prop.quiet: + continue change = '%s -> %s'%(oldvalue, value) if '\n' in change: value = self.indentChangeNoteValue(str(value)) Index: roundup/cgi/templating.py =================================================================== --- roundup/cgi/templating.py (revision 4212) +++ roundup/cgi/templating.py (working copy) @@ -1035,6 +1035,10 @@ cell[-1] += ' -> %s'%current[k] current[k] = old + # Omit quiet properties from history/changelog + elif prop.quiet: + continue + elif isinstance(prop, hyperdb.Date) and args[k]: if args[k] is None: d = '' Index: roundup/backends/rdbms_common.py =================================================================== --- roundup/backends/rdbms_common.py (revision 4212) +++ roundup/backends/rdbms_common.py (working copy) @@ -1639,6 +1639,9 @@ # for the Database layer to do its stuff multilink_changes = {} + # omit quiet properties from history/changelog + quiet_props = [] + for propname, value in propvalues.items(): # check to make sure we're not duplicating an existing key if propname == self.key and node[propname] != value: @@ -1803,6 +1806,9 @@ int(value) except ValueError: raise TypeError, 'new property "%s" not boolean'%propname + # record quiet properties to omit from history/changelog + if prop.quiet: + quiet_props.append(propname) # nothing to do? if not propvalues: @@ -1823,6 +1829,11 @@ if self.do_journal: self.db.addjournal(self.classname, nodeid, ''"set", journalvalues) + # remove quiet properties from output + for propname in quiet_props: + if propname in propvalues: + del propvalues[propname] + return propvalues def retire(self, nodeid):