Ignore:
Timestamp:
12/27/16 12:21:55 (8 years ago)
Author:
nanardon
Message:

Add test mode, delay warning after modif too

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Task/Delexpiredusers.pm

    r1880 r1881  
    4242Default is 60 minutes. 
    4343 
     44=head2 test 
     45 
     46If set only log are emitted but changes are not done and mail not really sent 
     47 
    4448=head2 cc 
    4549 
     
    111115    my ($self) = @_; 
    112116 
     117    my $test = $self->{syncm}->ini->val($self->{name}, 'test'); 
    113118    my $warnDelay = $self->{syncm}->ini->val($self->{name}, 'warndelay'); 
     119 
     120    my $modifDelay = $self->{syncm}->ini->val($self->{name}, 'modifdelay', 60); 
     121    my $waitAfterModif = DateTime->now->subtract( minutes => $modifDelay  )->iso8601; 
    114122        
    115123    defined($warnDelay)  or do { 
     
    123131 
    124132    foreach my $user ($self->{_base}->search_objects('user', 
    125             'exported=1', 'expired<' . $expiredDate->ymd('-'), 'oalias=NULL')) { 
     133            'exported=1', 
     134            'expired<' . $expiredDate->ymd('-'), 
     135            'date<' . $waitAfterModif, 
     136            'oalias=NULL' 
     137        )) { 
    126138        my $ouser = $self->{_base}->get_object('user', $user) or next; 
    127139 
     
    140152        my $manager = $ouser->get_attributes('manager') || 'N/A'; 
    141153 
     154        $self->{_base}->log( 
     155            $test ? LA_DEBUG : LA_NOTICE, 
     156            "%sUser %s is expired (%s), sending warning to %s", 
     157            $test ? 'Test: ' : '', 
     158            $user, 
     159            $ouser->get_attributes('expireText'), 
     160            $manager, 
     161        ); 
     162             
    142163        $expired{$manager} ||= { users => [] }; 
    143164        push (@{$expired{$manager}{users}}, $ouser); 
     
    166187 
    167188 
    168         if ($lamail->process(\%mail, $expired{$manager})) { 
    169             $self->{_base}->log(LA_NOTICE, 
    170                 "Expired account reminder mail sent to %s (%s) (cc: %s) for %s", 
    171                 $mail{to}, 
     189        if ($test) { 
     190            $self->{_base}->log(LA_NOTICE, "Test: sending mail to %s for expired account %s", 
    172191                $omanager->id, 
    173                 ($mail{cc} || ''), 
    174192                join(', ', sort map { $_->id } @{ $expired{$manager}{users}}), 
    175193            ); 
    176  
    177             foreach my $ouser (@{ $expired{$manager}{users}}) { 
    178                 $self->{_base}->set_global_value('expiredWarning.user.' . $ouser->id, $ouser->get_attributes(_DATEFLAG)); 
     194        } else { 
     195            if ($lamail->process(\%mail, $expired{$manager})) { 
     196                $self->{_base}->log(LA_NOTICE, 
     197                    "Expired account reminder mail sent to %s (%s) (cc: %s) for %s", 
     198                    $mail{to}, 
     199                    $omanager->id, 
     200                    ($mail{cc} || ''), 
     201                    join(', ', sort map { $_->id } @{ $expired{$manager}{users}}), 
     202                ); 
     203 
     204                foreach my $ouser (@{ $expired{$manager}{users}}) { 
     205                    $self->{_base}->set_global_value('expiredWarning.user.' . $ouser->id, $ouser->get_attributes(_DATEFLAG)); 
     206                } 
     207                $self->{_base}->commit; 
    179208            } 
    180             $self->{_base}->commit; 
    181209        } 
    182210    } 
     
    198226        } 
    199227 
    200         if (@summary) { 
     228        if (@summary && !$test) { 
    201229            my %mail = ( 
    202230                Subject => 'LATMOS expired account (to disable)', 
     
    219247    my ($self) = @_; 
    220248 
     249    my $test = $self->{syncm}->ini->val($self->{name}, 'test'); 
     250 
    221251    my $warnDelay     = $self->{syncm}->ini->val($self->{name}, 'warndelay', 0); 
    222252    my $unexportDelay = $self->{syncm}->ini->val($self->{name}, 'unexportdelay'); 
     
    234264            'exported=1', 
    235265            'expired<' . $expiredDate->ymd('-'), 
    236             'date>' . $waitAfterModif, 
     266            'date<' . $waitAfterModif, 
    237267            'oalias=NULL' 
    238268        )) { 
     
    243273        } 
    244274 
    245         $self->{_base}->log(LA_NOTICE, "User $user unexported because is expired"); 
    246         $ouser->_set_c_fields( 
    247             unexported => 1 
    248         ); 
    249         $self->{_base}->del_global_value("expiredWarning.user.$user"); 
    250         $self->{_base}->commit; 
     275        $self->{_base}->log(LA_NOTICE, "%sUser $user unexported because is expired", $test ? 'Test: ' : ''); 
     276 
     277        if (!$test) { 
     278            $ouser->_set_c_fields( 
     279                unexported => 1 
     280            ); 
     281            $self->{_base}->del_global_value("expiredWarning.user.$user"); 
     282            $self->{_base}->commit; 
     283        } 
    251284    } 
    252285} 
Note: See TracChangeset for help on using the changeset viewer.