From 07a44afa485f793a17092f776dcbbbc895e0a5cc Mon Sep 17 00:00:00 2001 From: Don Armstrong Date: Sun, 18 Mar 2007 00:01:22 -0700 Subject: [PATCH] - Add searching by owner (closes: #345407) - Accept colon after package in control mails (closes: #319720) - Make e-mail addresses case insensitive for searching (closes: #89569)' - Fix missing categories in pkgreport.cgi output --- Debbugs/Bugs.pm | 7 +++++-- Debbugs/User.pm | 9 +++++++-- cgi/pkgreport.cgi | 25 ++++++++++++++++++------- debian/changelog | 4 ++++ scripts/gen-indices.in | 5 +++-- scripts/service.in | 2 +- 6 files changed, 38 insertions(+), 14 deletions(-) diff --git a/Debbugs/Bugs.pm b/Debbugs/Bugs.pm index 2246dec..e63f224 100644 --- a/Debbugs/Bugs.pm +++ b/Debbugs/Bugs.pm @@ -239,6 +239,9 @@ sub get_bugs_by_idx{ archive => {type => BOOLEAN, default => 0, }, + owner => {type => SCALAR|ARRAYREF, + optional => 1, + }, src => {type => SCALAR|ARRAYREF, optional => 1, }, @@ -382,8 +385,8 @@ sub get_bugs_flatfile{ } @src_packages; } if (exists $param{submitter}) { - my @p_addrs = map {$_->address} - map {lc(getparsedaddrs($_))} + my @p_addrs = map {lc($_->address)} + map {getparsedaddrs($_)} __make_list($param{submitter}); my @f_addrs = map {$_->address} getparsedaddrs($submitter||''); diff --git a/Debbugs/User.pm b/Debbugs/User.pm index 7888f77..0a74713 100644 --- a/Debbugs/User.pm +++ b/Debbugs/User.pm @@ -45,6 +45,7 @@ use vars qw($VERSION $DEBUG %EXPORT_TAGS @EXPORT_OK @EXPORT); use base qw(Exporter); use Debbugs::Config qw(:globals); +use List::Util qw(min); BEGIN { ($VERSION) = q$Revision: 1.4 $ =~ /^Revision:\s+([^\s+])/; @@ -175,8 +176,12 @@ sub get_user { my %c = ("nam" => $stanza{"Cat${i}"}); $c{"def"} = $stanza{"Cat${i}Default"} if defined $stanza{"Cat${i}Default"}; - $c{"ord"} = [ split /,/, $stanza{"Cat${i}Order"} ] - if defined $stanza{"Cat${i}Order"}; + if (defined $stanza{"Cat${i}Order"}) { + my @temp = split /\s*,\s*/, $stanza{"Cat${i}Order"}; + my $min = min(@temp); + @temp = map {$_-$min} @temp; + $c{ord} = [@temp]; + } my @pri; my @ttl; for my $l (split /\n/, $stanza{"Cat${i}Options"}) { if ($l =~ m/^\s*(\S+)\s+-\s+(.*\S)\s*$/) { diff --git a/cgi/pkgreport.cgi b/cgi/pkgreport.cgi index e32e45c..00c9ee5 100755 --- a/cgi/pkgreport.cgi +++ b/cgi/pkgreport.cgi @@ -111,7 +111,9 @@ my %cats = ( "normal" => [ qw(status severity classification) ], ); -my ($pkg, $src, $maint, $maintenc, $submitter, $severity, $status, $tag, $usertag); +my ($pkg, $src, $maint, $maintenc, $submitter, $severity, $status, $tag, $usertag, + $owner, + ); my %which = ( 'pkg' => \$pkg, @@ -122,6 +124,7 @@ my %which = ( 'severity' => \$severity, 'tag' => \$tag, 'usertag' => \$usertag, + 'owner' => \$owner, ); my @allowedEmpty = ( 'maint' ); @@ -317,6 +320,14 @@ if (defined $pkg) { return grep(exists $tags{$_}, @tags); })}; } +elsif (defined $owner) { + $title = "bugs owned by $owner"; + $title .= " in $dist" if defined $dist; + my @owners = split /,/, $tag; + my %bugs = (); + @bugs = get_bugs(owner=>\@owners); + +} $title = htmlsanit($title); my @names; my @prior; my @title; my @order; @@ -333,7 +344,7 @@ print "Content-Type: text/html; charset=utf-8\n\n"; print "\n"; print "\n" . - "$gProject$Archived $gBug report logs: $title\n" . + "$title -- $gProject$Archived $gBug report logs\n" . qq() . "\n" . '' . @@ -994,9 +1005,9 @@ sub determine_ordering { $h->{"nam"} = $param{"nam$i"} if (defined $param{"nam$i"}); - $h->{"ord"} = [ split /,/, $param{"ord$i"} ] + $h->{"ord"} = [ split /\s*,\s*/, $param{"ord$i"} ] if (defined $param{"ord$i"}); - $h->{"ttl"} = [ split /,/, $param{"ttl$i"} ] + $h->{"ttl"} = [ split /\s*,\s*/, $param{"ttl$i"} ] if (defined $param{"ttl$i"}); push @c, $h; @@ -1032,7 +1043,7 @@ sub determine_ordering { $i = 0; for my $c (@cats) { - $i++; + $i++; push @prior, $c->{"pri"}; push @names, ($c->{"nam"} || "Bug attribute #" . $i); if (defined $c->{"ord"}) { @@ -1041,8 +1052,8 @@ sub determine_ordering { push @order, [ 0..$#{$prior[-1]} ]; } my @t = @{ $c->{"ttl"} } if defined $c->{ttl}; - if (($#t+1) < $#{$prior[-1]}) { - push @t, map { toenglish($prior[-1]->[$_]) } ($#t+1)..($#{$prior[-1]}); + if ($#t < $#{$prior[-1]}) { + push @t, map { toenglish($prior[-1][$_]) } @t..($#{$prior[-1]}); } push @t, $c->{"def"} || ""; push @title, [@t]; diff --git a/debian/changelog b/debian/changelog index e581417..2debb87 100644 --- a/debian/changelog +++ b/debian/changelog @@ -159,6 +159,10 @@ debbugs (2.4.2) UNRELEASED; urgency=low - Support usertagging cloned bugs (closes: #375697) - List previous/new title when retitling, and show date of control actions (closes: #127354) + - Add searching by owner (closes: #345407) + - Accept colon after package in control mails (closes: #319720) + - Make e-mail addresses case insensitive for searching + (closes: #89569) -- Colin Watson Fri, 20 Jun 2003 18:57:25 +0100 diff --git a/scripts/gen-indices.in b/scripts/gen-indices.in index 14d7b1c..730880a 100755 --- a/scripts/gen-indices.in +++ b/scripts/gen-indices.in @@ -182,9 +182,10 @@ while (my $dir = shift @dirs) { addbugtoindex("package", $bug, split /[\s,]+/, $fdata->{"package"}); addbugtoindex("tag", $bug, split /[\s,]+/, $fdata->{"keywords"}); addbugtoindex('submitter-email', $bug, - map {$_->address} getparsedaddrs($fdata->{originator})); + map {lc($_->address)} getparsedaddrs($fdata->{originator})); addbugtoindex("severity", $bug, $fdata->{"severity"}); - addbugtoindex("owner", $bug, $fdata->{"owner"}); + addbugtoindex("owner", $bug, + map {lc($_->address)} getparsedaddrs($fdata->{"owner"})); } } diff --git a/scripts/service.in b/scripts/service.in index 12e3bdf..e5074d3 100755 --- a/scripts/service.in +++ b/scripts/service.in @@ -1072,7 +1072,7 @@ END } } } - } elsif (m/^package\s+(\S.*\S)?\s*$/i) { + } elsif (m/^package\:?\s+(\S.*\S)?\s*$/i) { $ok++; my @pkgs = split /\s+/, $1; if (scalar(@pkgs) > 0) { -- 2.39.2