From d67e20bc205e305ed2b086c8a8d144ebab4bbe83 Mon Sep 17 00:00:00 2001 From: "lpsolit%gmail.com" <> Date: Tue, 29 May 2007 22:24:41 +0000 Subject: Bug 344968: importxml.pl should support custom statuses - Patch by Frédéric Buclin r=ghendricks a=LpSolit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- importxml.pl | 41 +++++++++++++++++++++++++++++++++-------- 1 file changed, 33 insertions(+), 8 deletions(-) (limited to 'importxml.pl') diff --git a/importxml.pl b/importxml.pl index 6e6f4a619..9ef8150f6 100755 --- a/importxml.pl +++ b/importxml.pl @@ -23,6 +23,7 @@ # Vance Baarda # Guzman Braso # Erik Purins +# Frédéric Buclin # This script reads in xml bug data from standard input and inserts # a new bug into bugzilla. Everything before the beginning can_change_to()}; + @bug_statuses = grep { $_->name ne 'UNCONFIRMED' } @bug_statuses; + + my $initial_status; + if (scalar(@bug_statuses)) { + $initial_status = $bug_statuses[0]->name; + } + else { + @bug_statuses = @{Bugzilla::Status->get_all()}; + # Exclude UNCO and inactive bug statuses. + @bug_statuses = grep { $_->is_active && $_->name ne 'UNCONFIRMED'} @bug_statuses; + my @open_statuses = grep { $_->is_open } @bug_statuses; + if (scalar(@open_statuses)) { + $initial_status = $open_statuses[0]->name; + } + else { + # There is NO other open bug statuses outside UNCO??? + Error("no open bug statuses available."); + } + } + if($has_status){ if($valid_status){ if($is_open){ @@ -927,7 +952,7 @@ sub process_bug { } if($changed_owner){ if($everconfirmed){ - $status = "NEW"; + $status = $initial_status; } else{ $status = "UNCONFIRMED"; @@ -941,9 +966,9 @@ sub process_bug { if($everconfirmed){ if($status eq "UNCONFIRMED"){ $err .= "Bug Status was UNCONFIRMED but everconfirmed was true\n"; - $err .= " Setting status to NEW\n"; + $err .= " Setting status to $initial_status\n"; $err .= "Resetting votes to 0\n" if ( $bug_fields{'votes'} ); - $status = "NEW"; + $status = $initial_status; } } else{ # $everconfirmed is false @@ -958,8 +983,8 @@ sub process_bug { if(!$has_res){ $err .= "Missing Resolution. Setting status to "; if($everconfirmed){ - $status = "NEW"; - $err .= "NEW\n"; + $status = $initial_status; + $err .= "$initial_status\n"; } else{ $status = "UNCONFIRMED"; @@ -975,7 +1000,7 @@ sub process_bug { } else{ # $valid_status is false if($everconfirmed){ - $status = "NEW"; + $status = $initial_status; } else{ $status = "UNCONFIRMED"; @@ -989,7 +1014,7 @@ sub process_bug { } else{ #has_status is false if($everconfirmed){ - $status = "NEW"; + $status = $initial_status; } else{ $status = "UNCONFIRMED"; -- cgit v1.2.3-24-g4f1b