diff --git a/gestion/mail/carte_etudiant.py b/gestion/mail/carte_etudiant.py index be2ebe31..90edf29e 100755 --- a/gestion/mail/carte_etudiant.py +++ b/gestion/mail/carte_etudiant.py @@ -3,35 +3,50 @@ import sys import smtplib +import datetime +import pytz from gestion import config from gestion.affich_tools import cprint -from gestion import mail +from gestion import mail as mail_module import lc_ldap.shortcuts # Attention, si à True envoie effectivement les mails SEND=False -deadline="mardi 5 novembre" -ldap_filter=u"(&(paiement=%(annee)s)(!(carteEtudiant=%(annee)s))(!(etudes=Personnel ENS))(aid=*))" % {'annee': config.ann_scol} +# TODO ces deadlines devraient être dans config.py +deadline=datetime.datetime(config.ann_scol, 11, 6) +fin_conn = datetime.datetime(config.ann_scol, 11, 1, tzinfo=pytz.UTC) +fin_conn = fin_conn.strftime('%Y%m%d%H%M%S%z') +ldap_filter=u"""(& + (finConnexion>=%(fin_conn)s) + (!(carteEtudiant=*)) + (!(etudes=Personnel ENS)) + (aid=*) +)""" % {'fin_conn': fin_conn, } conn=lc_ldap.shortcuts.lc_ldap_readonly() mailaddrs=set() for adh in conn.search(ldap_filter): - if 'canonicalAlias' in adh.attrs.keys(): - mailaddrs.add(str(adh['canonicalAlias'][0])) - elif 'mail' in adh.attrs.keys(): - mailaddrs.add(str(adh['mail'][0])) - else: - raise ValueError("%r has nor mail nor canonicalAlias, only %s" % (adh, adh.attrs.keys())) + mail = adh.get_mail() + if not mail: + print "Skip %r (no valid mail)" % adh + continue + mailaddrs.add(mail) if not SEND: print "Va envoyer le message à %s personnes. Mettre la variable SEND à True effectuer l'envoie" % len(mailaddrs) - sys.exit(0) + print "Appuyer sur entrée pour simuler la génération" + raw_input() echecs=[] conn_smtp=smtplib.SMTP('smtp.adm.crans.org') for To in mailaddrs: cprint(u"Envoi du mail à %s" % To) - mailtxt=mail.generate('carte_etudiant', {'deadline':deadline, 'To':To}).as_string() + params = { + 'deadline': deadline, + 'To': To, + 'lang_info': 'English version below', + } + mailtxt=mail_module.generate('carte_etudiant', params).as_string() try: if SEND: conn_smtp.sendmail("cableurs@crans.org", (To,), mailtxt) diff --git a/gestion/mail/template/carte_etudiant/Subject/fr b/gestion/mail/template/carte_etudiant/Subject/fr index 9ab3b4fb..3f9a8720 100644 --- a/gestion/mail/template/carte_etudiant/Subject/fr +++ b/gestion/mail/template/carte_etudiant/Subject/fr @@ -1 +1 @@ -[Crans] Rappel carte d'étudiant +Crans: Rappel carte d'étudiant diff --git a/gestion/mail/template/carte_etudiant/body/en b/gestion/mail/template/carte_etudiant/body/en index 1af6f498..262ea315 100644 --- a/gestion/mail/template/carte_etudiant/body/en +++ b/gestion/mail/template/carte_etudiant/body/en @@ -5,7 +5,7 @@ year. The Crans is connected to the RENATER network so we have to justify the academic status of all our members. You must therefore go to the Kfet with an original school certificate or with -your student card, before {{deadline}}. In case you fail to come before that +your student card, before {{deadline|date}}. In case you fail to come before that date, your Internet access will be suspended until you have the document sorted out. diff --git a/gestion/mail/template/carte_etudiant/body/fr b/gestion/mail/template/carte_etudiant/body/fr index 7b9554d6..bca6a012 100644 --- a/gestion/mail/template/carte_etudiant/body/fr +++ b/gestion/mail/template/carte_etudiant/body/fr @@ -5,15 +5,15 @@ valide pour l'année en cours. Le Crans utilisant le réseau RENATER, il lui est demandé de pouvoir justifier ton statut d'étudiant. Ainsi, il est nécessaire que tu viennes à la Kfet avec un certificat de -scolarité original ou ta carte d'étudiant, avant le {{deadline}}. Si tu ne +scolarité original ou ta carte d'étudiant, avant le {{deadline|date}}. Si tu ne pouvais venir avant cette date, ton accès serait suspendu jusqu'à ce que tu régularises ta situation. Merci de ne pas envoyer de certificat ou carte par retour de courriel, ceux-ci ne seront pas acceptés. -Bien cordialement, +À bientôt ! -- -Les câbleurs +Les membres actifs du Crans