Commit eeffc2b5 authored by Frédéric Buclin's avatar Frédéric Buclin

Bug 271758: noresolveonopenblockers = on doesn't allow removing open blockers…

Bug 271758: noresolveonopenblockers = on doesn't allow removing open blockers and resolve the bug in a single change r/a=mkanat
parent 755783f4
......@@ -1757,13 +1757,14 @@ sub _check_resolution {
# Check noresolveonopenblockers.
if (Bugzilla->params->{"noresolveonopenblockers"}
&& $resolution eq 'FIXED'
&& (!$self->resolution || $resolution ne $self->resolution))
&& (!$self->resolution || $resolution ne $self->resolution)
&& scalar @{$self->dependson})
{
my @dependencies = CountOpenDependencies($self->id);
if (@dependencies) {
my $dep_bugs = Bugzilla::Bug->new_from_list($self->dependson);
my $count_open = grep { $_->isopened } @$dep_bugs;
if ($count_open) {
ThrowUserError("still_unresolved_bugs",
{ dependencies => \@dependencies,
dependency_count => scalar @dependencies });
{ bug_id => $self->id, dep_count => $count_open });
}
}
......@@ -3775,32 +3776,6 @@ sub map_fields {
return \%field_values;
}
# CountOpenDependencies counts the number of open dependent bugs for a
# list of bugs and returns a list of bug_id's and their dependency count
# It takes one parameter:
# - A list of bug numbers whose dependencies are to be checked
sub CountOpenDependencies {
my (@bug_list) = @_;
my @dependencies;
my $dbh = Bugzilla->dbh;
my $sth = $dbh->prepare(
"SELECT blocked, COUNT(bug_status) " .
"FROM bugs, dependencies " .
"WHERE " . $dbh->sql_in('blocked', \@bug_list) .
"AND bug_id = dependson " .
"AND bug_status IN (" . join(', ', map {$dbh->quote($_)} BUG_STATE_OPEN) . ") " .
$dbh->sql_group_by('blocked'));
$sth->execute();
while (my ($bug_id, $dependencies) = $sth->fetchrow_array()) {
push(@dependencies, { bug_id => $bug_id,
dependencies => $dependencies });
}
return @dependencies;
}
################################################################################
# check_can_change_field() defines what users are allowed to change. You
# can add code here for site-specific policy changes, according to the
......
......@@ -1483,32 +1483,17 @@
already exists.
[% ELSIF error == "still_unresolved_bugs" %]
[% IF dependency_count == 1 %]
[% terms.Bug %]# <a href="show_bug.cgi?id=[% dependencies.0.bug_id FILTER none %]">[% dependencies.0.bug_id FILTER none %]</a>
still has [% dependencies.0.dependencies FILTER html %] unresolved
[% IF dependencies.0.dependencies == 1 %]
dependency
[% ELSE %]
dependencies
[% END %]. Show
<a href="showdependencytree.cgi?id=[% dependencies.0.bug_id FILTER none %]&amp;hide_resolved=1">Dependency
Tree</a>.
[% title = "Unresolved Dependencies" %]
[% terms.Bug %] [%+ bug_id FILTER bug_link(bug_id) FILTER none %]
has [% dep_count FILTER none %] unresolved
[% IF dep_count == 1 %]
dependency
[% ELSE %]
There are [% dependency_count FILTER none %] open [% terms.bugs %] which
have unresolved dependencies.
<br>
[% FOREACH bug = dependencies %]
[% terms.Bug %]# <a href="show_bug.cgi?id=[% bug.bug_id FILTER none %]">[% bug.bug_id FILTER none %]</a>
has [% bug.dependencies FILTER html %] open
[% IF bug.dependencies == 1 %]
dependency.
[% ELSE %]
dependencies.
[% END %]
(<a href="showdependencytree.cgi?id=[% bug.bug_id FILTER none %]&amp;hide_resolved=1">Dependency
Tree</a>)<br>
[% END %]
[% END %]
dependencies
[% END %].
They must either be resolved or removed from the
"[% field_descs.dependson FILTER html %]" field before you can resolve
this [% terms.bug %] as [% display_value("resolution", "FIXED") FILTER html %].
[% ELSIF error == "sudo_invalid_cookie" %]
[% title = "Invalid Sudo Cookie" %]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment