[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#392969: ddpo: package overview messed up



Package: qa.debian.org
Severity: important
Tags: patch

Hi,

Since several weeks, my ddpo at
http://qa.debian.org/developer.php?login=Andreas+Fester&comaint=yes
is messed up: it shows all package lists twice and most of my
packages are missing.

It is caused by an improper lookup of maintainer entries in 
ddpo.py.

The first bug happens because two identical entries are written into 
the maintainers.txt file, leading to the duplicate display; the same is
true for four other people (Arnaud Kyheng <arnaud.kyheng@free.fr>,
Christian Aichinger <greek0@gmx.net>, Marc Dequènes (Duck) <duck@duckcorp.org>
and Oliver Elphick <oliver.elphick@lfix.co.uk>), and it only happens
when using the name in the URL (with the email address it does
not happen).

The reason for the missing packages is that an entry for
the maintainer is made in the h_maint hashtable with a different
key when adding co-maintainers; then, all packages which are found
afterwards are not added to this maintainer.

The attached patch fixes both bugs.

Thanks,

	Andreas

-- System Information:
Debian Release: testing/unstable
  APT prefers unstable
  APT policy: (500, 'unstable'), (500, 'stable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Shell:  /bin/sh linked to /bin/bash
Kernel: Linux 2.6.17.4
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8)
Index: data/ddpo/ddpo.py
===================================================================
--- data/ddpo/ddpo.py	(Revision 1431)
+++ data/ddpo/ddpo.py	(Arbeitskopie)
@@ -277,8 +277,8 @@
         else:
             (maint_name, maint_email) = ("Nobody", "noboby@nowhere.none")
             #print "Nobody for: " + line
-        if h_maint.has_key(maint_email) == 0:
-            h_maint = new_maintainer(h_maint, maint_name, maint_email)
+        if h_maint.has_key(maint_email.lower()) == 0:
+            h_maint = new_maintainer(h_maint, maint_name, maint_email.lower())
     maintainer.close()
     return h_maint
 
@@ -343,14 +343,14 @@
                 match_maint = reg_maint.search(line)
                 if match_maint:
                     if (branch == "unstable") or (branch == "experimental"):
-                        if h_maint.has_key(match_maint.group(2)):
-                            package = h_maint[match_maint.group(2)].add_package(package)
+                        maint_email = match_maint.group(2)
+                        if h_maint.has_key(maint_email.lower()):
+                            package = h_maint[maint_email.lower()].add_package(package)
                         else:
                             maint = search_maint(h_maint,match_maint.group(1))
                             if maint:
                                 maint.add_package(package)
-                        maint_email = match_maint.group(1)
-                        package.set_maint(match_maint.group(2))
+                        package.set_maint(maint_email)
                     continue
                 match_arch = reg_arch.search(line)
                 if match_arch:

Reply to: