1 """Upgrade the bugs to the latest format"""
4 from libbe import bugdir, rcs
7 root = bugdir.tree_root(".", old_version=True)
8 for uuid in root.list_uuids():
9 old_bug = OldBug(root.bugs_path, uuid)
11 new_bug = bugdir.Bug(root.bugs_path, None)
12 new_bug.uuid = old_bug.uuid
13 new_bug.summary = old_bug.summary
14 new_bug.creator = old_bug.creator
15 new_bug.target = old_bug.target
16 new_bug.status = old_bug.status
17 new_bug.severity = old_bug.severity
20 for uuid in root.list_uuids():
21 old_bug = OldBug(root.bugs_path, uuid)
24 bugdir.set_version(root.dir)
26 def file_property(name, valid=None):
28 value = self._get_value(name)
30 if value not in valid:
31 raise InvalidValue(name, value)
33 def setter(self, value):
35 if value not in valid and value is not None:
36 raise InvalidValue(name, value)
37 return self._set_value(name, value)
38 return property(getter, setter)
42 def __init__(self, path, uuid):
43 self.path = os.path.join(path, uuid)
46 def get_path(self, file):
47 return os.path.join(self.path, file)
49 summary = file_property("summary")
50 creator = file_property("creator")
51 target = file_property("target")
52 status = file_property("status", valid=("open", "closed"))
53 severity = file_property("severity", valid=("wishlist", "minor", "serious",
61 self._set_value("name", None)
63 def _get_active(self):
64 return self.status == "open"
66 active = property(_get_active)
68 def _get_value(self, name):
70 return file(self.get_path(name), "rb").read().rstrip("\n")
72 if e.errno == errno.EEXIST:
75 def _set_value(self, name, value):
78 rcs.unlink(self.get_path(name))
83 rcs.set_file_contents(self.get_path(name), "%s\n" % value)