#!/usr/bin/python
-# bts -- manage bugs filed against ftp.debian.org
-#
-# Copyright 2009 Mike O'Connor <stew@vireo.org>
-#
+"""
+bts -- manage bugs filed against ftp.debian.org
+
+@contact: Debian FTP Master <ftpmaster@debian.org>
+@copyright: 2009 Mike O'Connor <stew@vireo.org>
+@license: GNU General Public License version 2 or later
+"""
+
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation; either version 2, or (at your option) any
################################################################################
################################################################################
+import sys
+import re
+import logging
+log = logging.getLogger()
+
+import apt_pkg
+from daklib import utils
+from btsutils.debbugs import debbugs
+
def usage():
print """
SYNOPSIS
- dak bts-categorize [options] command
-
-COMMANDS
- list-categories
- List the currently defind categorizations for bugs
-
- categorize
- Find the bugs filed against ftp.debian.org which have no usertag
- and see if we can categorize the bug by adding a usertag by matching
- the subject against a list of regexps.
+ dak bts-categorize [options]
OPTIONS
-s
('q', 'quiet', 'BtsCategorize::Options::Quiet'),
('h', 'help', 'BtsCategorize::Options::Help')]
-import sys
-import re
-import logging
-log = logging.getLogger()
-
-import apt_pkg
-from daklib import utils
-from btsutils.debbugs import debbugs
-
class BugClassifier(object):
"""
classify bugs using usertags based on the bug subject lines
return retval
def email_text(self):
- controls = 'user ftp.debian.org@packages.debian.org\n'
+ controls = ""
bc = BugClassifier()
- for bug in bc.unclassified_bugs():
- controls += bc.classify_bug(bug)
+ try:
+ for bug in bc.unclassified_bugs():
+ controls += bc.classify_bug(bug)
- return controls
+ return controls
+ except:
+ log.error("couldn't retrieve bugs from soap interface: %s" % sys.exc_info()[0])
+ return None
+def send_email(commands, simulate=False):
+ global Cnf
+
+ Subst = {'__COMMANDS__' : commands,
+ "__DAK_ADDRESS__": Cnf["Dinstall::MyAdminAddress"]}
-import smtplib
-import email.Message
+ bts_mail_message = utils.TemplateSubst(
+ Subst,Cnf["Dir::Templates"]+"/bts-categorize")
-def send_email(body):
- to = 'control@bugs.debian.org'
- sender = 'ak@ries.debian.org'
- message = email.Message.Message()
- message["To"] = to
- message["From"] = sender
- message.set_payload(body)
- mailServer = smtplib.SMTP('localhost')
- mailServer.sendmail(sender, to, message.as_string())
- mailServer.quit()
+ if simulate:
+ print bts_mail_message
+ else:
+ utils.send_mail( bts_mail_message )
def main():
"""
body = BugClassifier().email_text()
- if Options["Simulate"]:
- print body
+ if body:
+ send_email(body, Options["Simulate"])
else:
- send_email(body)
+ log.info( "nothing to do" )
if __name__ == '__main__':