Added datestamps to bugs
authorAaron Bentley <abentley@panoramicfeedback.com>
Wed, 23 Mar 2005 15:28:29 +0000 (15:28 +0000)
committerAaron Bentley <abentley@panoramicfeedback.com>
Wed, 23 Mar 2005 15:28:29 +0000 (15:28 +0000)
becommands/new.py
becommands/show.py
libbe/bugdir.py
libbe/utility.py

index 7c3a952c9084f796115a7c9151e452921dadc58f..afa6494fe12f2ad3744ed45283940d0821737b7b 100644 (file)
@@ -1,13 +1,10 @@
 """Create a new bug"""
-from libbe import bugdir, cmdutil, names
+from libbe import bugdir, cmdutil, names, utility
 def execute(args):
     if len(args) != 1:
         raise cmdutil.UserError("Please supply a summary message")
     dir = cmdutil.bug_tree()
-    bug = dir.new_bug()
-    bug.creator = names.creator()
-    bug.severity = "minor"
-    bug.status = "open"
+    bug = bugdir.new_bug(dir)
     bug.summary = args[0]
     bug.save()
     bugs = (dir.list())
index 3d1c9ed17da288cf5892c090edb4a78bc4abefba..3ec5ec46ba30460db883c9951593955ea344d060 100644 (file)
@@ -1,10 +1,16 @@
 """Show a particular bug"""
-from libbe import bugdir, cmdutil
+from libbe import bugdir, cmdutil, utility
 import os
 
 def execute(args):
     bug_dir = cmdutil.bug_tree()
     if len(args) !=1:
         raise cmdutil.UserError("Please specify a bug id.")
-    print cmdutil.bug_summary(cmdutil.get_bug(args[0], bug_dir), 
-                              list(bug_dir.list()))
+    bug = cmdutil.get_bug(args[0], bug_dir)
+    print cmdutil.bug_summary(bug, list(bug_dir.list())).rstrip("\n")
+    if bug.time is None:
+        time_str = "(Unknown time)"
+    else:
+        time_str = "%s (%s)" % (utility.handy_time(bug.time), 
+                                utility.time_to_str(bug.time))
+    print "Created: %s\n" % time_str
index e2f40d67bdd535b13d014777325d6b096d0f3fbd..d318690191b06787577a4d07017dd4b891de3bc9 100644 (file)
@@ -4,6 +4,8 @@ import cmdutil
 import errno
 import names
 import mapfile
+import time
+import utility
 from rcs import rcs_by_name
 
 class NoBugDir(Exception):
@@ -162,6 +164,9 @@ class Bug(object):
         self.status = dict.get("status")
         self.severity = dict.get("severity")
         self.assigned = dict.get("assigned")
+        self.time = dict.get("time")
+        if self.time is not None:
+            self.time = utility.str_to_time(self.time)
 
     def get_path(self, file):
         return os.path.join(self.path, self.uuid, file)
@@ -184,10 +189,21 @@ class Bug(object):
         self.add_attr(map, "target")
         self.add_attr(map, "status")
         self.add_attr(map, "severity")
+        if self.time is not None:
+            map["time"] = utility.time_to_str(self.time)
         path = self.get_path("values")
         map_save(rcs_by_name(self.rcs_name), path, map)
 
 
+def new_bug(dir):
+    bug = dir.new_bug()
+    bug.creator = names.creator()
+    bug.severity = "minor"
+    bug.status = "open"
+    bug.time = time.time()
+    return bug
+
 def map_save(rcs, path, map):
     """Save the map as a mapfile to the specified path"""
     if not os.path.exists(path):
index a67037d2db20b78c98b286f3d4637d216c32914f..a2774d3824faaf67f7d93113ff845a552d1491a1 100644 (file)
@@ -1,3 +1,6 @@
+import calendar
+import time
+
 class FileString(object):
     """Bare-bones pseudo-file class
     
@@ -49,3 +52,28 @@ def get_file(f):
         return f
 
 
+RFC_2822_TIME_FMT = "%a, %d %b %Y %H:%M:%S +0000"
+
+
+def time_to_str(time_val):
+    """Convert a time value into an RFC 2822-formatted string.  This format
+    lacks sub-second data.
+    >>> time_to_str(0)
+    'Thu, 01 Jan 1970 00:00:00 +0000'
+    """
+    return time.strftime(RFC_2822_TIME_FMT, time.gmtime(time_val))
+
+def str_to_time(str_time):
+    """Convert an RFC 2822-fomatted string into a time falue.
+    >>> str_to_time("Thu, 01 Jan 1970 00:00:00 +0000")
+    0
+    >>> q = time.time()
+    # int(q) because the round-trip loses sub-second data
+    >>> str_to_time(time_to_str(q)) == int(q)
+    True
+    """
+    return calendar.timegm(time.strptime(str_time, RFC_2822_TIME_FMT))
+
+def handy_time(time_val):
+    return time.strftime("%a, %d %b %Y %H:%M", time.localtime(time_val))
+