]> git.decadent.org.uk Git - dak.git/blobdiff - dak/queue_report.py
Convert exception handling to Python3 syntax.
[dak.git] / dak / queue_report.py
index 19673d5593a0d313de1d97598d0236c6b4cffd9f..5fd9288a8c6da8711b48e1eff274f213e169c955 100755 (executable)
@@ -44,7 +44,8 @@ except ImportError:
 
 from daklib import utils
 from daklib.queue import Upload
-from daklib.dbconn import DBConn, has_new_comment, DBChange, DBSource, get_uid_from_fingerprint
+from daklib.dbconn import DBConn, has_new_comment, DBChange, DBSource, \
+                          get_uid_from_fingerprint, get_policy_queue
 from daklib.textutils import fix_maintainer
 from daklib.dak_exceptions import *
 
@@ -56,7 +57,7 @@ row_number = 0
 
 def usage(exit_code=0):
     print """Usage: dak queue-report
-Prints a report of packages in queue directories (usually new and byhand).
+Prints a report of packages in queues (usually new and byhand).
 
   -h, --help                show this help and exit.
   -8, --822                 writes 822 formated output to the location set in dak.conf
@@ -222,6 +223,7 @@ def header():
 
 def footer():
     print "<p class=\"timestamp\">Timestamp: %s (UTC)</p>" % (time.strftime("%d.%m.%Y / %H:%M:%S", time.gmtime()))
+    print "<p class=\"timestamp\">There are <a href=\"/stat.html\">graphs about the queues</a> available.</p>"
 
     print """
     <div class="footer">
@@ -310,7 +312,7 @@ def table_row(source, version, arch, last_mod, maint, distribution, closes, fing
         try:
             (login, domain) = sponsor.split("@", 1)
             print "<span class=\"sponsor\">Sponsor: <a href=\"http://qa.debian.org/developer.php?login=%s\">%s</a></span>@debian.org<br/>" % (utils.html_escape(login), utils.html_escape(login))
-        except Exception, e:
+        except Exception as e:
             pass
 
     print "<span class=\"signature\">Fingerprint: %s</span>" % (fingerprint)
@@ -350,8 +352,11 @@ RRA:MAX:0.5:6:700
 RRA:MAX:0.5:24:775
 RRA:MAX:0.5:288:795
 """.strip().split("\n")
-        rrdtool.create(*create)
-        rrdtool.update(*update)
+        try:
+            rc = rrdtool.create(*create)
+            ru = rrdtool.update(*update)
+        except rrdtool.error as e:
+            print('warning: queue_report: rrdtool error, skipping %s.rrd: %s' % (type, e))
     except NameError:
         pass
 
@@ -367,7 +372,7 @@ def process_changes_files(changes_files, type, log, rrd_dir):
             u.load_changes(filename)
             cache[filename] = copy(u.pkg.changes)
             cache[filename]["filename"] = filename
-        except Exception, e:
+        except Exception as e:
             print "WARNING: Exception %s" % e
             continue
     # Divide the .changes into per-source groups
@@ -433,7 +438,7 @@ def process_changes_files(changes_files, type, log, rrd_dir):
                 session = DBConn().session()
                 dbc = session.query(DBChange).filter_by(changesname=changesbase).one()
                 session.close()
-            except Exception, e:
+            except Exception as e:
                 print "Can't find changes file in NEW for %s (%s)" % (changesbase, e)
                 dbc = None
 
@@ -442,7 +447,7 @@ def process_changes_files(changes_files, type, log, rrd_dir):
                     (maintainer["maintainer822"], maintainer["maintainer2047"],
                     maintainer["maintainername"], maintainer["maintaineremail"]) = \
                     fix_maintainer (j["maintainer"])
-                except ParseMaintError, msg:
+                except ParseMaintError as msg:
                     print "Problems while parsing maintainer address\n"
                     maintainer["maintainername"] = "Unknown"
                     maintainer["maintaineremail"] = "Unknown"
@@ -452,7 +457,7 @@ def process_changes_files(changes_files, type, log, rrd_dir):
                     (changeby["changedby822"], changeby["changedby2047"],
                      changeby["changedbyname"], changeby["changedbyemail"]) = \
                      fix_maintainer (j["changed-by"])
-                except ParseMaintError, msg:
+                except ParseMaintError as msg:
                     (changeby["changedby822"], changeby["changedby2047"],
                      changeby["changedbyname"], changeby["changedbyemail"]) = \
                      ("", "", "", "")
@@ -621,15 +626,15 @@ def main():
     # Initialize db so we can get the NEW comments
     dbconn = DBConn()
 
-    directories = [ ]
+    queue_names = [ ]
 
     if Cnf.has_key("Queue-Report::Options::Directories"):
         for i in Cnf["Queue-Report::Options::Directories"].split(","):
-            directories.append(i)
+            queue_names.append(i)
     elif Cnf.has_key("Queue-Report::Directories"):
-        directories = Cnf.ValueList("Queue-Report::Directories")
+        queue_names = Cnf.ValueList("Queue-Report::Directories")
     else:
-        directories = [ "byhand", "new" ]
+        queue_names = [ "byhand", "new" ]
 
     if Cnf.has_key("Queue-Report::Options::Rrd"):
         rrd_dir = Cnf["Queue-Report::Options::Rrd"]
@@ -643,24 +648,20 @@ def main():
         # Open the report file
         f = open(Cnf["Queue-Report::ReportLocations::822Location"], "w")
 
-    for directory in directories:
-        changes_files = glob.glob("%s/*.changes" % (Cnf["Dir::Queue::%s" % (directory)]))
-        process_changes_files(changes_files, directory, f, rrd_dir)
+    session = dbconn.session()
+
+    for queue_name in queue_names:
+        queue = get_policy_queue(queue_name, session)
+        if queue:
+            directory = os.path.abspath(queue.path)
+            changes_files = glob.glob("%s/*.changes" % (directory))
+            process_changes_files(changes_files, os.path.basename(directory), f, rrd_dir)
+        else:
+            utils.warn("Cannot find queue %s" % queue_name)
 
     if Cnf.has_key("Queue-Report::Options::822"):
         f.close()
 
-    if Cnf.has_key("Queue-Report::Options::New"):
-        for dir in directories:
-            print """
-<p><img src="%s-day.png" alt="%s, last day"></p>
-<p><img src="%s-week.png" alt="%s, last week"></p>
-<p><img src="%s-month.png" alt="%s, last month"></p>
-<p><img src="%s-year.png" alt="%s, last year"></p>
-<p><img src="%s-5years.png" alt="%s, last 5 years"></p>
-<p><img src="%s-10years.png" alt="%s, last 10 years"></p>
-""" % ((dir,)*12)
-
     if Cnf.has_key("Queue-Report::Options::New"):
         footer()