]> git.decadent.org.uk Git - dak.git/commitdiff
Merge remote-tracking branch 'drkranz/uid' into merge
authorJoerg Jaspert <joerg@debian.org>
Wed, 29 Aug 2012 21:12:03 +0000 (23:12 +0200)
committerJoerg Jaspert <joerg@debian.org>
Wed, 29 Aug 2012 21:12:03 +0000 (23:12 +0200)
* drkranz/uid:
  queue-report: fix display of sponsor email
  Implement get_login_from_ldap function

Signed-off-by: Joerg Jaspert <joerg@debian.org>
dak/queue_report.py
daklib/utils.py

index 0ab0b732d48324c6fef38b3f834a1aa8bdf72a06..a8f741026155e955a56b9876d1eafa9a3652fd26 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_login_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>"
@@ -467,10 +464,14 @@ 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:
+                    sponsor_login = get_login_from_ldap(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)
@@ -548,7 +549,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)
index be3c65161e8fee8c203f6954715ec50fa9445d3f..f702db3fd74d44a93caa314310458fe1a4b16387 100644 (file)
@@ -40,6 +40,7 @@ import time
 import re
 import email as modemail
 import subprocess
+import ldap
 
 from dbconn import DBConn, get_architecture, get_component, get_suite, \
                    get_override_type, Keyring, session_wrapper, \
@@ -1410,6 +1411,19 @@ def gpg_get_key_addresses(fingerprint):
 
 ################################################################################
 
+def get_login_from_ldap(fingerprint):
+    """retrieve login from LDAP linked to a given fingerprint"""
+
+    LDAPDn = Cnf['Import-LDAP-Fingerprints::LDAPDn']
+    LDAPServer = Cnf['Import-LDAP-Fingerprints::LDAPServer']
+    l = ldap.open(LDAPServer)
+    l.simple_bind_s('','')
+    Attrs = l.search_s(LDAPDn, ldap.SCOPE_ONELEVEL,
+                       '(keyfingerprint=%s)' % fingerprint, ['uid'])
+    return Attrs[0][1]['uid'][0]
+
+################################################################################
+
 def clean_symlink (src, dest, root):
     """
     Relativize an absolute symlink from 'src' -> 'dest' relative to 'root'.