21/10/22 - 15h00

master
cherif 2022-10-21 14:12:45 +02:00
parent f3168b5bf6
commit 3f9343d2de
7 changed files with 421 additions and 69 deletions

View File

@ -40,7 +40,7 @@ def AddStagiairetoClass(diction):
# field_list.
'''
field_list = ['nom', 'prenom', 'email', 'telephone', 'modefinancement', 'opco',
'class_internal_url', 'session']
'class_internal_url', 'session_id']
incom_keys = diction.keys()
for val in incom_keys:
if val not in field_list:
@ -52,7 +52,7 @@ def AddStagiairetoClass(diction):
Verification de la liste des champs obligatoires
"""
field_list_obligatoire = ['nom', 'prenom', 'email', 'telephone', 'modefinancement', 'opco',
'class_internal_url', 'session']
'class_internal_url', 'session_id']
for val in field_list_obligatoire:
if val not in diction:
@ -62,6 +62,29 @@ def AddStagiairetoClass(diction):
mydata = {}
session_id = ""
if ("session_id" in diction.keys()):
if diction['session_id']:
mydata['session_id'] = diction['session_id']
session_id = diction['session_id']
"""
Recuperation des info de la session de formation
"""
for tmp_val in MYSY_GV.dbname['myclass'].find({"datelieu.session_id":str(session_id)}):
tmp_date_lieu = tmp_val['datelieu']
for val in tmp_date_lieu:
if( val['session_id'] == str(session_id) ):
mydata['date_du'] = val['date_du']
mydata['date_au'] = val['date_au']
mydata['ville'] = val['ville']
mydata['code_postal'] = val['code_postal']
mydata['adresse'] = val['adresse']
#print(" #### pour la session_id "+str(session_id)+" on est a "+str(session_date_du)+" - "+str(session_adresse))
if ("nom" in diction.keys()):
if diction['nom']:
mydata['nom'] = diction['nom']
@ -86,9 +109,7 @@ def AddStagiairetoClass(diction):
if diction['opco']:
mydata['opco'] = diction['opco']
if ("session" in diction.keys()):
if diction['session']:
mydata['session'] = diction['session']
if ("class_internal_url" in diction.keys()):
if diction['class_internal_url']:
@ -102,16 +123,16 @@ def AddStagiairetoClass(diction):
## Verification si cette adresse n'est pas deja inscrite à cette session
# print(" myquery pr demo_account = " + str(myquery))
tmp = coll_inscription.count_documents({'email':str(mydata['email']),
'session':str( mydata['session']),
'session_id':str( mydata['session_id']),
'class_internal_url':str(mydata['class_internal_url'])})
if( tmp > 0 ):
mycommon.myprint(
str(inspect.stack()[0][3]) + " - l'adresse email "+str(mydata['email'])+" est deja inscrit à la session du "
" "+str( mydata['session'])+ " ")
" "+str( mydata['session_id'])+ " ")
return False, "Impossible de créer le stagiaire. l'adresse email "+str(mydata['email'])\
+" est deja inscrit à la session du "+str( mydata['session'])+ " "
+" est deja inscrit à la session du "+str( mydata['session_id'])+ " "
ret_val = coll_inscription.insert_one(mydata)
@ -134,11 +155,13 @@ def AddStagiairetoClass(diction):
"""
Mettre à jour les infomration d'un stgiaire
/!\ : on NE mets PAS à jour la session, juste les info du stagiaire
"""
def UpdateStagiairetoClass(diction):
try:
field_list = ['token', 'email', 'nom', 'prenom', 'telephone', 'modefinancement', 'opco',
'status', 'class_internal_url', 'session', 'price']
'status', 'class_internal_url', 'session_id', 'price']
incom_keys = diction.keys()
for val in incom_keys:
if val not in field_list:
@ -149,7 +172,7 @@ def UpdateStagiairetoClass(diction):
"""
Verification de la liste des champs obligatoires
"""
field_list_obligatoire = ['token', 'email', 'class_internal_url', 'session']
field_list_obligatoire = ['token', 'email', 'class_internal_url', 'session_id']
for val in field_list_obligatoire:
if val not in diction:
mycommon.myprint(
@ -175,11 +198,11 @@ def UpdateStagiairetoClass(diction):
myinternal_url = diction['class_internal_url']
query_key['class_internal_url'] = diction['class_internal_url']
mysession = ""
if ("session" in diction.keys()):
if diction['session']:
mysession = diction['session']
query_key['session'] = diction['session']
mysession_id = ""
if ("session_id" in diction.keys()):
if diction['session_id']:
mysession_id = diction['session_id']
query_key['session_id'] = diction['session_id']
partner_recid = mycommon.get_parnter_recid_from_token(mytoken)
if (partner_recid is False):
@ -286,7 +309,7 @@ Recuperation de liste des stagiaire d'une formation
"""
def GetAllClassStagiaire(diction):
try:
field_list = ['token', 'class_internal_url', 'session', 'status']
field_list = ['token', 'class_internal_url', 'session_id', 'status']
incom_keys = diction.keys()
for val in incom_keys:
if val not in field_list:
@ -297,7 +320,7 @@ def GetAllClassStagiaire(diction):
"""
Verification de la liste des champs obligatoires
"""
field_list_obligatoire = ['token', 'class_internal_url', 'session']
field_list_obligatoire = ['token', 'class_internal_url', 'session_id']
for val in field_list_obligatoire:
if val not in diction:
mycommon.myprint(
@ -321,10 +344,10 @@ def GetAllClassStagiaire(diction):
if diction['class_internal_url']:
class_internal_url = diction['class_internal_url']
session = ""
if ("session" in diction.keys()):
if diction['session']:
session = diction['session']
session_id = ""
if ("session_id" in diction.keys()):
if diction['session_id']:
session_id = diction['session_id']
status = ""
if ("status" in diction.keys()):
@ -335,7 +358,7 @@ def GetAllClassStagiaire(diction):
## Recuperation de toutes les stagiaire rattaché à cette session
coll_session = MYSY_GV.dbname['inscription']
myquery = {}
myquery['session'] = session
myquery['session_id'] = session_id
myquery['class_internal_url'] = class_internal_url
if(len(status) > 0 ):

View File

@ -300,9 +300,12 @@ def add_class(diction):
'''
Traitement date_lieu
Traitement date_lieu.
Date_lieu definit une session et au format :
date_du;data_au;ville;code_postal; adresse
'''
mydata['datelieu'] = ""
if ("date_lieu" in diction.keys()):
if diction['date_lieu']:
tmp_str2 = str(diction['date_lieu']).lower().replace(",", ";").replace("\r\n", "")
@ -310,14 +313,14 @@ def add_class(diction):
if (not tmp_str2.endswith(";")):
tmp_str2 = tmp_str2 + ";"
#print("tmp_str2 = " + tmp_str2)
# print("tmp_str2 = " + tmp_str2)
if (";" not in tmp_str2):
mycommon.myprint(str(inspect.stack()[0][3]) + " - les dates et lieux de la formation : " + str(
diction['external_code']) + " sont incorrectes")
diction['external_code']) + " sont incorrectes 1")
return False, "Les Dates et Lieux de la formation " + str(
diction['external_code']) + " sont incorrectes. Le format attendu : " \
"jj/mm/aaaa-ville-code_postal;jj/mm/aaaa-ville2-code_postal28"
"jj/mm/aaaa-jj/mm/aaaa-ville-code_postale-adresse;jj/mm/aaaa-jj/mm/aaaa-ville-code_postale-adresse"
tmp_str = tmp_str2.split(
";") # ==> ce qui va donner un tableau de : Country_Code-City : ['11/02/2012-paris-75001', '24/04/2022-marseille-13002',]
@ -325,35 +328,68 @@ def add_class(diction):
dl_cpt = 0
tab_dl = []
for tmp_dl in tmp_str:
if(len(str(tmp_dl)) > 0 and ("-" in tmp_dl) ):
#print(" ###### DATE LIEU = "+tmp_dl)
if (len(str(tmp_dl)) > 0 and ("-" in tmp_dl)):
# print(" ###### DATE LIEU = "+tmp_dl)
tab_date_lieu = tmp_dl.split('-')
if (len(tab_date_lieu) != 3):
if (len(tab_date_lieu) != 5):
return False, "Les Dates et Lieux de la formation " + str(
diction['external_code']) + " sont incorrectes. Le format attendu : " \
"jj/mm/aaaa-ville-code_postale;jj/mm/aaaa-ville2-code_postale29"
"jj/mm/aaaa-jj/mm/aaaa-ville-code_postale-adresse;jj/mm/aaaa-jj/mm/aaaa-ville-code_postale-adresse"
isdate = mycommon.CheckisDate( str(tab_date_lieu[0]))
if( isdate is False ):
isdate = mycommon.CheckisDate(str(tab_date_lieu[0]))
if (isdate is False):
mycommon.myprint(
str(inspect.stack()[0][3]) + " - les dates et lieux de la formation : A" + str(
diction['external_code']) + " sont incorrectes")
diction['external_code']) + " sont incorrectes 2")
return False, "Les Dates et Lieux de la formation " + str(
diction['external_code']) + " sont incorrectes. Le format attendu : " \
"jj/mm/aaaa-ville-code_postale;jj/mm/aaaa-ville2-code-postal21"
"jj/mm/aaaa-jj/mm/aaaa-ville-code_postale-adresse;jj/mm/aaaa-jj/mm/aaaa-ville-code_postale-adresse 3"
val_dl = {'date':str(tab_date_lieu[0]), 'ville':str(tab_date_lieu[1]), 'code_postal':str(tab_date_lieu[2])}
isdate_au = mycommon.CheckisDate(str(tab_date_lieu[1]))
if (isdate is False):
mycommon.myprint(
str(inspect.stack()[0][3]) + " - les dates et lieux de la formation : A" + str(
diction['external_code']) + " sont incorrectes 3")
return False, "Les Dates et Lieux de la formation " + str(
diction['external_code']) + " sont incorrectes. Le format attendu : " \
"jj/mm/aaaa-jj/mm/aaaa-ville-code_postale-adresse;jj/mm/aaaa-jj/mm/aaaa-ville-code_postale-adresse 2"
print("### isdate = " + str(tab_date_lieu[0]) + " CM isdate_au = " + str(tab_date_lieu[1]))
if (datetime.strptime(str(tab_date_lieu[0]), '%d/%m/%Y') >= datetime.strptime(
str(tab_date_lieu[1]), '%d/%m/%Y')):
mycommon.myprint(
str(inspect.stack()[0][
3]) + " - la date debut est posterieure à la date de fin pour la formation : " + str(
diction['external_code']) + " ")
return False, " La date debut est posterieure à la date de fin pour la formation : " + str(
diction['external_code']) + " "
mytoday = datetime.today().strftime("%d/%m/%Y")
if (datetime.strptime(str(tab_date_lieu[0]), '%d/%m/%Y') < datetime.strptime(str(mytoday),
'%d/%m/%Y')):
mycommon.myprint(
str(inspect.stack()[0][
3]) + " - la date debut est posterieure à la date du jour pour la formation : " + str(
diction['external_code']) + " ")
return False, " La date debut est posterieure à la date du jour pour la formation : " + str(
diction['external_code']) + " "
# On créé un identifiant unique par session
session_id = mycommon.create_token_urlsafe()
val_dl = {'date_du': str(tab_date_lieu[0]), 'date_au': str(tab_date_lieu[1]),
'ville': str(tab_date_lieu[2]), 'code_postal': str(tab_date_lieu[3]),
'adresse': str(tab_date_lieu[4]), 'session_id':str(session_id)}
tab_dl.append(val_dl)
#mydata['date_lieu'][dl_cpt] = {'date': str(tab_date_lieu[0]), 'ville': str(tab_date_lieu[1])}
#print(str(mydata['date_lieu'] ))
#print(" ######### date_lieu = " + str(tab_date_lieu[0]) + " ----- " + str(tab_date_lieu[1]))
# mydata['date_lieu'][dl_cpt] = {'date': str(tab_date_lieu[0]), 'ville': str(tab_date_lieu[1])}
# print(str(mydata['date_lieu'] ))
# print(" ######### date_lieu = " + str(tab_date_lieu[0]) + " ----- " + str(tab_date_lieu[1]))
dl_cpt = dl_cpt +1
dl_cpt = dl_cpt + 1
elif (len(str(tmp_dl)) > 0 and ("-" not in tmp_dl)):
return False, "Les Dates et Lieux de la formation " + str(
diction['external_code']) + " sont incorrectes. Le format attendu : " \
"jj/mm/aaaa-ville-code_postal;jj/mm/aaaa-ville2-code_postal22"
"jj/mm/aaaa-jj/mm/aaaa-ville-code_postale-adresse;jj/mm/aaaa-jj/mm/aaaa-ville-code_postale-adresse 1"
mydata['datelieu'] = tab_dl
@ -643,7 +679,9 @@ def update_class(diction):
mydata['zone_diffusion'] = {'country':tab_country, 'city':tab_city}
'''
Traitement date_lieu
Traitement date_lieu.
Date_lieu definit une session et au format :
date_du;data_au;ville;code_postal; adresse
'''
mydata['datelieu'] = ""
if ("date_lieu" in diction.keys()):
@ -653,51 +691,82 @@ def update_class(diction):
if (not tmp_str2.endswith(";")):
tmp_str2 = tmp_str2 + ";"
print("tmp_str2 = " + tmp_str2)
# print("tmp_str2 = " + tmp_str2)
if (";" not in tmp_str2):
mycommon.myprint(str(inspect.stack()[0][3]) + " - les dates et lieux de la formation : A" + str(
diction['external_code']) + " sont incorrectes")
mycommon.myprint(str(inspect.stack()[0][3]) + " - les dates et lieux de la formation : " + str(
diction['external_code']) + " sont incorrectes 1")
return False, "Les Dates et Lieux de la formation " + str(
diction['external_code']) + " sont incorrectes. Le format attendu : " \
"jj/mm/aaaa-ville-code_postale;jj/mm/aaaa-ville2-code_postale23"
"jj/mm/aaaa-jj/mm/aaaa-ville-code_postale-adresse;jj/mm/aaaa-jj/mm/aaaa-ville-code_postale-adresse"
tmp_str = tmp_str2.split(
";") # ==> ce qui va donner un tableau de : Country_Code-City : ['11/02/2012-paris-75009', '24/04/2022-marseille-13009',]
";") # ==> ce qui va donner un tableau de : Country_Code-City : ['11/02/2012-paris-75001', '24/04/2022-marseille-13002',]
dl_cpt = 0
tab_dl = []
for tmp_dl in tmp_str:
if(len(str(tmp_dl)) > 0 and ("-" in tmp_dl) ):
#print(" ###### DATE LIEU = "+tmp_dl)
if (len(str(tmp_dl)) > 0 and ("-" in tmp_dl)):
# print(" ###### DATE LIEU = "+tmp_dl)
tab_date_lieu = tmp_dl.split('-')
if( len(tab_date_lieu) != 3):
if (len(tab_date_lieu) != 5):
return False, "Les Dates et Lieux de la formation " + str(
diction['external_code']) + " sont incorrectes. Le format attendu : " \
"jj/mm/aaaa-ville-code_postale;jj/mm/aaaa-ville2-code_postale23"
"jj/mm/aaaa-jj/mm/aaaa-ville-code_postale-adresse;jj/mm/aaaa-jj/mm/aaaa-ville-code_postale-adresse"
isdate = mycommon.CheckisDate( str(tab_date_lieu[0]))
if( isdate is False ):
isdate = mycommon.CheckisDate(str(tab_date_lieu[0]))
if (isdate is False):
mycommon.myprint(
str(inspect.stack()[0][3]) + " - les dates et lieux de la formation : A" + str(
diction['external_code']) + " sont incorrectes")
diction['external_code']) + " sont incorrectes 2")
return False, "Les Dates et Lieux de la formation " + str(
diction['external_code']) + " sont incorrectes. Le format attendu : " \
"jj/mm/aaaa-ville-code_postale;jj/mm/aaaa-ville2-code_postal25"
"jj/mm/aaaa-jj/mm/aaaa-ville-code_postale-adresse;jj/mm/aaaa-jj/mm/aaaa-ville-code_postale-adresse 3"
val_dl = {'date':str(tab_date_lieu[0]), 'ville':str(tab_date_lieu[1]), 'code_postal':str(tab_date_lieu[2])}
isdate_au = mycommon.CheckisDate(str(tab_date_lieu[1]))
if (isdate is False):
mycommon.myprint(
str(inspect.stack()[0][3]) + " - les dates et lieux de la formation : A" + str(
diction['external_code']) + " sont incorrectes 3")
return False, "Les Dates et Lieux de la formation " + str(
diction['external_code']) + " sont incorrectes. Le format attendu : " \
"jj/mm/aaaa-jj/mm/aaaa-ville-code_postale-adresse;jj/mm/aaaa-jj/mm/aaaa-ville-code_postale-adresse 2"
print("### isdate = " + str(tab_date_lieu[0]) + " CM isdate_au = " + str(tab_date_lieu[1]))
if (datetime.strptime(str(tab_date_lieu[0]), '%d/%m/%Y') >= datetime.strptime(str(tab_date_lieu[1]), '%d/%m/%Y')):
mycommon.myprint(
str(inspect.stack()[0][
3]) + " - la date debut est posterieure à la date de fin pour la formation : " + str(
diction['external_code']) + " ")
return False, " La date debut est posterieure à la date de fin pour la formation : " + str(
diction['external_code']) + " "
mytoday = datetime.today().strftime("%d/%m/%Y")
if (datetime.strptime(str(tab_date_lieu[0]), '%d/%m/%Y') < datetime.strptime(str(mytoday), '%d/%m/%Y')):
mycommon.myprint(
str(inspect.stack()[0][
3]) + " - la date debut est posterieure à la date du jour pour la formation : " + str(
diction['external_code']) + " ")
return False, " La date debut est posterieure à la date du jour pour la formation : " + str(
diction['external_code']) + " "
# On créé un identifiant unique par session
session_id = mycommon.create_token_urlsafe()
val_dl = {'date_du': str(tab_date_lieu[0]), 'date_au': str(tab_date_lieu[1]),
'ville': str(tab_date_lieu[2]), 'code_postal': str(tab_date_lieu[3]),
'adresse': str(tab_date_lieu[4]), 'session_id':str(session_id)}
tab_dl.append(val_dl)
#mydata['date_lieu'][dl_cpt] = {'date': str(tab_date_lieu[0]), 'ville': str(tab_date_lieu[1])}
#print(str(mydata['date_lieu'] ))
#print(" ######### date_lieu = " + str(tab_date_lieu[0]) + " ----- " + str(tab_date_lieu[1]))
# mydata['date_lieu'][dl_cpt] = {'date': str(tab_date_lieu[0]), 'ville': str(tab_date_lieu[1])}
# print(str(mydata['date_lieu'] ))
# print(" ######### date_lieu = " + str(tab_date_lieu[0]) + " ----- " + str(tab_date_lieu[1]))
dl_cpt = dl_cpt +1
dl_cpt = dl_cpt + 1
elif ( len(str(tmp_dl)) > 0 and ("-" not in tmp_dl) ):
elif (len(str(tmp_dl)) > 0 and ("-" not in tmp_dl)):
return False, "Les Dates et Lieux de la formation " + str(
diction['external_code']) + " sont incorrectes. Le format attendu : " \
"jj/mm/aaaa-ville-code_postale;jj/mm/aaaa-ville2-code_postale26"
"jj/mm/aaaa-jj/mm/aaaa-ville-code_postale-adresse;jj/mm/aaaa-jj/mm/aaaa-ville-code_postale-adresse 1"
mydata['datelieu'] = tab_dl
@ -1537,7 +1606,6 @@ def get_class(diction):
retVal['objectif'] = tmp_str[:MYSY_GV.MAX_CARACT_DETAIL] + " ..."
if ("programme" in retVal.keys()):
tmp_str = retVal['programme']
if (len(retVal['programme']) > MYSY_GV.MAX_CARACT_DETAIL):
@ -2566,3 +2634,5 @@ def get_associated_class_of_partnair(diction):
exc_type, exc_obj, exc_tb = sys.exc_info()
mycommon.myprint(str(inspect.stack()[0][3]) + " -" + str(e)+" - Line : "+ str(exc_tb.tb_lineno) )
return False, " Impossible de recuperer la formation"

View File

@ -1,3 +1,4 @@
,index,mots,occurence,moyenne,id_formation,source_field
0,0,logo,1,0.5,LS_PA1201913,title
1,1,realiser,1,0.5,LS_PA1201913,title
0,0,effect,1,0.33,VP14120,title
1,1,essentiel,1,0.33,VP14120,title
2,2,after,1,0.33,VP14120,title

1 index mots occurence moyenne id_formation source_field
2 0 0 logo effect 1 0.5 0.33 LS_PA1201913 VP14120 title
3 1 1 realiser essentiel 1 0.5 0.33 LS_PA1201913 VP14120 title
4 2 2 after 1 0.33 VP14120 title

View File

@ -1,3 +1,4 @@
mots occurence moyenne id_formation source_field
0 logo 1 0.5 LS_PA1201913 title
1 realiser 1 0.5 LS_PA1201913 title
mots occurence moyenne id_formation source_field
0 effect 1 0.33 VP14120 title
1 essentiel 1 0.33 VP14120 title
2 after 1 0.33 VP14120 title

230
emargement.py Normal file
View File

@ -0,0 +1,230 @@
"""
Ce ficher gerer l'emargement à une session de formation
"""
import pymongo
from pymongo import MongoClient
import json
from bson import ObjectId
import re
from datetime import datetime
import prj_common as mycommon
import secrets
import inspect
import sys, os
import csv
import pandas as pd
from pymongo import ReturnDocument
import GlobalVariable as MYSY_GV
from math import isnan
import GlobalVariable as MYSY_GV
from datetime import timedelta
"""
Creation du tableau d'emargement
Au debut de la session, le formateur clique sur un bouton qui va
aller créer le tableau d'emargement.
la finction prend en argement :
- url_formation
- session_id
"""
def CreateTableauEmargement(diction):
try:
'''
# Verification que les champs reçus dans l'API sont bien dans la liste des champs autorisés
# Cela evite le cas ou une entité tierce ajouter les valeurs inconnu dans l'API
# Ici on doit mettre tous les champs possible (obligatoire ou non) de la BDD dans la liste
# field_list.
'''
field_list = ['class_internal_url', 'session_id', 'token']
incom_keys = diction.keys()
for val in incom_keys:
if val not in field_list:
mycommon.myprint(str(inspect.stack()[0][
3]) + " - Creation partner account : Le champ '" + val + "' n'est pas autorisé, Creation partenaire annulée")
return False, "Impossible de créer la liste d'emargement. Toutes les informations fournies ne sont pas valables"
"""
Verification de la liste des champs obligatoires
"""
field_list_obligatoire = ['class_internal_url', 'session_id', 'token']
for val in field_list_obligatoire:
if val not in diction:
mycommon.myprint(
str(inspect.stack()[0][3]) + " - : La valeur '" + val + "' n'est pas presente dans liste ")
return False, "Impossible de créer la liste d'emargement, Toutes les informations necessaires n'ont pas été fournies"
mydata = {}
my_token = ""
if ("token" in diction.keys()):
if diction['token']:
my_token = diction['token']
class_internal_url = ""
if ("class_internal_url" in diction.keys()):
if diction['class_internal_url']:
class_internal_url = diction['class_internal_url']
partner_recid = mycommon.get_parnter_recid_from_token(my_token)
if (partner_recid is False):
mycommon.myprint(str(inspect.stack()[0][3]) + " - Impossible de créer la liste d'emargement ")
return False, "Impossible de créer la liste d'emargement "
session_id = ""
if ("session_id" in diction.keys()):
if diction['session_id']:
mydata['session_id'] = diction['session_id']
session_id = diction['session_id']
"""
Recuperation des info de la session de formation
"""
date_du = ""
date_au = ""
ville = ""
code_postal = ""
adresse = ""
for tmp_val in MYSY_GV.dbname['myclass'].find({"internal_url":str(class_internal_url),
"datelieu.session_id": str(session_id)}):
tmp_date_lieu = tmp_val['datelieu']
for val in tmp_date_lieu:
if (val['session_id'] == str(session_id)):
date_du = val['date_du']
date_au = val['date_au']
ville = val['ville']
code_postal = val['code_postal']
code_postal = val['adresse']
is_date_du = mycommon.CheckisDate(date_du)
is_date_au = mycommon.CheckisDate(date_au)
if( is_date_du is False or is_date_au is False):
mycommon.myprint(
str(inspect.stack()[0][3]) + " - Impossible de créer la liste d'emargement, Les dates de la session sont incorrectes ")
return False, " Impossible de créer la liste d'emargement, Les dates de la session sont incorrectes "
date_emargement = datetime.strptime(str(date_du), '%d/%m/%Y')
i = 0 # compteur de securité
liste_date = []
print(" Date du = "+str(date_du)+" CMP Date au ="+str(date_au))
while( date_emargement < datetime.strptime(str(date_au), '%d/%m/%Y') and i < 360):
date_10 = str(date_emargement)
liste_date.append(date_10[0:10])
i = i + 1
date_emargement = date_emargement + timedelta(days=1)
##print(" ### date_emargement = "+str(date_emargement) + " < "+str(datetime.strptime(str(date_au), '%d/%m/%Y') ))
print("#### Liste Date = "+str(liste_date))
coll_emargement = MYSY_GV.dbname['emargement']
#Recuperation de la liste des participants dont l'inscription est validée
for tmp_val in MYSY_GV.dbname['inscription'].find({'session_id':str(session_id),
'class_internal_url':str(class_internal_url),
'status':'1'} ):
my_local_data = {}
my_local_data['email'] = tmp_val['email']
my_local_data['nom'] = tmp_val['nom']
my_local_data['prenom'] = tmp_val['prenom']
my_local_data['session_id'] = tmp_val['session_id']
my_local_data['class_internal_url'] = tmp_val['class_internal_url']
my_local_data['date_update'] = str(datetime.now())
for local_date in liste_date :
new_my_local_data = {}
new_my_local_data['email'] = tmp_val['email']
new_my_local_data['nom'] = tmp_val['nom']
new_my_local_data['prenom'] = tmp_val['prenom']
new_my_local_data['session_id'] = tmp_val['session_id']
new_my_local_data['class_internal_url'] = tmp_val['class_internal_url']
new_my_local_data['date_update'] = str(datetime.now())
new_my_local_data['date'] = str(local_date)
new_my_local_data['matin'] = '0'
new_my_local_data['apresmidi'] = '0'
print("### emargement insertion de : "+str(new_my_local_data))
coll_emargement.insert_one(new_my_local_data)
return True, "ok"
except Exception as e:
exc_type, exc_obj, exc_tb = sys.exc_info()
mycommon.myprint(str(inspect.stack()[0][3]) + " -" + str(e) + " - ERRORRRR AT Line : " + str(exc_tb.tb_lineno))
return False, "Impossible de créer le tableau d'emargement"
"""
Cette fonction recuperer la liste d'emargement
"""
def GetTableauEmargement(diction):
try:
'''
# Verification que les champs reçus dans l'API sont bien dans la liste des champs autorisés
# Cela evite le cas ou une entité tierce ajouter les valeurs inconnu dans l'API
# Ici on doit mettre tous les champs possible (obligatoire ou non) de la BDD dans la liste
# field_list.
'''
field_list = ['class_internal_url', 'session_id', 'token']
incom_keys = diction.keys()
for val in incom_keys:
if val not in field_list:
mycommon.myprint(str(inspect.stack()[0][
3]) + " - Creation partner account : Le champ '" + val + "' n'est pas autorisé, Creation partenaire annulée")
return False, "Impossible de créer la liste d'emargement. Toutes les informations fournies ne sont pas valables"
"""
Verification de la liste des champs obligatoires
"""
field_list_obligatoire = ['class_internal_url', 'session_id', 'token']
for val in field_list_obligatoire:
if val not in diction:
mycommon.myprint(
str(inspect.stack()[0][3]) + " - : La valeur '" + val + "' n'est pas presente dans liste ")
return False, "Impossible de créer la liste d'emargement, Toutes les informations necessaires n'ont pas été fournies"
mydata = {}
my_token = ""
if ("token" in diction.keys()):
if diction['token']:
my_token = diction['token']
class_internal_url = ""
if ("class_internal_url" in diction.keys()):
if diction['class_internal_url']:
class_internal_url = diction['class_internal_url']
partner_recid = mycommon.get_parnter_recid_from_token(my_token)
if (partner_recid is False):
mycommon.myprint(str(inspect.stack()[0][3]) + " - Impossible de créer la liste d'emargement ")
return False, "Impossible de créer la liste d'emargement "
session_id = ""
if ("session_id" in diction.keys()):
if diction['session_id']:
mydata['session_id'] = diction['session_id']
session_id = diction['session_id']
val_tmp = 1
RetObject = []
for retval in MYSY_GV.dbname['emargement'].find({'session_id':str(session_id),
'class_internal_url':str(class_internal_url)}).sort([("date",pymongo.ASCENDING),]):
user = retval
user['id'] = str(val_tmp)
RetObject.append(mycommon.JSONEncoder().encode(user))
val_tmp = val_tmp + 1
return True, RetObject
except Exception as e:
exc_type, exc_obj, exc_tb = sys.exc_info()
mycommon.myprint(str(inspect.stack()[0][3]) + " -" + str(e) + " - ERRORRRR AT Line : " + str(exc_tb.tb_lineno))
return False, "Impossible de recuperer le tableau d'emargement"

27
main.py
View File

@ -30,6 +30,7 @@ import ela_factures_mgt as factures
import statistics as Stat
import strype_payement as Stripe
import Inscription_mgt as inscription
import emargement as emargement
app = Flask(__name__)
@ -1753,6 +1754,32 @@ def GetAllClassStagiaire():
return jsonify(status=localStatus, message=message )
"""
Cette API Crée la liste d'emargement
"""
@app.route('/myclass/api/CreateTableauEmargement/', methods=['POST','GET'])
@crossdomain(origin='*')
def CreateTableauEmargement():
# On recupere le corps (payload) de la requete
payload = request.form.to_dict()
print(" ### CreateTableauEmargement : payload = ",payload)
localStatus, message= emargement.CreateTableauEmargement(payload)
return jsonify(status=localStatus, message=message )
"""
API de recuperation du tableau d'emargement d'un session de formation
"""
@app.route('/myclass/api/GetTableauEmargement/', methods=['POST','GET'])
@crossdomain(origin='*')
def GetTableauEmargement():
# On recupere le corps (payload) de la requete
payload = request.form.to_dict()
print(" ### GetTableauEmargement : payload = ",payload)
localStatus, message= emargement.GetTableauEmargement(payload)
return jsonify(status=localStatus, message=message )
if __name__ == '__main__':
print(" debut api")
context = SSL.Context(SSL.SSLv23_METHOD)

View File

@ -464,7 +464,7 @@ Cette fonction verifie si une chaine est de type date jj/mm/aaaa
def CheckisDate(mydate):
# mydate doit etre au format : jj/mm/aaaa
try:
print(" analyse de "+mydate)
#print(" analyse de "+mydate)
val = datetime.strptime(mydate, '%d/%m/%Y')
return True