Changeset 329


Ignore:
Timestamp:
08/12/09 13:31:56 (15 years ago)
Author:
nanardon
Message:
  • make clearer how attributes are find in db
Location:
LATMOS-Accounts/lib/LATMOS/Accounts/Bases
Files:
5 edited

Legend:

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

    r327 r329  
    6464            undef, undef, 
    6565            { 
    66                 RaiseError => 0, 
     66                RaiseError => 1, 
    6767                AutoCommit => 0, 
    6868                PrintWarn => 1, 
  • LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Sql/Address.pm

    r306 r329  
    4343sub has_extended_attributes { 1 } 
    4444 
    45 sub _initials_fields { 
    46     return { 
    47         gidNumber       => 'gidnumber', 
    48         user            => 'user', 
    49     } 
    50 } 
    51  
    5245sub _inline_fields { 
    5346    my ($self, $for, $base) = @_; 
    5447 
    5548    my %fields = ( 
    56         %{ $self->SUPER::_inline_fields($for, $base) }, 
     49        $self->SUPER::_inline_fields($for, $base), 
     50        gidNumber       => 'gidnumber', 
     51        user            => 'user', 
    5752    ); 
    58     \%fields; 
    5953} 
    6054 
  • LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Sql/Group.pm

    r251 r329  
    4343sub has_extended_attributes { 1 } 
    4444 
    45 sub _initials_fields { 
    46     return { 
     45sub _inline_fields { 
     46    my ($self, $for, $base) = @_; 
     47    return ( 
     48        $self->SUPER::_inline_fields($for, $base), 
    4749        gidNumber       => 'gidnumber', 
    48     } 
     50    ); 
    4951} 
    5052 
    51 sub _inline_fields { 
     53sub _managed_fields { 
    5254    my ($self, $for, $base) = @_; 
    5355 
    5456    my %fields = ( 
    55         %{ $self->SUPER::_inline_fields($for, $base) }, 
    5657        memberUID       => 'memberUID', 
    5758        member          => 'member', 
    58         # gidNumber       => 'gidnumber', 
    5959        $for !~ /w/ ? ( 
    6060            sAMAccountName  => 'name', 
     
    6262        ) : (), 
    6363    ); 
    64     \%fields; 
     64    %fields; 
    6565} 
    6666 
  • LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Sql/User.pm

    r317 r329  
    4949} 
    5050 
    51 sub _initials_fields { 
    52     return { 
     51sub _inline_fields { 
     52    my ($class, $for, $base) = @_; 
     53    return ( 
    5354        uidNumber => 'uidnumber', 
    5455        gidNumber => 'gidnumber', 
    55     } 
    56 } 
    57  
    58 sub _inline_fields { 
     56    ); 
     57} 
     58 
     59sub _managed_fields { 
    5960    my ($self, $for, $base) = @_; 
    60     return { 
    61         %{ $self->SUPER::_inline_fields($for, $base) }, 
     61    return ( 
    6262        memberOf        => 'memberOf', 
    63         # uidNumber => 'uidnumber', 
    64         # gidNumber => 'gidnumber', 
    6563        (($for !~ /w/) ? ( 
    6664        uid => 'name', 
     
    7472        department => 'department', 
    7573        ) : ()), 
    76     } 
     74    ) 
    7775} 
    7876 
  • LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Sql/objects.pm

    r328 r329  
    7878 
    7979sub has_extended_attributes { 0 } 
     80 
     81# Work only for very simple case, must be override 
    8082 
    8183sub _inline_fields { 
     
    100102    } 
    101103    my %fields = map { $_ => $_ } @res; 
    102     \%fields 
    103 } 
    104  
    105 sub _canonical_fields { 
    106     my ($class, $base, $for) = @_; 
    107     $for ||= 'rw'; 
     104    %fields 
     105} 
     106 
     107# Everything managed by the perl code 
     108 
     109sub _managed_fields { 
     110    my ($class, $for, $base) = @_; 
     111    return(); 
     112} 
     113 
     114# Everything from attributes_list table 
     115# $for is uneeded here as all this attributes are rw 
     116 
     117sub _extended_field { 
     118    my ($class, $for, $base) = @_; 
    108119    my @attr; 
    109120    if ($class->has_extended_attributes) { 
    110121        my $sth = $base->db->prepare_cached( 
    111122            sprintf( 
    112                 q{select canonical from %s order by canonical}, 
     123                q{select canonical from only %s order by canonical}, 
    113124                $base->db->quote_identifier($class->object_table . '_attributes_list'), 
    114125            ) 
     
    118129            push(@attr, $res->{canonical}); 
    119130        } 
    120     } 
    121     my %inl = %{ $class->_inline_fields($for, $base) || {} }; 
    122     $inl{$_} = 1 foreach(@attr); 
     131        return map { $_ => $_ } @attr; 
     132    } 
     133} 
     134 
     135sub _canonical_fields { 
     136    my ($class, $base, $for) = @_; 
     137    $for ||= 'rw'; 
     138    my %inl = ( 
     139        $class->_inline_fields($for, $base), 
     140        $class->_managed_fields($for, $base), 
     141        $class->_extended_field($for, $base), 
     142    ); 
    123143    return sort keys %inl; 
    124      
    125144} 
    126145 
     
    146165    $c_field or return; 
    147166    $for ||= 'rw'; 
    148     my $inline = $class->_inline_fields($for, $base) || {}; 
    149     return $inline->{$c_field} 
    150         ? $inline->{$c_field} 
    151         : $class->_get_field_name_db($c_field, $base); 
     167    my %fields = $class->_managed_fields($for, $base); 
     168    return $fields{$c_field} if ($fields{$c_field}); 
     169    %fields = $class->_inline_fields($for, $base); 
     170    return $fields{$c_field} if ($fields{$c_field}); 
     171    %fields = $class->_extended_field($for, $base); 
     172    return $fields{$c_field} 
    152173} 
    153174 
     
    188209 
    189210    # splitting inline from extended 
    190     my $inl = $class->_initials_fields('w', $base) || {}; 
     211    my %inlined = $class->_inline_fields('w', $base); 
     212    my %inl = map { $_ => 1 } values %inlined; 
    191213    my (%first, %second); 
    192214    foreach (keys %data) { 
    193         if ($inl->{$_}) { 
    194             $first{$inl->{$_}} = $data{$_}; 
     215        warn $_; 
     216        if ($inl{$_}) { 
     217            $first{$_} = $data{$_}; 
    195218        } else { 
    196219            $second{$_} = $data{$_}; 
     
    244267sub get_field { 
    245268    my ($self, $field) = @_; 
    246     my $inl = $self->_inline_fields('r', $self->base) || {}; 
    247     my %inline = map { $inl->{$_} => 1 }  keys %{ $inl || {}}; 
    248     if ($inline{lc($field)}) { 
     269    my %inl = $self->_inline_fields('r', $self->base); 
     270    my %inline = map { $_ => 1 } values %inl; 
     271    if ($inline{$field}) { 
    249272    my $sth = $self->db->prepare_cached( 
    250273        sprintf( 
     
    284307    my @vals; 
    285308    my %ext; 
    286     my $inl = $self->_inline_fields('w', $self->base) || {}; 
    287     my %inline = map { $inl->{$_} => 1 }  keys %{ $inl || {}}; 
     309    my %inl = $self->_inline_fields('w', $self->base); 
     310    my %inline = map { $_ => 1 } values %inl; 
    288311    foreach my $field (keys %data) { 
    289312        $data{$field} = $data{$field} ? 1 : 0 if($field eq 'exported'); 
     
    357380                } 
    358381            } else { 
     382                warn "delete"; 
    359383                defined($sthd->execute($okey, $_)) or do { 
    360384                    $self->base->log(LA_ERR, 
Note: See TracChangeset for help on using the changeset viewer.