Changeset 341


Ignore:
Timestamp:
08/14/09 17:00:11 (15 years ago)
Author:
nanardon
Message:
  • setting site attributes reset address attributes and make them return from the associated site object, eg people have address of their site
Location:
LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Sql
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Sql/Address.pm

    r329 r341  
    5858} 
    5959 
     60sub get_field { 
     61    my ($self, $field) = @_; 
     62    if ((grep { $field eq $_ } __PACKAGE__->_address_fields()) 
     63        && (my $fsite = $self->get_c_field('site'))) { 
     64        my $site = $self->base->get_object('site', $fsite); 
     65        if ($site) { 
     66            return 
     67            $site->_get_c_field($field); 
     68        } 
     69    } else { 
     70        return $self->SUPER::get_field($field); 
     71    } 
     72} 
     73 
     74sub set_fields { 
     75    my ($self, %data) = @_; 
     76    my %fdata; 
     77    foreach my $attr (keys %data) { 
     78        $attr =~ /^site$/ and do { 
     79            my $site = 
     80            $self->base->get_object('site', 
     81                $data{$attr}); 
     82            if ($site) { 
     83                foreach (__PACKAGE__->_address_fields()) { 
     84                    $fdata{$_} = undef; 
     85                } 
     86            }; 
     87            $fdata{$attr} = $data{$attr} || undef; 
     88        } 
     89    } 
     90    if  (keys %fdata) { 
     91        $self->SUPER::set_fields(%fdata); 
     92    } 
     93} 
     94 
     95 
    60961; 
    6197 
  • LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Sql/User.pm

    r337 r341  
    173173        $res->{expire} =~ /(\d+) days\s*(\w)?/; 
    174174        return $1 + ($2 ? 1 : 0); 
     175    } elsif ((grep { $field eq $_ } __PACKAGE__->_address_fields()) 
     176        && (my $fsite = $self->get_c_field('site'))) { 
     177        my $site = $self->base->get_object('site', $fsite); 
     178        if ($site) { 
     179            return $site->get_c_field($field); 
     180        } 
    175181    } else { 
    176182        return $self->SUPER::get_field($field); 
     
    208214            next; 
    209215        }; 
     216        $attr =~ /^site$/ and do { 
     217            my $site = $self->base->get_object('site', $data{$attr}); 
     218            if ($site) { 
     219                foreach (__PACKAGE__->_address_fields()) { 
     220                    $fdata{$_} = undef; 
     221                } 
     222            } 
     223        }; 
    210224        $fdata{$attr} = $data{$attr} || undef; 
    211225    } 
  • LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Sql/objects.pm

    r340 r341  
    2323 
    2424Account base access over standard unix file format. 
     25 
     26=cut 
     27 
     28# This fields are special in sense they may come from site field 
     29sub _address_fields { qw(l postalCode streetAddess postOfficeBox st) } 
    2530 
    2631=head1 FUNCTIONS 
Note: See TracChangeset for help on using the changeset viewer.