Changeset 1306 for trunk


Ignore:
Timestamp:
04/01/15 18:41:34 (9 years ago)
Author:
nanardon
Message:

Add addAttributeValue and delAttributeValue functions

This functions (and _ prefixed variantes) add or delete values to multiples
valued attributes and set it.

Location:
trunk/LATMOS-Accounts
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Objects.pm

    r1297 r1306  
    407407    } 
    408408    return scalar(keys %updated); 
     409} 
     410 
     411=head2 addAttributeValue($attribute, $value) 
     412 
     413Add a value to a multivalue attributes 
     414 
     415=cut 
     416 
     417sub _addAttributeValue { 
     418    my ($self, $attribute, @values) = @_; 
     419 
     420    my @oldvalues = $self->_get_attributes($attribute); 
     421    $self->_set_c_fields($attribute => [ @oldvalues, @values ]); 
     422} 
     423 
     424sub addAttributeValue { 
     425    my ($self, $attribute, @values) = @_; 
     426 
     427    my @oldvalues = $self->_get_attributes($attribute); 
     428    $self->set_c_fields($attribute => [ @oldvalues, @values ]); 
     429} 
     430 
     431=head2 delAttributeValue($attribute, $value) 
     432 
     433Remove a value to a multivalue attributes 
     434 
     435=cut 
     436 
     437sub _delAttributeValue { 
     438    my ($self, $attribute, @values) = @_; 
     439 
     440    my @oldvalues = grep { $_ } $self->_get_attributes($attribute); 
     441 
     442    foreach my $value (@values) { 
     443        @oldvalues = grep { $_ ne $value } @oldvalues; 
     444    } 
     445 
     446    $self->_set_c_fields($attribute => @oldvalues ? [ @oldvalues, ] : undef ); 
     447} 
     448 
     449sub delAttributeValue { 
     450    my ($self, $attribute, @values) = @_; 
     451 
     452    my @oldvalues = grep { $_ } $self->_get_attributes($attribute); 
     453 
     454    foreach my $value (@values) { 
     455        @oldvalues = grep { $_ ne $value } @oldvalues; 
     456    } 
     457 
     458    $self->set_c_fields($attribute => @oldvalues ? [ @oldvalues, ] : undef ); 
    409459} 
    410460 
  • trunk/LATMOS-Accounts/t/11_bases_unix.t

    r1071 r1306  
    11use strict; 
    22use warnings; 
    3 use Test::More tests => 29; 
     3use Test::More tests => 33; 
    44use File::Temp; 
    55 
     
    5151ok(eq_set($group->get_c_field('memberUID'), [ 'admin' ]), 'can get group\'s member after change'); 
    5252 
     53ok($group->addAttributeValue('memberUID', 'root'), 'can use addAttributeValue'); 
     54ok(eq_set($group->get_c_field('memberUID'), [ 'admin', 'root' ]), 'can get group\'s member after addAttributeValue'); 
     55ok($group->delAttributeValue('memberUID', 'root'), 'can use addAttributeValue'); 
     56ok(eq_set($group->get_c_field('memberUID'), [ 'admin' ]), 'can get group\'s member after addAttributeValue'); 
    5357 
    5458ok(my $unixbmod = LATMOS::Accounts::Bases->new( 
Note: See TracChangeset for help on using the changeset viewer.