Fedora-Bugzilla
view release on metacpan or search on metacpan
lib/Fedora/Bugzilla/Bug.pm view on Meta::CPAN
lazy_build => 1,
provides => {
'empty' => 'has_attachments',
'elements' => 'attachments',
'count' => 'attachment_count',
'get' => 'get_attachment',
'first' => 'first_attachment',
'last' => 'last_attachment',
'grep' => 'grep_attachments',
'map' => 'map_attachments',
#...
},
);
sub _build__attachments {
my $self = shift @_;
# get all our elements...
my @elements = $self->twig->root->find_by_tag_name('attachment');
my $i = 1;
my @comments =
map {
Fedora::Bugzilla::Bug::Attachment
->new(
bug => $self,
_twig => $_,
number => $i++,
);
} @elements
;
return \@comments;
}
has _dependson => (
traits => [ 'MooseX::AttributeHelpers::Trait::Collection::Bag' ],
clear_master => 'xml',
# FIXME trigger on set needed
is => 'ro',
isa => 'Bag',
auto_deref => 1,
# right now, use of lazy_build or builder is broken with this metaclass
#lazy_build => 1,
default => sub { shift->_build__dependson },
clearer => '_clear__dependson',
predicate => '_has__dependson',
lazy => 1,
provides => {
'empty' => 'depends_on_anything',
'count' => 'num_deps',
'exists' => 'depends_on_bug',
'keys' => 'all_dependent_bugs',
},
);
has _blocked => (
traits => [ 'MooseX::AttributeHelpers::Trait::Collection::Bag' ],
clear_master => 'xml',
# FIXME trigger on set needed
is => 'ro',
isa => 'Bag',
auto_deref => 1,
# right now, use of lazy_build or builder is broken with this metaclass
#lazy_build => 1,
default => sub { shift->_build__blocked },
clearer => '_clear__blocked',
predicate => '_has__blocked',
lazy => 1,
provides => {
'empty' => 'blocks_anything',
'count' => 'num_blocked',
'exists' => 'blocks_bug',
'keys' => 'all_blocked_bugs',
},
);
sub _build__dependson
{ return { map { $_ => 1 } @{ shift->_from_atts('dependson') } } }
sub _build__blocked
{ return { map { $_ => 1 } @{ shift->_from_atts('blocked') } } }
has cc_list => (
traits => [ 'MooseX::AttributeHelpers::Trait::Collection::List' ],
clear_master => 'xml',
is => 'ro',
#isa => 'ArrayRef[EmailAddress]',
isa => 'ArrayRef[Email::Address]',
auto_deref => 1,
#coerce => 1,
lazy_build => 1,
provides => {
'count' => 'num_emails_on_cc',
'find' => 'is_email_on_cc',
'grep' => 'grep_cc_emails',
# ...
},
);
sub _build_cc_list {
[
map { my @a = Email::Address->parse($_); pop @a }
@{ shift->_from_atts('cc') }
]
}
########################################################################
# methods getting or setting various non-attribute bits
# bugzilla.updateFlags
sub set_flags {
my $self = shift @_;
my %flags = @_;
$self->bz->rpc->simple_request(
'bugzilla.updateFlags',
$self->id,
\%flags,
);
$self->clear_data;
return;
}
sub set_flag { shift->set_flags(@_) }
# Bug.add_comment
sub add_comment {
my ($self, $comment) = @_;
# FIXME: filter the return value...?
$self->bz->rpc->simple_request(
'Bug.add_comment',
{ id => $self->id, comment => $comment }
);
( run in 0.719 second using v1.01-cache-2.11-cpan-99c4e6809bf )