From 566655693317f329ec9d412a5c7bc058276858ba Mon Sep 17 00:00:00 2001 From: Max Kanat-Alexander Date: Sun, 16 May 2010 15:20:02 -0700 Subject: Bug 556154: process_bug.cgi: move the stuff in the loop after $b->set_all into Bugzilla::Bug::set_all r=dkl, a=mkanat --- Bugzilla/Bug.pm | 20 ++++++++++++++++++++ process_bug.cgi | 35 ++++++++++++++++------------------- 2 files changed, 36 insertions(+), 19 deletions(-) diff --git a/Bugzilla/Bug.pm b/Bugzilla/Bug.pm index d926934e6..840ff91d6 100644 --- a/Bugzilla/Bug.pm +++ b/Bugzilla/Bug.pm @@ -1869,6 +1869,26 @@ sub set_all { } } $self->SUPER::set_all(\%normal_set_all); + + $self->reset_assigned_to if $params->{'reset_assigned_to'}; + $self->reset_qa_contact if $params->{'reset_qa_contact'}; + + foreach my $url (@{ $params->{see_also}->{add} || [] }) { + $self->add_see_also($url); + } + foreach my $url (@{ $params->{see_also}->{remove} || [] }) { + $self->remove_see_also($url); + } + + # And set custom fields. + my @custom_fields = Bugzilla->active_custom_fields; + foreach my $field (@custom_fields) { + my $fname = $field->name; + if (exists $params->{$fname}) { + $self->set_custom_field($field, $params->{$fname}); + } + } + } sub set_alias { $_[0]->set('alias', $_[1]); } diff --git a/process_bug.cgi b/process_bug.cgi index 956068370..ef8f41070 100755 --- a/process_bug.cgi +++ b/process_bug.cgi @@ -323,7 +323,7 @@ my @set_fields = qw(op_sys rep_platform priority bug_severity component target_milestone version bug_file_loc status_whiteboard short_desc deadline remaining_time estimated_time - work_time); + work_time set_default_assignee set_default_qa_contact); push(@set_fields, 'assigned_to') if !$cgi->param('set_default_assignee'); push(@set_fields, 'qa_contact') if !$cgi->param('set_default_qa_contact'); my %field_translation = ( @@ -331,6 +331,8 @@ my %field_translation = ( rep_platform => 'platform', short_desc => 'summary', bug_file_loc => 'url', + set_default_assignee => 'reset_assigned_to', + set_default_qa_contact => 'reset_qa_contact', ); my %set_all_fields; @@ -347,29 +349,24 @@ if (should_set('comment')) { is_private => scalar $cgi->param('commentprivacy'), }; } +if (should_set('see_also')) { + $set_all_fields{'see_also'}->{add} = + [split(/[\s,]+/, $cgi->param('see_also'))]; +} +if (should_set('remove_see_also')) { + $set_all_fields{'see_also'}->{remove} = [$cgi->param('remove_see_also')]; +} my @custom_fields = Bugzilla->active_custom_fields; +foreach my $field (@custom_fields) { + my $fname = $field->name; + if (should_set($fname, 1)) { + $set_all_fields{$fname} = [$cgi->param($fname)]; + } +} foreach my $b (@bug_objects) { $b->set_all(\%set_all_fields); - $b->reset_assigned_to if $cgi->param('set_default_assignee'); - $b->reset_qa_contact if $cgi->param('set_default_qa_contact'); - - if (should_set('see_also')) { - my @see_also = split(',', $cgi->param('see_also')); - $b->add_see_also($_) foreach @see_also; - } - if (should_set('remove_see_also')) { - $b->remove_see_also($_) foreach $cgi->param('remove_see_also') - } - - # And set custom fields. - foreach my $field (@custom_fields) { - my $fname = $field->name; - if (should_set($fname, 1)) { - $b->set_custom_field($field, [$cgi->param($fname)]); - } - } } # Certain changes can only happen on individual bugs, never on mass-changes. -- cgit v1.2.3-24-g4f1b