Calls to set() and update() set attributes as well as "properties".
Fixes t/Keywords.t number 11.
This commit is contained in:
parent
14b79a671b
commit
57fe0721ab
2 changed files with 21 additions and 5 deletions
|
|
@ -126,7 +126,8 @@ sub addRevision {
|
|||
$session->db->commit;
|
||||
|
||||
# current values, and the user set properties
|
||||
my %mergedProperties = (%{$self->get}, %{$properties}, (status => 'pending', revisedBy => $session->user->userId, tagId => $workingTag->getId), );
|
||||
# my %mergedProperties = (%{$self->get}, %{$properties}, (status => 'pending', revisedBy => $session->user->userId, tagId => $workingTag->getId), ); # XXX results in the setting of read-only properties and nothing else seems to be done with this other than just set them again
|
||||
my %mergedProperties = ( %{$properties}, status => 'pending', revisedBy => $session->user->userId, tagId => $workingTag->getId, );
|
||||
|
||||
#Instantiate new revision and fill with real data
|
||||
my $newVersion = WebGUI::Asset->newById($session, $self->getId, $now);
|
||||
|
|
|
|||
|
|
@ -85,13 +85,23 @@ is not an attribute of the object, then it is silently ignored.
|
|||
=cut
|
||||
|
||||
sub set {
|
||||
|
||||
my $self = shift;
|
||||
my $properties = @_ % 2 ? shift : { @_ };
|
||||
my @orderedProperties = $self->getProperties;
|
||||
KEY: for my $property ( @orderedProperties ) {
|
||||
next KEY unless exists $properties->{$property};
|
||||
$self->$property($properties->{$property});
|
||||
my %seen;
|
||||
|
||||
my @settable = grep { ! $seen{$_}++ } (
|
||||
$self->getProperties, # $self->meta->get_all_property_list, # same as $self->getProperties
|
||||
$self->getReadableAttributes,
|
||||
);
|
||||
|
||||
for my $attribute ( @settable ) {
|
||||
next unless exists $properties->{$attribute};
|
||||
$self->$attribute( $properties->{$attribute} );
|
||||
}
|
||||
|
||||
# ignore unknown properties
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
@ -181,5 +191,10 @@ sub getProperties {
|
|||
return $self->meta->get_all_property_list;
|
||||
}
|
||||
|
||||
sub getReadableAttributes {
|
||||
my $self = shift;
|
||||
return map $_->name, grep $_->has_accessor || $_->has_writer, $self->meta->get_all_attributes;
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue