[dak/master] Add functions to colourize RC bug fixing packages differently
This commit adds some functions to query the BTS Soap interface to
determine if the package closes an RC bug or not. If it does close an
RC bug, it allows for differently colourizing the package line. It
adds a variable to indicate if a package fixes an RC bug or not, and
already allows for colourization of the HTML output; the new entry can
be used to colourize in other output formats as well.
Signed-off-by: Kumar Appaiah <a.kumar@alumni.iitm.ac.in>
---
dak/queue_report.py | 40 ++++++++++++++++++++++++++++++++++------
1 files changed, 34 insertions(+), 6 deletions(-)
diff --git a/dak/queue_report.py b/dak/queue_report.py
index e2d8578..9c34989 100755
--- a/dak/queue_report.py
+++ b/dak/queue_report.py
@@ -43,6 +43,7 @@ from daklib.queue import Upload
from daklib.dbconn import DBConn, has_new_comment, DBChange, DBSource, get_uid_from_fingerprint
from daklib.textutils import fix_maintainer
from daklib.dak_exceptions import *
+import debianbts
Cnf = None
direction = []
@@ -264,7 +265,30 @@ def table_footer(type):
print "</tbody></table>"
-def table_row(source, version, arch, last_mod, maint, distribution, closes, fingerprint, sponsor, changedby):
+def find_bug_severities(bugnrs):
+ """Take a list of bug numbers and
+ return a dictionary with bug number - severity pairs."""
+ statuses = None
+ try: statuses = debianbts.get_status(bugnrs)
+ except Exception:
+ return None
+ severities = {}
+ for bug_status in statuses:
+ severities[bug_status.bug_num] = bug_status.severity
+ return severities
+
+def rcbug_close_check(closes):
+ """Take a list of bug numbers and determine if at least one of them
+ is release critical."""
+ severity_list = find_bug_severities(closes)
+ if severity_list:
+ severities = severity_list.values()
+ return ('critical' in severities) or \
+ ('serious' in severities) or \
+ ('grave' in severities)
+ return False
+
+def table_row(source, version, arch, last_mod, maint, distribution, closes, fingerprint, sponsor, changedby, fixes_rcbug):
global row_number
@@ -274,6 +298,9 @@ def table_row(source, version, arch, last_mod, maint, distribution, closes, fing
if dist == "experimental":
trclass = "exp"
+ if fixes_rcbug:
+ trclass = "rcfix"
+
if not len(session.query(DBSource).filter_by(source = source).all()):
trclass += " binNEW"
session.commit()
@@ -443,7 +470,8 @@ def process_changes_files(changes_files, type, log):
note = " | [N]"
else:
note = ""
- entries.append([source, binary, version_list, arch_list, note, last_modified, maint, distribution, closes, fingerprint, sponsor, changedby, filename])
+ fixes_rcbug = rcbug_close_check(closes)
+ entries.append([source, binary, version_list, arch_list, note, last_modified, maint, distribution, closes, fingerprint, sponsor, changedby, filename, fixes_rcbug])
# direction entry consists of "Which field, which direction, time-consider" where
# time-consider says how we should treat last_modified. Thats all.
@@ -485,7 +513,7 @@ def process_changes_files(changes_files, type, log):
if Cnf.has_key("Queue-Report::Options::822"):
# print stuff out in 822 format
for entry in entries:
- (source, binary, version_list, arch_list, note, last_modified, maint, distribution, closes, fingerprint, sponsor, changedby, changes_file) = entry
+ (source, binary, version_list, arch_list, note, last_modified, maint, distribution, closes, fingerprint, sponsor, changedby, changes_file, fixes_rcbug) = entry
# We'll always have Source, Version, Arch, Mantainer, and Dist
# For the rest, check to see if we have them, then print them out
@@ -528,8 +556,8 @@ def process_changes_files(changes_files, type, log):
source_count = len(per_source_items)
table_header(type.upper(), source_count, total_count)
for entry in entries:
- (source, binary, version_list, arch_list, note, last_modified, maint, distribution, closes, fingerprint, sponsor, changedby, undef) = entry
- table_row(source, version_list, arch_list, time_pp(last_modified), maint, distribution, closes, fingerprint, sponsor, changedby)
+ (source, binary, version_list, arch_list, note, last_modified, maint, distribution, closes, fingerprint, sponsor, changedby, undef, fixes_rcbug) = entry
+ table_row(source, version_list, arch_list, time_pp(last_modified), maint, distribution, closes, fingerprint, sponsor, changedby, entries, fixes_rcbug)
table_footer(type.upper())
elif not Cnf.has_key("Queue-Report::Options::822"):
# The "normal" output without any formatting.
@@ -537,7 +565,7 @@ def process_changes_files(changes_files, type, log):
msg = ""
for entry in entries:
- (source, binary, version_list, arch_list, note, last_modified, undef, undef, undef, undef, undef, undef, undef) = entry
+ (source, binary, version_list, arch_list, note, last_modified, undef, undef, undef, undef, undef, undef, undef, fixes_rcbug) = entry
msg += format % (source, version_list, arch_list, note, time_pp(last_modified))
if msg:
--
1.5.6.5
Reply to: