SVN: toys/cvsstats/email2sql.py

pawelz pawelz at pld-linux.org
Sun Feb 28 00:51:46 CET 2010


Author: pawelz
Date: Sun Feb 28 00:51:45 2010
New Revision: 11212

Modified:
   toys/cvsstats/email2sql.py
Log:
- workaround for multipart messages


Modified: toys/cvsstats/email2sql.py
==============================================================================
--- toys/cvsstats/email2sql.py	(original)
+++ toys/cvsstats/email2sql.py	Sun Feb 28 00:51:45 2010
@@ -8,7 +8,7 @@
 import time
 
 rmsg = re.compile(
-  "\AAuthor: (?P<author>\S+)\s+Date: (?P<date>.*)\n"
+  "^Author: (?P<author>\S+)\s+Date: (?P<date>.*)\n"
   "Module: (?P<module>\S+)\s+Tag: (?P<tag>.*)\n"
   "---- Log message:\n"
   "(?P<log>(.*\n)*)\n"
@@ -38,20 +38,26 @@
     msg = email.message_from_file(fp)
     fp.close()
 
-    for part in msg.walk():
-      p = part.get_payload(decode=True)
-      m = rmsg.match(p)
-      if m:
-        self.author = m.group("author")
-	d = time.strptime(m.group("date")[0:-4])
-	self.date = "%i-%i-%i %i:%i:%i" % (d.tm_year, d.tm_mon, d.tm_mday,
-	    d.tm_hour, d.tm_min, d.tm_sec)
-        self.module = m.group("module")
-        self.tag = m.group("tag")
-        self.log = m.group("log")
-        self.files = m.group("files")
-        self.parse_diff(m.group("diff"))
-        break;
+    #for part in msg.walk():
+    p = msg.get_payload(decode=True)
+
+    # ugly workaround, for some reason get_payload fails for multipart
+    # messages
+    if (not p):
+      p = str(msg)
+
+    m = rmsg.search(p)
+    if m:
+      self.author = m.group("author")
+      d = time.strptime(m.group("date")[0:-4])
+      self.date = "%i-%i-%i %i:%i:%i" % (d.tm_year, d.tm_mon, d.tm_mday,
+          d.tm_hour, d.tm_min, d.tm_sec)
+      self.module = m.group("module")
+      self.tag = m.group("tag")
+      self.log = m.group("log")
+      self.files = m.group("files")
+      self.parse_diff(m.group("diff"))
+      #break;
 
   def parse_diff(self, diff):
     current_file=None
@@ -118,6 +124,10 @@
   for f in sys.argv:
     if f == sys.argv[0]:
       continue
-    c = commit(f)
-    c.files_sql()
-    c.commit_sql()
+    try:
+      c = commit(f)
+      print "-- %s" % f
+      c.files_sql()
+      c.commit_sql()
+    except:
+      print >> sys.stderr, "Error: %s" % f


More information about the pld-cvs-commit mailing list