X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Debbugs%2FBug.pm;h=bff73c7aaaabfb1affd033836655b3023b75439d;hb=63ff49bfdec6dec00dc7e9304da1c993a367e595;hp=4a6bf6614e27ca557e65fa1d439c6b447defeca6;hpb=29ffae11e29d83a96d53c5825e876914e4ac7aa7;p=debbugs.git diff --git a/Debbugs/Bug.pm b/Debbugs/Bug.pm index 4a6bf66..bff73c7 100644 --- a/Debbugs/Bug.pm +++ b/Debbugs/Bug.pm @@ -107,10 +107,7 @@ has correspondent_collection => ); sub _build_correspondent_collection { my $self = shift; - if ($self->has_schema) { - return Debbugs::Collection::Correspondent->new(schema => $self->schema); - } - return Debbugs::Collection::Correspondent->new(); + return Debbugs::Collection::Correspondent->new($self->schema_argument); } sub reset { @@ -372,11 +369,23 @@ sub is_merged { return $self->mergedwith->count > 0; } +has _mergedwith_array => + (is => 'ro', + isa => 'ArrayRef[Int]', + builder => '_build_mergedwith_array', + lazy => 1, + ); + +sub _build_mergedwith_array { + my $self = shift; + return [sort {$a <=> $b} + $self->_split_if_defined('mergedwith')]; +} + sub _build_mergedwith { my $self = shift; return $self->bug_collection-> - limit(sort {$a <=> $b} - $self->_split_if_defined('mergedwith')); + limit(@{$self->_mergedwith_array//[]}); } sub _build_pending { return $_[0]->status->{pending} // ''; @@ -581,7 +590,7 @@ sub filter { return 1 if $self->matches($param{exclude}); } if (exists $param{repeat_merged} and not $param{repeat_merged}) { - my @merged = sort {$a<=>$b} $self->bug, map {$_->bug} $self->mergedwith->members; + my @merged = sort {$a<=>$b} $self->bug, @{$self->_mergedwith_array // []}; return 1 if first {sub {defined $_}} @{$param{seen_merged}}{@merged}; @{$param{seen_merged}}{@merged} = (1) x @merged; @@ -654,6 +663,10 @@ sub related_packages_and_versions { if (length($self->status->{package}//'')) { @packages = split /,/,$self->status->{package}//''; } + if (length($self->status->{affects}//'')) { + push @packages, + split /,/,$self->status->{affects}//''; + } my @versions = (@{$self->status->{found_versions}//[]}, @{$self->status->{fixed_versions}//[]}); @@ -667,8 +680,12 @@ sub related_packages_and_versions { } } for my $pkg (@packages) { - push @return, - [$pkg,@unqualified_versions]; + if (@unqualified_versions) { + push @return, + [$pkg,@unqualified_versions]; + } else { + push @return,$pkg; + } } return @return; }