Changeset 1913 for trunk


Ignore:
Timestamp:
01/05/17 16:42:23 (7 years ago)
Author:
nanardon
Message:

Add option to not send mail to manager

This reverts commit 6751d93fb1f3b55fc57c79f98624f30ff1e4eb9d.

File:
1 edited

Legend:

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

    r1897 r1913  
    4646If set only log are emitted but changes are not done and mail not really sent 
    4747 
     48=head2 warn_manager 
     49 
     50If set, send a warning to manager of user after L<warndelay>. 
     51 
     52If not, a mail is sent only to L<summary> (if set). 
     53 
    4854=head2 cc 
    4955 
     
    151157 
    152158        my $manager = $ouser->get_attributes('manager') || 'N/A'; 
    153  
    154         $self->{_base}->log( 
    155             LA_NOTICE, 
    156             "%s Warning, user %s is expired (%s), manager %s", 
    157             $test ? 'Test: ' : '', 
    158             $user, 
    159             $ouser->get_attributes('expireText'), 
    160             $manager, 
    161         ); 
    162              
     159  
    163160        $expired{$manager} ||= { users => [] }; 
    164161        push (@{$expired{$manager}{users}}, $ouser); 
    165162    } 
    166163 
    167     my $lamail = LATMOS::Accounts::Mail->new( 
    168         $self->{_la}, 
    169         'account_expired_reminder.mail', 
    170     ); 
    171  
    172     my $sumto = $self->{syncm}->ini->val($self->{name}, 'summary'); 
    173  
    174     foreach my $manager (sort keys %expired) { 
    175  
    176  
    177         my $mail; 
    178         if (my $omanager = $self->{_base}->get_object('user', $manager)) { 
    179             $mail = $omanager->get_attributes('mail') or next; 
     164    if ($self->{syncm}->ini->val('warn_manager')) { 
     165        my $lamail = LATMOS::Accounts::Mail->new( 
     166            $self->{_la}, 
     167            'account_expired_reminder.mail', 
     168        ); 
     169 
     170        foreach my $manager (sort keys %expired) { 
     171 
     172            foreach my $ouser (@{ $expired{$manager}{users}}) { 
     173                $self->{_base}->log( 
     174                    LA_NOTICE, 
     175                    "%s Warning, user %s is expired (%s), manager %s", 
     176                    $test ? 'Test: ' : '', 
     177                    $ouser->id, 
     178                    $ouser->get_attributes('expireText'), 
     179                    $manager, 
     180                ); 
     181                $self->{_base}->set_global_value('expiredWarning.user.' . $ouser->id, $ouser->get_attributes(_DATEFLAG)); 
     182            } 
     183            $self->{_base}->commit; 
     184 
     185            my $omanager = $self->{_base}->get_object('user', $manager) or next; 
     186            my $mail = $omanager->get_attributes('mail') or next; 
     187 
    180188            $expired{$manager}{manager} = $omanager; 
    181         } 
    182         $mail ||= $sumto; 
    183         $mail or next; 
    184  
    185  
    186         my %mail = ( 
    187             Subject => 'LATMOS expired account', 
    188             'X-LATMOS-Reason' => 'Account destruction', 
    189         ); 
    190  
    191         # to is for debuging 
    192         $mail{to} = $self->{syncm}->ini->val($self->{name}, 'to', $mail); 
    193         $mail{cc} = $self->{syncm}->ini->val($self->{name}, 'cc'); 
    194  
    195  
    196         if ($test) { 
    197             $self->{_base}->log(LA_NOTICE, "Test: sending mail to %s for expired account %s", 
    198                 $mail, 
    199                 join(', ', sort map { $_->id } @{ $expired{$manager}{users}}), 
     189 
     190            my %mail = ( 
     191                Subject => 'LATMOS expired account', 
     192                'X-LATMOS-Reason' => 'Account destruction', 
    200193            ); 
    201         } else { 
    202             if ($lamail->process(\%mail, $expired{$manager})) { 
    203                 $self->{_base}->log(LA_NOTICE, 
    204                     "Expired account reminder mail sent to %s (%s) (cc: %s) for %s", 
    205                     $mail{to}, 
    206                     $manager, 
    207                     ($mail{cc} || ''), 
     194 
     195            # to is for debuging 
     196            $mail{to} = $self->{syncm}->ini->val($self->{name}, 'to', $mail); 
     197            $mail{cc} = $self->{syncm}->ini->val($self->{name}, 'cc'); 
     198 
     199            if ($test) { 
     200                $self->{_base}->log(LA_NOTICE, "Test: sending mail to %s for expired account %s", 
     201                    $omanager->id, 
    208202                    join(', ', sort map { $_->id } @{ $expired{$manager}{users}}), 
    209203                ); 
    210  
    211             } 
    212             foreach my $ouser (@{ $expired{$manager}{users}}) { 
    213                 $self->{_base}->set_global_value('expiredWarning.user.' . $ouser->id, $ouser->get_attributes(_DATEFLAG)); 
    214             } 
    215             $self->{_base}->commit; 
     204            } else { 
     205                if ($lamail->process(\%mail, $expired{$manager})) { 
     206                    $self->{_base}->log(LA_NOTICE, 
     207                        "Expired account reminder mail sent to %s (%s) (cc: %s) for %s", 
     208                        $mail{to}, 
     209                        $omanager->id, 
     210                        ($mail{cc} || ''), 
     211                        join(', ', sort map { $_->id } @{ $expired{$manager}{users}}), 
     212                    ); 
     213 
     214                } 
     215            } 
    216216        } 
    217217    } 
    218218 
    219     if ($sumto) { 
     219    if (my $sumto = $self->{syncm}->ini->val($self->{name}, 'summary')) { 
    220220        my @summary; 
    221221        foreach my $manager (sort keys %expired) { 
    222222            foreach (@{$expired{$manager}{users}}) { 
     223 
     224                if (my $val = $self->{_base}->get_global_value("expiredWarning.usersummary.$_")) { 
     225                    if ($val eq $_->get_attributes(_DATEFLAG)) { 
     226                        # Warning has been already sent 
     227                        next; 
     228                    } 
     229                } 
     230 
    223231                push(@summary, sprintf("%s - %s (%s, %s)\n", 
    224232                        $_->id, 
     
    230238                    ) 
    231239                ); 
    232             } 
    233         } 
    234  
    235         if (@summary && !$test) { 
    236             my %mail = ( 
    237                 Subject => 'LATMOS expired account (deactivation planned)', 
    238                 'X-LATMOS-Reason' => 'Account expiration', 
    239                 To => $sumto, 
    240             ); 
    241             my $summail = LATMOS::Accounts::Mail->new( 
    242                 $self->{_la}, \join('', @summary), {} 
    243             ); 
    244             if ($summail->process(\%mail)) { 
    245                 la_log(LA_NOTICE, "Expiration summary mail sent to %s", 
    246                     $sumto, 
    247                 ); 
     240 
     241                $self->{_base}->set_global_value('expiredWarning.user.' . $_->id, $_->get_attributes(_DATEFLAG)); 
     242            } 
     243        } 
     244 
     245        if (@summary) { 
     246            if ($test) { 
     247                $self->{_base}->log(LA_NOTICE, "Test: no sending expired summary to $sumto for users"); 
     248            } else { 
     249                my %mail = ( 
     250                    Subject => 'LATMOS expired account (deactivation planned)', 
     251                    'X-LATMOS-Reason' => 'Account expiration', 
     252                    To => $sumto, 
     253                ); 
     254                my $summail = LATMOS::Accounts::Mail->new( 
     255                    $self->{_la}, \join('', @summary), {} 
     256                ); 
     257                if ($summail->process(\%mail)) { 
     258                    la_log(LA_NOTICE, "Expiration summary mail sent to %s", 
     259                        $sumto, 
     260                    ); 
     261                } 
    248262            } 
    249263        } 
     
    288302            ); 
    289303            $self->{_base}->del_global_value("expiredWarning.user.$user"); 
     304            $self->{_base}->del_global_value("expiredWarning.usersummary.$user"); 
    290305            $ouser->ReportChange('Update', "Automatic unexport due to expiration"); 
    291306            $self->{_base}->commit; 
Note: See TracChangeset for help on using the changeset viewer.