forked from pool/python-bugzilla
* backport --outputformat feature from git OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-bugzilla?expand=0&rev=16
61 lines
2.3 KiB
Diff
61 lines
2.3 KiB
Diff
From 94338c8d931cae0d40a0343ec85018b36f7c8695 Mon Sep 17 00:00:00 2001
|
|
From: Will Woods <wwoods@redhat.com>
|
|
Date: Mon, 13 Jun 2011 13:15:06 -0400
|
|
Subject: [PATCH 06/17] cli speedup: request --outputformat fields when doing
|
|
query
|
|
|
|
Add the fields listed in --outputformat to the query's 'column_list'
|
|
argument. This should give us all the data we want to display right in
|
|
the query result, which should greatly speed up query --outputformat.
|
|
---
|
|
bin/bugzilla | 14 +++++++++++---
|
|
1 files changed, 11 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/bin/bugzilla b/bin/bugzilla
|
|
index e0810eb..833c5a2 100755
|
|
--- a/bin/bugzilla
|
|
+++ b/bin/bugzilla
|
|
@@ -41,6 +41,8 @@ def to_encoding(ustring):
|
|
return ustring
|
|
return u''
|
|
|
|
+format_field_re = re.compile("%{([a-z0-9_]+)(?::([^}]*))?}")
|
|
+
|
|
def setup_parser():
|
|
u = "%prog [global options] COMMAND [command-options]"
|
|
u += "\nCommands: %s" % ', '.join(cmdlist)
|
|
@@ -551,6 +553,14 @@ def main():
|
|
if opt.output == 'oneline':
|
|
q['column_list'] = [ 'bug_id', 'bug_status', 'assigned_to', 'component',
|
|
'target_milestone', 'short_desc', 'flags', 'keywords', 'blockedby' ]
|
|
+ if opt.outputformat:
|
|
+ aliases = dict(bz.field_aliases)
|
|
+ for fieldname, sub in format_field_re.findall(opt.outputformat):
|
|
+ fields.append(fieldname)
|
|
+ if fieldname in aliases:
|
|
+ fields.append(aliases.get(fieldname))
|
|
+ q['column_list'] = fields
|
|
+
|
|
log.debug("bz.query: %s", q)
|
|
if not q:
|
|
parser.error("'query' command requires additional arguments")
|
|
@@ -692,14 +702,12 @@ def main():
|
|
# If we're doing new/query/modify, output our results
|
|
if action in ['new','query']:
|
|
if opt.outputformat:
|
|
- format_field_re = re.compile("%{([a-z0-9_]+)(?::([^}]*))?}")
|
|
special_fields = {
|
|
'flag': lambda b,f: b.get_flag_status(f),
|
|
'whiteboard': lambda b,wb: b.getwhiteboard(wb),
|
|
}
|
|
def bug_field(matchobj):
|
|
- fieldname = matchobj.group(1)
|
|
- rest = matchobj.group(2)
|
|
+ (fieldname, rest) = matchobj.groups()
|
|
|
|
if special_fields.has_key(fieldname):
|
|
val = special_fields[fieldname](b, rest)
|
|
--
|
|
1.7.6
|
|
|