This commit is contained in:
2021-02-16 14:35:26 +01:00
parent 3915b0e59b
commit 6212692b19
15 changed files with 250 additions and 227 deletions

View File

@@ -27,7 +27,7 @@ from ..views.default import *
@view_config(route_name='parametres', renderer='../templates/parametres/parametres.pt', permission='manage')
def parametres(request):
logged_in = request.authenticated_userid.lower()
logged_in = request.authenticated_userid.upper()
return {
'page_title': "Paramètres",
@@ -168,7 +168,7 @@ def user_edit(request):
@view_config(route_name='dashboard', renderer='../templates/parametres/dashboard.pt', permission='manage')
def dashboard(request):
# lire le log de nuit
log_nuit = get_log_nuit(request)
@@ -216,60 +216,36 @@ def rappels_rdv(request):
'nbRappels': nbRappels,
}
@view_config(route_name='orphans_de', renderer='../templates/parametres/orphans_de.pt', permission='manage')
def orphans_de(request):
@view_config(route_name='stats_dd', renderer='../templates/parametres/stats_dd.pt', permission='view')
def stats_dd(request):
societe = request.matchdict['societe']
url = request.route_url('orphans_de', societe=societe)
url = request.route_url('stats_dd', societe=societe)
message = ''
societes = ['PE','ME','PL','PO','CD']
nochantier = '0'
# prendre en compte les paramètres de saisie
if 'societe' in request.params:
societe = request.params["societe"]
url = request.route_url('orphans_de', societe=societe)
url = request.route_url('stats_dd', societe=societe)
if 'form.nochantier' in request.params:
message = ''
nochantier = request.params['nochantier']
# oui, NestedMultiDict([('form.submitted', ''), ('id0', '271246'), ('id1', '370929')])
for param in request.params:
if param[:2] == 'id':
update_nochantier(request, societe, request.params[param], int(nochantier))
message = "Le numéro de chantier est mis à jour avec succès"
# lire les stats globales des demandes de devis
stats_dd = get_stats_dd(request, societe)
# lire le premier devis orphelin
devis = get_orphans_DE(request, societe)
# lire tous les dossiers de ce chantier
dossiers = get_dossiers_byChantier(request, societe, '%s;%s;%s' % (devis.C_NOM, devis.C_ADR, devis.C_VILLE))
liste=[]
nochantiers=[]
# construire la liste
for item in dossiers:
dossier_id = '%s-%s' % (item.TYPE, item.numero)
if item.nochantier != 0:
nochantiers.append(item.nochantier)
nochantier = item.nochantier
d = (dossier_id, dossier_id, item.date.strftime('%d-%m-%Y'), item.nomcli, item.chantier, to_euro(item.montant),
item.nosin, item.nochantier)
for item in stats_dd:
d = (str(item.Annee), str(item.Created), str(item.Devis), str(item.Commande), str(item.Facture), str(item.ReglePart),
str(item.Regle), str(item.Total))
liste.append(d)
if len(nochantiers) == 0:
nochantiers.append(1)
return {
'page_title': "DEVIS orphelins",
'page_title': "Stats : Demandes de devis",
'url': url,
'message': message,
'devis': devis,
'dt_data': json.dumps(liste),
'societes': societes,
'societe': societe,
'nochantiers': nochantiers,
'nochantier': nochantier,
}
@view_config(route_name='rdf_causes', renderer='../templates/parametres/rdf_causes.pt', permission='manage')

View File

@@ -31,8 +31,9 @@ def batch_nuit(request):
# ----- effacer le log
truncate_log(request)
# ----- PURGE des dosiers obsolètes
# todo
# ----- PURGE des données obsolètes
delete_orphan_attached_files(request)
# ----- RAPPELS DES RENDEZ-VOUS
update_rappels(request)
# attendre 5 secondes
@@ -55,14 +56,12 @@ def notifier_rappels(request):
rappels = get_email_rappels(request)
nbLus = 0
nbEmailVide = 0
nbEnvoyes = 0
for item in rappels:
nbLus += 1
error = 0
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
@@ -153,6 +152,95 @@ def send_mail(request, expediteur, destinataires, objet, corps):
else:
msg = e
# logguer l'erreur
insert_log(request, 'RAPPELS', "- MAILER ERROR : %s TO %s - %s" % (expediteur, destinataires, msg))
insert_log(request, 'RAPPELS', "- MAILER ERROR : %s, TO : %s" % (msg, destinataires))
return len(msg)
return len(msg)
@view_config(route_name='batch_test')
def batch_test(request):
"""
Traitement est lancé pour tester des traitements batch
URL = /batch_test/Sansa5tark
Par sécurité, ce view ne peut être appelé qu'avec un paramètre secret 'Sansa5tark'
"""
# contrôle : paramètre correct ? non, terminer
par = request.matchdict['param']
if par != 'Sansa5tark':
return Response('Erreur : paramètre incorrect')
update_chantiers_status(request)
return Response('Batch nuit terminé OK')
def delete_orphan_attached_files(request):
"""
Ce traitement parcourt le répertoire DOCS_ATTACHES de chacune des 5 sociétés
et controle que le dossier sur le filesystem existe dans la BD.
S'il n'existe plus, on supprime les fichiers du dossier
"""
import os
import shutil
societes = ['CD', 'ME', 'PE', 'PL', 'PO']
for ste in societes:
# Scan the directiory of attached files
# and get an iterator of os.DirEntry objets
path = request.registry.settings['mondumas.devfac_dir'] + '/' + ste
obj = os.scandir(path)
# List all diretories in the specified path
nbLus = 0
nbSupp = 0
for entry in obj :
if entry.is_dir():
nbLus += 1
# le chantier existe ?
if chantierExiste(request,ste, entry.name) == False :
# non, supprimer les docs attaches
shutil.rmtree(path+ '/' + entry.name)
nbSupp += 1
if nbLus > 0:
insert_log(request, 'DELETE', '%s : %d Répertoires lues, %d supprimées' % (ste, nbLus, nbSupp))
def update_chantiers_status(request):
"""
Ce traitement parcourt tous les chantiers de chacune des 5 sociétés
pour mettre à jour son STATUS selon l'avancement du chantier.
"""
societes = ['PE','ME','PL','PO','CD']
for ste in societes:
# lire tous les chantiers
chantiers = get_all_chantiers(request, ste)
for item in chantiers:
# si le chantier est annulé, ne rien faire
if item.STATUS != 'Annulé':
status = ''
# lire la dernière facture du chantier
facture = get_last_facture(request, ste, item.NO_ID)
if facture :
# remonte le status de la facture ('','Régl part.', 'Réglée')
status = facture.STATUS
if status == '':
status = 'Facturé'
else:
# lire le dernier devis du chantier ('','Commandé, 'Facturé')
devis = get_last_devis(request, ste, item.NO_ID)
if devis:
# remonte le status de la facture
status = devis.STATUS
if status == '' or status == '0':
status = 'Devis'
else:
if item.HUMIDITE != 0:
status = 'Humidité'
# maj le status du chantier
update_chantier_status(request, ste, item.NO_ID, status)