comparison treepkg/status.py @ 464:5fda6768bef6

Enable a status_hook to be set and executed on status changes
author Andre Heinecke <aheinecke@intevation.de>
date Thu, 09 Sep 2010 14:26:35 +0000
parents 27824d3add92
children
comparison
equal deleted inserted replaced
463:52f841330c16 464:5fda6768bef6
119 # Overwrite in derived classes with a different magic string 119 # Overwrite in derived classes with a different magic string
120 _magic = "Status 0.0\n" 120 _magic = "Status 0.0\n"
121 121
122 # Derived classes may extend a copy of this set with more instance 122 # Derived classes may extend a copy of this set with more instance
123 # variables. 123 # variables.
124 _attrs = set(["_filename", "_values"]) 124 _attrs = set(["_filename", "_values", "_after_setattr"])
125 125
126 def __init__(self, filename): 126 def __init__(self, filename, after_setattr=None):
127 self._values = dict() 127 self._values = dict()
128 self._filename = filename 128 self._filename = filename
129 self._after_setattr = after_setattr
129 if self._filename is not None: 130 if self._filename is not None:
130 assert os.path.isabs(self._filename) 131 assert os.path.isabs(self._filename)
131 self.read() 132 self.read()
132 133
133 def deserialize(self, iter_lines, filename=None): 134 def deserialize(self, iter_lines, filename=None):
176 177
177 def __setattr__(self, attr, value): 178 def __setattr__(self, attr, value):
178 if attr in self._fields: 179 if attr in self._fields:
179 self._values[attr] = value 180 self._values[attr] = value
180 self.write() 181 self.write()
182 if self._after_setattr is not None:
183 self._after_setattr(self, attr)
181 elif attr in self._attrs: 184 elif attr in self._attrs:
182 self.__dict__[attr] = value 185 self.__dict__[attr] = value
183 else: 186 else:
184 raise AttributeError(attr) 187 raise AttributeError(attr)
185 188
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)