Commit 025e5cfd authored by Gabriel Detraz's avatar Gabriel Detraz
Browse files

Ajoute un mode de notification des actions et des erreurs

parent 9bf1de23
......@@ -25,6 +25,7 @@ ldap = shortcuts.lc_ldap_readonly()
from gestion import mail as mail_module
From = "cableurs@crans.org"
def get_users_list(mode='day'):
now = datetime.now()
......@@ -43,28 +44,44 @@ def get_users_list(mode='day'):
return users
def send_to_users(users, verbose=False):
errors = []
for user in users:
mail = user.get_mail()
if '@crans.org' in mail:
home = user.get('homeDirectory', default=[None])[0]
if home:
if not os.path.exists(home.value):
errors.append(user)
return
if verbose:
print("Envoie du mail de bienvenue à " + user)
print(u"Envoie du mail de bienvenue à " + unicode(user))
print(mail)
mail = user.get_mail()
send_bienvenue_mail(mail)
return
return users, errors
def send_bienvenue_mail(mail):
From = "cableurs@crans.org"
if '@crans.org' in mail:
if not os.path.exists("/home/" + mail.replace('@crans.org','')):
return
with mail_module.ServerConnection() as conn_smtp:
mailtxt=mail_module.generate('bienvenue', {'To':mail, 'From': From}).as_string()
conn_smtp.sendmail(From, (mail,), mailtxt)
return
def notif_sent_bienvenue(users, errors, mode='all'):
To = 'respbats@crans.org'
if not mode=='all' and not errors:
return
with mail_module.ServerConnection() as conn_smtp:
all_users = u','.join([user.__str__() for user in users]) or u"aucun"
all_errors = u', '.join([user.__str__() for user in errors]) or u"aucun"
mailtxt=mail_module.generate('notifbienvenue', {'users' : all_users, 'errors' : all_errors, 'To':To, 'From': From}).as_string()
conn_smtp.sendmail(From, (To,), mailtxt)
parser = argparse.ArgumentParser()
parser.add_argument('--hour', action="store_true", help="Traite l'ensemble des users crées dans l'heure précédente")
parser.add_argument('--day', action="store_true", help="Traite l'ensemble des users crées dans la journée précédente")
parser.add_argument('--mail', help="Envoie un mail de bienvenue au mail précisé")
parser.add_argument('--verbose', action="store_true", help="Mode verbeux")
parser.add_argument('--notifall', action="store_true", help="Notifie toutes les actions")
parser.add_argument('--notiferrors', action="store_true", help="Notifie les erreurs")
if __name__ == '__main__':
args = parser.parse_args()
......@@ -75,8 +92,13 @@ if __name__ == '__main__':
if args.mail:
print("Envoie du mail de bienvenue au mail " + args.mail)
send_bienvenue_mail(args.mail)
if args.day:
send_to_users(get_users_list(mode='day'), verbose=verbose)
elif args.hour:
send_to_users(get_users_list(mode='hour'), verbose=verbose)
else:
if args.day:
users, errors = send_to_users(get_users_list(mode='day'), verbose=verbose)
elif args.hour:
users, errors = send_to_users(get_users_list(mode='hour'), verbose=verbose)
if args.notifall:
notif_sent_bienvenue(users, errors, mode='all')
if args.notiferrors:
notif_sent_bienvenue(users, errors, mode='errors')
Les mails de bienvenue ont été envoyés aux utilisateurs suivants : {{ users }}
Il y a eu des erreurs au niveau des home pour les utilisateurs suivants : {{ errors }}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment