]> git.decadent.org.uk Git - dak.git/blobdiff - dak/bts_categorize.py
Merge remote-tracking branch 'nthykier/auto-decruft'
[dak.git] / dak / bts_categorize.py
index 663690a1973d9e767c71147bba66dd9c44e50a1b..c8739af65618fa16ff2c569306f61a45e94dc975 100755 (executable)
@@ -5,6 +5,7 @@ bts -- manage bugs filed against ftp.debian.org
 
 @contact: Debian FTP Master <ftpmaster@debian.org>
 @copyright: 2009 Mike O'Connor <stew@vireo.org>
+@copyright: 2010 Alexander Reichle-Schmehl <tolimar@debian.org>
 @license: GNU General Public License version 2 or later
 """
 
@@ -33,7 +34,7 @@ log = logging.getLogger()
 
 import apt_pkg
 from daklib import utils
-from btsutils.debbugs import debbugs
+import debianbts as bts
 
 def usage():
     print """
@@ -78,23 +79,26 @@ class BugClassifier(object):
     rm_re = re.compile( "^RM" )
     dak_re = re.compile( "^\[dak\]" )
     arch_re = re.compile( "^\[Architectures\]" )
+    override_re = re.compile( "^override" )
 
     classifiers = { rm_re: 'remove',
                     dak_re: 'dak',
-                    arch_re: 'archs'}
-
-    def __init__( self ):
-        self.bts = debbugs()
-        self.bts.setUsers(['ftp.debian.org@packages.debian.org'])
-
+                    arch_re: 'archs',
+                    override_re: 'override'}
 
     def unclassified_bugs(self):
         """
         Returns a list of open bugs which have not yet been classified
         by one of our usertags.
         """
-        return [ bug for bug in self.bts.query("pkg:ftp.debian.org") \
-                     if bug.status=='pending' and not bug.usertags ]
+
+       tagged_bugs = bts.get_usertag('ftp.debian.org@packages.debian.org')
+       tagged_bugs_ftp = []
+       for tags in tagged_bugs.keys():
+               tagged_bugs_ftp += tagged_bugs[tags]
+
+        return [ bug for bug in bts.get_status( bts.get_bugs("package", "ftp.debian.org" ) ) \
+                     if bug.pending=='pending' and not bug.bug_num in tagged_bugs_ftp ]
 
 
     def classify_bug(self, bug):
@@ -106,15 +110,15 @@ class BugClassifier(object):
         retval = ""
 
         for classifier in self.classifiers.keys():
-            if classifier.match(bug.summary):
-                retval = "usertag %s %s\n" % (bug.bug,
+            if classifier.match(bug.subject):
+                retval = "usertag %s %s\n" % (bug.bug_num,
                                             self.classifiers[classifier])
                 break
 
         if retval:
             log.info(retval)
         else:
-            log.debug("Unmatched: [%s] %s" % (bug.bug, bug.summary))
+            log.debug("Unmatched: [%s] %s" % (bug.bug_num, bug.subject))
 
         return retval
 
@@ -158,8 +162,8 @@ def main():
         if not Cnf.has_key(opt):
             Cnf[opt] = ""
 
-    packages = apt_pkg.ParseCommandLine(Cnf, arguments, sys.argv)
-    Options = Cnf.SubTree('BtsCategorize::Options')
+    packages = apt_pkg.parse_commandline(Cnf, arguments, sys.argv)
+    Options = Cnf.subtree('BtsCategorize::Options')
 
     if Options["Help"]:
         usage()