return $status;
}
+has log => (is => 'bare', isa => 'Debbugs::Log',
+ lazy => 1,
+ builder => '_build_log',
+ handles => {_read_record => 'read_record',
+ log_records => 'read_all_records',
+ },
+ );
+
+sub _build_log {
+ my $self = shift;
+ return Debbugs::Log->new(bug_num => $self->id,
+ inner_file => 1,
+ );
+}
+
+has spam => (is => 'bare', isa => 'Debbugs::Log::Spam',
+ lazy => 1,
+ builder => '_build_spam',
+ handles => ['is_spam'],
+ );
+sub _build_spam {
+ my $self = shift;
+ return Debbugs::Log::Spam->new(bug_num => $self->id);
+}
+
has 'package_collection' => (is => 'ro',
isa => 'Debbugs::Collection::Package',
builder => '_build_package_collection',
return $_[0]->location eq 'archived'?1:0;
}
-has tags => (is => 'ro', isa => 'Object',
+has tags => (is => 'ro',
+ isa => 'Debbugs::Bug::Tag',
clearer => '_clear_tags',
builder => '_build_tags',
lazy => 1,
);
sub _build_tags {
- return Debbugs::Bug::Tag->new($_[0]->status->{keywords});
+ my $self = shift;
+ return Debbugs::Bug::Tag->new(keywords => $self->status->{keywords},
+ bug => $self,
+ users => $self->bug_collection->users,
+ );
}
=item buggy
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}//[]});
}
}
for my $pkg (@packages) {
- push @return,
- [$pkg,@unqualified_versions];
+ if (@unqualified_versions) {
+ push @return,
+ [$pkg,@unqualified_versions];
+ } else {
+ push @return,$pkg;
+ }
}
return @return;
}