Files
dumas_gestion/mondumas/views/utils.py
2021-01-27 14:53:47 +01:00

141 lines
4.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# -*- coding: utf8 -*-
from pyramid.response import Response
from pyramid.view import (
view_config,
)
from pyramid_mailer import get_mailer
from pyramid_mailer.message import Message, Attachment
from time import sleep
from datetime import *
from ..models.utils import *
@view_config(route_name='batch_nuit')
def batch_nuit(request):
"""
Traitement est lancé chaque nuit, sur le serveur du site web, par un cron job :
- Execute cron job as : root
- Command : wget http://localhost:9180/batch_nuit/JonSn0w
- When to execute : 02:00 each day
Par sécurité, ce view ne peut être appelé qu'avec un paramètre secret 'JonSn0w'
"""
# contrôle : paramètre correct ? non, terminer
par = request.matchdict['param']
if par != 'JonSn0w':
return Response('Erreur : paramètre incorrect')
# ----- effacer le log
truncate_log(request)
# ----- PURGE des dosiers obsolètes
# todo
# ----- RAPPELS DES RENDEZ-VOUS
update_rappels(request)
# attendre 5 secondes
sleep(5)
# ----- envoyer les rappels
notifier_rappels(request)
# ----- ENVOI RAPPORTS di traitement
email_rapport(request)
return Response('Batch nuit terminé OK')
def notifier_rappels(request):
# log : Début ENVOI emails
insert_log(request, 'RAPPELS','- Début ENVOI emails')
# lire les rappels non encore envoyés
rappels = get_email_rappels(request)
nbLus = 0
nbEmailVide = 0
nbEnvoyes = 0
for item in rappels:
nbLus += 1
if len(item.c_email) == 0 :
nbEmailVide += 1
insert_log(request, 'RAPPELS', '--> email vide : %s-%s - %s %s' % (item.societe, item.nochantier, item.c_qualite, item.c_nom))
else:
# RDV ayant une heure
date_heure = item.rdv_date.strftime('%d/%m/%Y - %H:%M')
szBody = """
<html><body>
<p>Bonjour %s %s,</p>
<p>Lentreprise %s vous rappelle votre prochain rendez-vous, pris d'un commun accord</p>
<p>le <b>%s</b><br />
%s<br />
%s<br />
%s<br /><p>
<p>En cas d'empêchement, veuillez nous contacter au <b>%s</b></p>
<p>Veuillez agréer nos sincères salutations.</p>
<p>L'entreprise %s</p></body></html>
""" % (item.c_qualite, item.c_nom, item.nom_societe, date_heure, item.c_adr, item.c_adr2, item.c_ville, item.tel, item.nom_societe)
email_rappels(request, "RAPPEL : rendez-vous le " + date_heure, szBody, [item.c_email,], item.societe)
nbEnvoyes += 1
# marquer le rdv comme envoyé ou traité
update_email_rappels(request, item.no_id)
if nbLus > 0:
pc = str(round(nbEnvoyes * 100 / nbLus, 0)) + ' %'
else:
pc = '0 %'
insert_log(request, 'RAPPELS',
"- Fin ENVOI emails : %s rdv lus, %s rappels envoyés, soit %s envoyés." % (str(nbLus), str(nbEnvoyes), pc))
return
def email_rappels(request, objet, corps, destinataire, societe):
# lire la societe
soc = get_societes(request, societe)
if soc:
expediteur = soc.email_from
else:
expediteur = "peinture@entreprise-dumas.com"
send_mail(request, expediteur, destinataire, "[Ent. Dumas] " + objet, corps)
return
def email_rapport(request):
NOW = datetime.now()
corps = "<html><body><p>=============================================</p>"
corps += "<p>Rapport du traitement de nuit du " + NOW.strftime('%d/%m/%Y - %H:%M') + "</p>"
corps += "<p>=============================================</p><p></p><p>"
# Lire le fichier log
items = get_log(request)
for item in items:
corps += " - " + item.date.strftime('%d/%m/%Y - %H:%M') + " - " + item.proc + " : " + item.msg + "<br />"
corps += "</p><p></p><p>=============================================</p><p></p>"
expediteur = request.registry.settings['mondumas.admin_email']
destinataire = ["phuoc@caotek.fr","peinture@entreprise-dumas.com"]
send_mail(request, expediteur, destinataire, "[DEV_NUIT] Rapport des traitements de nuit", corps)
return
def send_mail(request, expediteur, destinataires, objet, corps):
body = """
%s
""" % (corps)
message = Message(subject=objet,
sender=expediteur,
recipients=destinataires,
html=body)
mailer = get_mailer(request)
import pdb;pdb.set_trace()
mailer.send_immediately(message)