]> git.decadent.org.uk Git - dak.git/blobdiff - dak/queue_report.py
dak/queue_report.py: don't die if dak.conf does not know about LDAP
[dak.git] / dak / queue_report.py
index ad2a8531757db2a1d29a8a985d522f2c4df64a05..882eab2a82ebe4d2e04c259d4ff62cff60ee6adc 100755 (executable)
@@ -47,6 +47,7 @@ from daklib.dbconn import DBConn, DBSource, has_new_comment, PolicyQueue, \
                           get_uid_from_fingerprint
 from daklib.policy import PolicyQueueUploadHandler
 from daklib.textutils import fix_maintainer
+from daklib.utils import get_logins_from_ldap
 from daklib.dak_exceptions import *
 
 Cnf = None
@@ -318,11 +319,7 @@ def table_row(source, version, arch, last_mod, maint, distribution, closes, fing
     print "<span class=\"changed-by\">Changed-By: <a href=\"http://qa.debian.org/developer.php?login=%s\">%s</a></span><br/>" % (utils.html_escape(mail), utils.html_escape(name))
 
     if sponsor:
-        try:
-            (login, domain) = sponsor.split("@", 1)
-            print "<span class=\"sponsor\">Sponsor: <a href=\"http://qa.debian.org/developer.php?login=%s\">%s</a>@debian.org</span><br/>" % (utils.html_escape(login), utils.html_escape(login))
-        except Exception as e:
-            pass
+        print "<span class=\"sponsor\">Sponsor: <a href=\"http://qa.debian.org/developer.php?login=%s\">%s</a>@debian.org</span><br/>" % (utils.html_escape(sponsor), utils.html_escape(sponsor))
 
     print "<span class=\"signature\">Fingerprint: %s</span>" % (fingerprint)
     print "</td>"
@@ -419,6 +416,10 @@ def process_queue(queue, log, rrd_dir):
     max_source_len = 0
     max_version_len = 0
     max_arch_len = 0
+    try:
+        logins = get_logins_from_ldap()
+    except:
+        logins = dict()
     for i in per_source_items:
         maintainer = {}
         maint=""
@@ -467,10 +468,15 @@ def process_queue(queue, log, rrd_dir):
 
                 fingerprint = dbc.fingerprint
                 sponsor_name = get_uid_from_fingerprint(fingerprint).name
-                sponsor_email = get_uid_from_fingerprint(fingerprint).uid + "@debian.org"
-                if sponsor_name != maintainer["maintainername"] and sponsor_name != changeby["changedbyname"] and \
-                        sponsor_email != maintainer["maintaineremail"] and sponsor_name != changeby["changedbyemail"]:
-                    sponsor = sponsor_email
+                sponsor_login = get_uid_from_fingerprint(fingerprint).uid
+                if '@' in sponsor_login:
+                    if fingerprint in logins:
+                        sponsor_login = logins[fingerprint]
+                if (sponsor_name != maintainer["maintainername"] and
+                  sponsor_name != changeby["changedbyname"] and
+                  sponsor_login + '@debian.org' != maintainer["maintaineremail"] and
+                  sponsor_name != changeby["changedbyemail"]):
+                    sponsor = sponsor_login
 
             for arch in dbc.architecture.split():
                 arches.add(arch)
@@ -498,16 +504,16 @@ def process_queue(queue, log, rrd_dir):
         age =  Cnf["Queue-Report::Options::Age"]
     if Cnf.has_key("Queue-Report::Options::New"):
     # If we produce html we always have oldest first.
-        direction.append([5,-1,"ao"])
+        direction.append([6,-1,"ao"])
     else:
         if Cnf.has_key("Queue-Report::Options::Sort"):
             for i in Cnf["Queue-Report::Options::Sort"].split(","):
                 if i == "ao":
                     # Age, oldest first.
-                    direction.append([5,-1,age])
+                    direction.append([6,-1,age])
                 elif i == "an":
                     # Age, newest first.
-                    direction.append([5,1,age])
+                    direction.append([6,1,age])
                 elif i == "na":
                     # Name, Ascending.
                     direction.append([0,1,0])
@@ -516,10 +522,10 @@ def process_queue(queue, log, rrd_dir):
                     direction.append([0,-1,0])
                 elif i == "nl":
                     # Notes last.
-                    direction.append([4,1,0])
+                    direction.append([5,1,0])
                 elif i == "nf":
                     # Notes first.
-                    direction.append([4,-1,0])
+                    direction.append([5,-1,0])
     entries.sort(lambda x, y: sortfunc(x, y))
     # Yes, in theory you can add several sort options at the commandline with. But my mind is to small
     # at the moment to come up with a real good sorting function that considers all the sidesteps you
@@ -548,7 +554,7 @@ def process_queue(queue, log, rrd_dir):
                (name, mail) = changedby.split(":", 1)
                log.write("Changed-By: " + name + " <"+mail+">" + "\n")
             if sponsor:
-               log.write("Sponsored-By: " + "@".join(sponsor.split("@")[:2]) + "\n")
+               log.write("Sponsored-By: %s@debian.org\n" % sponsor)
             log.write("Distribution:")
             for dist in distribution:
                log.write(" " + dist)
@@ -566,7 +572,7 @@ def process_queue(queue, log, rrd_dir):
     source_count = len(per_source_items)
 
     if Cnf.has_key("Queue-Report::Options::New"):
-        direction.append([5,1,"ao"])
+        direction.append([6,1,"ao"])
         entries.sort(lambda x, y: sortfunc(x, y))
     # Output for a html file. First table header. then table_footer.
     # Any line between them is then a <tr> printed from subroutine table_row.