From 38e12dd8a2c0b35391f20b60e9e3e8643c08f404 Mon Sep 17 00:00:00 2001 From: Matt Tyson Date: Fri, 15 Jan 2016 14:44:09 +0000 Subject: 'Bug 1159057: change to create flags as part of bug creation process. r=gerv --- Bugzilla/API/1_0/Resource/Bug.pm | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) (limited to 'Bugzilla/API/1_0/Resource/Bug.pm') diff --git a/Bugzilla/API/1_0/Resource/Bug.pm b/Bugzilla/API/1_0/Resource/Bug.pm index c6ae6a19a..a8565b7a0 100644 --- a/Bugzilla/API/1_0/Resource/Bug.pm +++ b/Bugzilla/API/1_0/Resource/Bug.pm @@ -820,7 +820,7 @@ sub update { foreach my $bug (@bugs) { $bug->set_all(\%values); if ($flags) { - my ($old_flags, $new_flags) = extract_flags($flags, $bug); + my ($old_flags, $new_flags) = extract_flags($flags, $bug->flag_types, $bug->flags); $bug->set_flags($old_flags, $new_flags); } } @@ -885,19 +885,29 @@ sub create { my $flags = delete $params->{flags}; + if ($flags) { + my $product = Bugzilla::Product->check($params->{product}); + my $component = Bugzilla::Component->check({ + product => $product, + name => $params->{component} + }); + my $flag_types = Bugzilla::FlagType::match({ + product_id => $product->id, + component_id => $component->id, + is_active => 1, + }); + + my(undef, $new_flags) = extract_flags($flags, $flag_types); + + $params->{flags} = $new_flags; + } + # We start a nested transaction in case flag setting fails # we want the bug creation to roll back as well. $dbh->bz_start_transaction(); my $bug = Bugzilla::Bug->create($params); - # Set bug flags - if ($flags) { - my ($flags, $new_flags) = extract_flags($flags, $bug); - $bug->set_flags($flags, $new_flags); - $bug->update($bug->creation_ts); - } - $dbh->bz_commit_transaction(); $bug->send_changes(); @@ -989,7 +999,7 @@ sub add_attachment { }); if ($flags) { - my ($old_flags, $new_flags) = extract_flags($flags, $bug, $attachment); + my ($old_flags, $new_flags) = extract_flags($flags, $attachment->flag_types, $attachment->flags); $attachment->set_flags($old_flags, $new_flags); } @@ -1066,7 +1076,7 @@ sub update_attachment { # Update the values foreach my $attachment (@attachments) { my ($update_flags, $new_flags) = $flags - ? extract_flags($flags, $attachment->bug, $attachment) + ? extract_flags($flags, $attachment->flag_types, $attachment->flags) : ([], []); if ($attachment->validate_can_edit) { $attachment->set_all($params); -- cgit v1.2.3-24-g4f1b