# HG changeset patch # User paulb # Date 1132522545 0 # Node ID 8844119fb8ef5fc7d217b876310555fa67114aef # Parent 7350aa4ce10099fbad59ca3713b005297672c6f2 [project @ 2005-11-20 21:35:45 by paulb] Removed __new__ from the result of the keys method. Added support for re-adding missing __new__ files. diff -r 7350aa4ce100 -r 8844119fb8ef WebStack/Repositories/Directory.py --- a/WebStack/Repositories/Directory.py Sun Nov 20 21:19:14 2005 +0000 +++ b/WebStack/Repositories/Directory.py Sun Nov 20 21:35:45 2005 +0000 @@ -102,6 +102,8 @@ for name in os.listdir(self.path): if name.endswith(".edit"): l.append(name[:-5]) + elif name == self.new_filename: + pass else: l.append(name) return map(self._convert_fsname, l) @@ -199,7 +201,16 @@ # special file in an attempt to impose some kind of atomic "bottleneck". elif create: - self.lock(self.new_filename) + + # NOTE: Avoid failure case where no __new__ file exists for some + # NOTE: reason. + + try: + self.lock(self.new_filename) + except KeyError: + f = open(self.edit_path(self.new_filename), "wb") + f.close() + try: if opener is None: f = open(edit_path, "wb") @@ -209,6 +220,9 @@ f.close() finally: self.unlock(self.new_filename) + + # Where no creation is requested, raise an exception. + else: raise KeyError, key