11/02/23 - 20h
parent
406a1c0177
commit
8bc7567884
|
@ -1,13 +1,16 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="1122d9e2-679f-46d6-8c4f-97e9ae4041b5" name="Changes" comment="09/02/23 - 11h">
|
||||
<list default="true" id="1122d9e2-679f-46d6-8c4f-97e9ae4041b5" name="Changes" comment="10/02/23 - 12h">
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Inscription_mgt.py" beforeDir="false" afterPath="$PROJECT_DIR$/Inscription_mgt.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Log/log_file.log" beforeDir="false" afterPath="$PROJECT_DIR$/Log/log_file.log" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/email_mgt.py" beforeDir="false" afterPath="$PROJECT_DIR$/email_mgt.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/main.py" beforeDir="false" afterPath="$PROJECT_DIR$/main.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/tools_cherif/tools_cherif.py" beforeDir="false" afterPath="$PROJECT_DIR$/tools_cherif/tools_cherif.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Session_Formation.py" beforeDir="false" afterPath="$PROJECT_DIR$/Session_Formation.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Template/Mysy_attestion_modele2_tpl.html" beforeDir="false" afterPath="$PROJECT_DIR$/Template/Mysy_attestion_modele2_tpl.html" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/class_mgt.py" beforeDir="false" afterPath="$PROJECT_DIR$/class_mgt.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/data_indexees.csv" beforeDir="false" afterPath="$PROJECT_DIR$/data_indexees.csv" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/ela_output_test_file_pandas_2.txt" beforeDir="false" afterPath="$PROJECT_DIR$/ela_output_test_file_pandas_2.txt" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/email_inscription_mgt.py" beforeDir="false" afterPath="$PROJECT_DIR$/email_inscription_mgt.py" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
|
@ -283,7 +286,14 @@
|
|||
<option name="project" value="LOCAL" />
|
||||
<updated>1675938338905</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="31" />
|
||||
<task id="LOCAL-00031" summary="10/02/23 - 12h">
|
||||
<created>1676027348546</created>
|
||||
<option name="number" value="00031" />
|
||||
<option name="presentableId" value="LOCAL-00031" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1676027348546</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="32" />
|
||||
<servers />
|
||||
</component>
|
||||
<component name="Vcs.Log.Tabs.Properties">
|
||||
|
@ -298,7 +308,6 @@
|
|||
</option>
|
||||
</component>
|
||||
<component name="VcsManagerConfiguration">
|
||||
<MESSAGE value="23/11/22 - 22h30" />
|
||||
<MESSAGE value="26/11/22 - 10h30" />
|
||||
<MESSAGE value="26/11/22 - 23h30" />
|
||||
<MESSAGE value="15/12/2022 - 22h00" />
|
||||
|
@ -323,7 +332,8 @@
|
|||
<MESSAGE value="01/02/23 - 22h" />
|
||||
<MESSAGE value="05/02/23 - 20h" />
|
||||
<MESSAGE value="09/02/23 - 11h" />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="09/02/23 - 11h" />
|
||||
<MESSAGE value="10/02/23 - 12h" />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="10/02/23 - 12h" />
|
||||
</component>
|
||||
<component name="XDebuggerManager">
|
||||
<breakpoint-manager>
|
||||
|
|
|
@ -2024,13 +2024,27 @@ def SendAttendeeCertification(diction):
|
|||
my_retrun_dict['email'] = local_Insc_retval['email']
|
||||
|
||||
# Recuperation des infotrmations de la formation
|
||||
print(" ## str(local_Insc_retval['class_internal_url']) = ", str(local_Insc_retval['class_internal_url']))
|
||||
##print(" ## str(local_Insc_retval['class_internal_url']) = ", str(local_Insc_retval['class_internal_url']))
|
||||
local_formation = MYSY_GV.dbname['myclass'].find_one(
|
||||
{'internal_url': str(local_Insc_retval['class_internal_url'])})
|
||||
my_retrun_dict['title'] = local_formation['title']
|
||||
|
||||
"""
|
||||
field_list_obligatoire = ['partner_recid', 'session_id', 'class_internal_url', 'class_title' ,
|
||||
'email_participant']
|
||||
"""
|
||||
attestation_dict = {}
|
||||
attestation_dict['partner_recid'] = str(partner_recid)
|
||||
attestation_dict['session_id'] = str(diction['session_id'])
|
||||
attestation_dict['class_internal_url'] = str(local_Insc_retval['class_internal_url'])
|
||||
attestation_dict['class_title'] = local_formation['title']
|
||||
attestation_dict['email_participant'] = local_Insc_retval['email']
|
||||
attestation_dict['attestation_tmpl'] = attestation_certificat['template_name']
|
||||
|
||||
print(" ### attestation_dict = ", attestation_dict)
|
||||
|
||||
# Envoi de l'email de notification au formateur
|
||||
local_status, local_message = email_session.SendAttestion_to_attendee_by_email(my_retrun_dict)
|
||||
local_status, local_message = email_session.SendAttestion_to_attendee_by_email(attestation_dict)
|
||||
|
||||
return local_status, str(local_message)
|
||||
|
||||
|
|
5282
Log/log_file.log
5282
Log/log_file.log
File diff suppressed because it is too large
Load Diff
|
@ -41,7 +41,7 @@ def Add_Update_SessionFormation(diction):
|
|||
field_list = ['token', 'date_debut', 'date_fin', 'nb_participant', 'formation_session_id', 'adresse',
|
||||
'code_postal', 'ville', 'formateur', 'code_session',
|
||||
'class_internal_url', 'session_status', 'date_debut_inscription', 'date_fin_inscription',
|
||||
'attestation_certif', "distantiel", "presentiel", "prix_session"]
|
||||
'attestation_certif', "distantiel", "presentiel", "prix_session", 'contenu_ftion']
|
||||
incom_keys = diction.keys()
|
||||
for val in incom_keys:
|
||||
if val not in field_list:
|
||||
|
@ -70,16 +70,14 @@ def Add_Update_SessionFormation(diction):
|
|||
|
||||
code_session = ""
|
||||
if ("code_session" in diction.keys()):
|
||||
if diction['code_session']:
|
||||
mydata['code_session'] = diction['code_session']
|
||||
query_key['code_session'] = diction['code_session']
|
||||
mydata['code_session'] = diction['code_session']
|
||||
query_key['code_session'] = diction['code_session']
|
||||
|
||||
|
||||
class_internal_url = ""
|
||||
if ("class_internal_url" in diction.keys()):
|
||||
if diction['class_internal_url']:
|
||||
mydata['class_internal_url'] = diction['class_internal_url']
|
||||
class_internal_url = diction['class_internal_url']
|
||||
mydata['class_internal_url'] = diction['class_internal_url']
|
||||
class_internal_url = diction['class_internal_url']
|
||||
|
||||
|
||||
partner_recid = mycommon.get_parnter_recid_from_token(my_token)
|
||||
|
@ -89,39 +87,31 @@ def Add_Update_SessionFormation(diction):
|
|||
|
||||
formation_session_id = ""
|
||||
if ("formation_session_id" in diction.keys()):
|
||||
if diction['formation_session_id']:
|
||||
mydata['formation_session_id'] = diction['formation_session_id']
|
||||
|
||||
session_id = diction['formation_session_id']
|
||||
mydata['formation_session_id'] = diction['formation_session_id']
|
||||
session_id = diction['formation_session_id']
|
||||
|
||||
|
||||
if ("date_debut" in diction.keys()):
|
||||
if diction['date_debut']:
|
||||
mydata['date_debut'] = diction['date_debut']
|
||||
mydata['date_debut'] = diction['date_debut']
|
||||
|
||||
|
||||
if ("date_fin" in diction.keys()):
|
||||
if diction['date_fin']:
|
||||
mydata['date_fin'] = diction['date_fin']
|
||||
mydata['date_fin'] = diction['date_fin']
|
||||
|
||||
|
||||
if ("distantiel" in diction.keys()):
|
||||
if diction['distantiel']:
|
||||
mydata['distantiel'] = diction['distantiel']
|
||||
mydata['distantiel'] = diction['distantiel']
|
||||
|
||||
|
||||
if ("presentiel" in diction.keys()):
|
||||
if diction['presentiel']:
|
||||
mydata['presentiel'] = diction['presentiel']
|
||||
mydata['presentiel'] = diction['presentiel']
|
||||
|
||||
if ("nb_participant" in diction.keys()):
|
||||
if diction['nb_participant']:
|
||||
mydata['nb_participant'] = diction['nb_participant']
|
||||
mydata['nb_participant'] = diction['nb_participant']
|
||||
|
||||
|
||||
if ("prix_session" in diction.keys()):
|
||||
if diction['prix_session']:
|
||||
mydata['prix_session'] = diction['prix_session']
|
||||
mydata['prix_session'] = diction['prix_session']
|
||||
|
||||
|
||||
if ("adresse" in diction.keys()):
|
||||
|
@ -137,8 +127,6 @@ def Add_Update_SessionFormation(diction):
|
|||
else:
|
||||
mydata['code_postal'] = ""
|
||||
|
||||
|
||||
|
||||
if ("ville" in diction.keys()):
|
||||
if diction['ville']:
|
||||
mydata['ville'] = diction['ville']
|
||||
|
@ -146,25 +134,23 @@ def Add_Update_SessionFormation(diction):
|
|||
mydata['ville'] = ""
|
||||
|
||||
if ("attestation_certif" in diction.keys()):
|
||||
if diction['attestation_certif']:
|
||||
mydata['attestation_certif'] = diction['attestation_certif']
|
||||
mydata['attestation_certif'] = diction['attestation_certif']
|
||||
|
||||
|
||||
if ("session_status" in diction.keys()):
|
||||
if diction['session_status']:
|
||||
mydata['session_status'] = diction['session_status']
|
||||
mydata['session_status'] = diction['session_status']
|
||||
|
||||
if ("date_debut_inscription" in diction.keys()):
|
||||
if diction['date_debut_inscription']:
|
||||
mydata['date_debut_inscription'] = diction['date_debut_inscription']
|
||||
mydata['date_debut_inscription'] = diction['date_debut_inscription']
|
||||
|
||||
if ("date_fin_inscription" in diction.keys()):
|
||||
if diction['date_fin_inscription']:
|
||||
mydata['date_fin_inscription'] = diction['date_fin_inscription']
|
||||
mydata['date_fin_inscription'] = diction['date_fin_inscription']
|
||||
|
||||
if ("formateur" in diction.keys()):
|
||||
if diction['formateur']:
|
||||
mydata['formateur'] = diction['formateur']
|
||||
mydata['formateur'] = diction['formateur']
|
||||
|
||||
if ("contenu_ftion" in diction.keys()):
|
||||
mydata['contenu_ftion'] = diction['contenu_ftion']
|
||||
|
||||
|
||||
mydata['date_update'] = str(datetime.now())
|
||||
|
@ -531,7 +517,7 @@ def Add_Update_SessionFormation_mass(file=None, Folder=None, diction=None):
|
|||
'''
|
||||
field_list = ['date_debut', 'date_fin', 'nb_participant', 'adresse', 'code_postal', 'ville',
|
||||
'session_status', 'date_debut_inscription', 'date_fin_inscription', 'attestation', 'formateur',
|
||||
'code_session', "distanciel", "presentiel", "prix_session"]
|
||||
'code_session', "distanciel", "presentiel", "prix_session", 'contenu_ftion']
|
||||
|
||||
# Controle du nombre de lignes dans le fichier.
|
||||
total_rows = len(df)
|
||||
|
@ -671,6 +657,12 @@ def Add_Update_SessionFormation_mass(file=None, Folder=None, diction=None):
|
|||
local_ville = str(df['ville'].values[n]).strip()
|
||||
mydata['ville'] = local_ville
|
||||
|
||||
contenu_ftion = ""
|
||||
if ("contenu_ftion" in df.keys()):
|
||||
if (str(df['contenu_ftion'].values[n])):
|
||||
contenu_ftion = str(df['contenu_ftion'].values[n]).strip()
|
||||
mydata['contenu_ftion'] = contenu_ftion
|
||||
|
||||
#mydata['ville'] = str(df['ville'].values[n]).strip()
|
||||
|
||||
local_attestation_certif = ""
|
||||
|
|
|
@ -26,12 +26,11 @@ border: 2px solid; ">
|
|||
serif;color:#454349;font-size:1.2rem; line-height: 2rem;border: none;">
|
||||
<p style="border: none; text-align: left;">
|
||||
{% if json_data.num_declation|length > 5 %}
|
||||
Par la presente, l'oganisme de formation {{json_data.partner}} au Numero de declaration
|
||||
{{json_data.num_declation}} <br />
|
||||
Par la presente, l'oganisme de formation {{json_data.partner}} au Numero de déclaration {{json_data.num_declation}} <br />
|
||||
|
||||
{% else %}
|
||||
|
||||
Par la presente, l'oganisme de formation {{json_data.partner}} au Numero de SIREN
|
||||
Par la presente, l'oganisme de formation {{json_data.partner}} au Numero de SIRET
|
||||
{{json_data.mysy_partner_siren}} <br />
|
||||
|
||||
{% endif %}
|
||||
|
@ -75,15 +74,19 @@ border: 2px solid; ">
|
|||
<div
|
||||
style="padding:12px 0px;text-align:left;font-family:Georgia, 'Times New Roman', Times, serif;color:#454349;font-size:1.2rem">
|
||||
|
||||
<div style="width: 100%; margin-bottom: 5rem;">
|
||||
Contenus de la formation : <br />
|
||||
{{json_data.objectif}}
|
||||
<div style="width: 100%; margin-bottom: 2rem;">
|
||||
Contenu de la formation : <br />
|
||||
<p style=" width: 80%; margin-left: 1rem;font-size: 12px;">
|
||||
{{json_data.contenu_ftion}}
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div style="width: 30%; float: left;">
|
||||
Fait à {{json_data.mysy_partner_adr_city}} le {{json_data.date_jour}}
|
||||
</div>
|
||||
<div style="width: 70%; float: left;text-align: right;">
|
||||
<div style="width: 65%; float: left;text-align: right;">
|
||||
Pour l'organisme de formation <br />
|
||||
|
||||
{% if json_data.cachet_signature %}
|
||||
|
|
|
@ -103,7 +103,7 @@ def add_class(diction):
|
|||
part_status, part_pack, part_pack_nb_training_auto = mycommon.Partner_Get_pack_nbTraining(user_recid)
|
||||
if( part_status is False):
|
||||
mycommon.myprint(str(inspect.stack()[0][3]) + " - Impossible de recuperer le pack et le nombre de formation du partenaire")
|
||||
return False, "Votre pack / abonnement ne permet pas créer les formations. Verifiez votre abonnement "
|
||||
return False, "Votre pack / abonnement ne permet pas de créer les formations. Verifiez votre abonnement "
|
||||
"""
|
||||
Recuperation du nombre de formations actif de ce partner
|
||||
"""
|
||||
|
@ -1024,7 +1024,7 @@ def update_class(diction):
|
|||
if (part_status is False):
|
||||
mycommon.myprint(str(inspect.stack()[0][
|
||||
3]) + " - Impossible de recuperer le pack et le nombre de formation du partenaire")
|
||||
return False, "Votre pack / abonnement ne permet pas créer les formations. Verifiez votre abonnement "
|
||||
return False, "Votre pack / abonnement ne permet pas de créer les formations. Verifiez votre abonnement "
|
||||
|
||||
|
||||
coll_pack = MYSY_GV.dbname['pack']
|
||||
|
@ -2678,7 +2678,7 @@ def add_class_mass(file=None, Folder=None, diction=None):
|
|||
if (part_status is False):
|
||||
mycommon.myprint(str(
|
||||
inspect.stack()[0][3]) + " - Impossible de recuperer le pack et le nombre de formations du partenaire")
|
||||
return False, "Votre pack / abonnement ne permet pas créer les formations. Verifiez votre abonnement "
|
||||
return False, "Votre pack / abonnement ne permet pas de créer les formations. Verifiez votre abonnement "
|
||||
|
||||
"""
|
||||
Recuperation du nombre de formations actif de ce partner
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
,index,mots,occurence,moyenne,id_formation,source_field
|
||||
0,0,aromatherapie,1,0.33,MYSY_0004,title
|
||||
1,1,integrative,1,0.33,MYSY_0004,title
|
||||
2,2,praticien,1,0.33,MYSY_0004,title
|
||||
0,0,belt,1,0.17,MYSY_0001,title
|
||||
1,1,ecam,1,0.17,MYSY_0001,title
|
||||
2,2,yellow,1,0.17,MYSY_0001,title
|
||||
3,3,deploiement,1,0.17,MYSY_0001,title
|
||||
4,4,expert,1,0.17,MYSY_0001,title
|
||||
5,5,lean,1,0.17,MYSY_0001,title
|
||||
|
|
|
|
@ -1,4 +1,3 @@
|
|||
mots occurence moyenne id_formation source_field
|
||||
0 aromatherapie 1 0.33 MYSY_0004 title
|
||||
1 integrative 1 0.33 MYSY_0004 title
|
||||
2 praticien 1 0.33 MYSY_0004 title
|
||||
Empty DataFrame
|
||||
Columns: [mots, occurence, moyenne, id_formation, source_field]
|
||||
Index: []
|
|
@ -8,7 +8,7 @@ import locale
|
|||
import datetime
|
||||
import inspect
|
||||
import sys, os
|
||||
|
||||
from email import encoders
|
||||
from bson import ObjectId
|
||||
from pymongo import ReturnDocument
|
||||
from xhtml2pdf import pisa
|
||||
|
@ -580,8 +580,8 @@ def SendAttestion_to_attendee_by_email(diction):
|
|||
"""
|
||||
Verification de la liste des champs obligatoires
|
||||
"""
|
||||
field_list_obligatoire = ['nom', 'prenom', 'email', 'date_du', 'date_au', 'adresse', 'title',
|
||||
'attestation_tmpl', 'inscription_id']
|
||||
field_list_obligatoire = ['partner_recid', 'session_id', 'class_internal_url', 'class_title' ,
|
||||
'email_participant', 'attestation_tmpl']
|
||||
|
||||
for val in field_list_obligatoire:
|
||||
if val not in diction:
|
||||
|
@ -594,10 +594,96 @@ def SendAttestion_to_attendee_by_email(diction):
|
|||
|
||||
msg = MIMEMultipart("alternative")
|
||||
|
||||
## Recuperation des données du partenaire
|
||||
local_partnair = MYSY_GV.dbname['partnair_account'].find_one({'recid':str(diction['partner_recid']),
|
||||
'active':'1', 'locked':'0'})
|
||||
if( local_partnair is None ):
|
||||
mycommon.myprint(
|
||||
str(inspect.stack()[0][3]) + " - Impossible de recuperer les données du partenaire")
|
||||
return False, " Impossible de recuperer les données du partenaire "
|
||||
|
||||
mysy_partner_nom = ""
|
||||
if ("nom" in local_partnair.keys()):
|
||||
mysy_partner_nom = str(local_partnair['nom'])
|
||||
|
||||
mysy_partner_num_declation = ""
|
||||
if ("num_nda" in local_partnair.keys()):
|
||||
mysy_partner_num_declation = str(local_partnair['num_nda'])
|
||||
|
||||
mysy_partner_adr_city = ""
|
||||
if ("adr_city" in local_partnair.keys()):
|
||||
mysy_partner_adr_city = str(local_partnair['adr_city'])
|
||||
|
||||
## Recuperation des données de l'inscrit
|
||||
local_inscription = MYSY_GV.dbname['inscription'].find_one({'session_id': str(diction['session_id']),
|
||||
'class_internal_url': str(diction['class_internal_url']),
|
||||
'email':str(diction['email_participant'])})
|
||||
if (local_inscription is None):
|
||||
mycommon.myprint(
|
||||
str(inspect.stack()[0][3]) + " - Impossible de recuperer les données du participants")
|
||||
return False, " Impossible de recuperer les données du participants "
|
||||
|
||||
nom = ""
|
||||
if ("nom" in local_inscription.keys()):
|
||||
nom = str(local_inscription['nom'])
|
||||
|
||||
prenom = ""
|
||||
if ("prenom" in local_inscription.keys()):
|
||||
prenom = str(local_inscription['prenom'])
|
||||
|
||||
date_du = ""
|
||||
if ("date_du" in local_inscription.keys()):
|
||||
date_du = str(local_inscription['date_du'])[0:10]
|
||||
|
||||
date_au = ""
|
||||
if ("date_au" in local_inscription.keys()):
|
||||
date_au = str(local_inscription['date_au'])[0:10]
|
||||
|
||||
ville = ""
|
||||
if ("ville" in local_inscription.keys()):
|
||||
ville = str(local_inscription['ville'])
|
||||
|
||||
code_postal = ""
|
||||
if ("code_postal" in local_inscription.keys()):
|
||||
code_postal = str(local_inscription['code_postal'])
|
||||
|
||||
adresse = ""
|
||||
if ("adresse" in local_inscription.keys()):
|
||||
adresse = str(local_inscription['adresse'])
|
||||
|
||||
## Recuperation des données de la session
|
||||
local_session = MYSY_GV.dbname['session_formation'].find_one({'code_session': str(diction['session_id']),
|
||||
'class_internal_url': str(
|
||||
diction['class_internal_url']),
|
||||
'valide':'1'})
|
||||
if (local_session is None):
|
||||
mycommon.myprint(
|
||||
str(inspect.stack()[0][3]) + " - Impossible de recuperer les données de la session")
|
||||
return False, " Impossible de recuperer les données de la session "
|
||||
|
||||
formateur = ""
|
||||
if ("formateur" in local_session.keys()):
|
||||
formateur = str(local_session['formateur'])
|
||||
|
||||
presentiel = ""
|
||||
if ("presentiel" in local_session.keys()):
|
||||
presentiel = str(local_session['presentiel'])
|
||||
|
||||
distantiel = ""
|
||||
if ("distantiel" in local_session.keys()):
|
||||
distantiel = str(local_session['distantiel'])
|
||||
|
||||
contenu_ftion = ""
|
||||
if ("contenu_ftion" in local_session.keys()):
|
||||
contenu_ftion = str(local_session['contenu_ftion']).replace('<p>', '').replace('</p>', '')
|
||||
|
||||
|
||||
msg['From'] = MYSY_GV.O365_SMTP_COUNT_From_User
|
||||
msg['To'] = str(diction['email'])
|
||||
msg['To'] = str(diction['email_participant'])
|
||||
|
||||
ct = datetime.datetime.now()
|
||||
ts = ct.timestamp()
|
||||
date_jour = ct.strftime("%d/%m/%Y")
|
||||
|
||||
# msg = MIMEMultipart("alternative")
|
||||
msg = EmailMessage()
|
||||
|
@ -611,23 +697,80 @@ def SendAttestion_to_attendee_by_email(diction):
|
|||
template = templateEnv.get_template(TEMPLATE_FILE)
|
||||
# This data can come from database query
|
||||
body = {
|
||||
"params": {"nom": str(diction['nom']),
|
||||
"prenom": str(diction['prenom']),
|
||||
"date_du": str(diction['date_du']),
|
||||
"date_fin": str(diction['date_au']),
|
||||
"adresse": str(diction['adresse']),
|
||||
"title": str(diction['title']),
|
||||
"email": str(diction['email']),
|
||||
"params": {"nom": str(nom),
|
||||
"prenom": str(prenom),
|
||||
"date_du": str(date_du),
|
||||
"date_au": str(date_au),
|
||||
"adresse": str(adresse),
|
||||
"class_title": str(diction['class_title']),
|
||||
"email": str(diction['email_participant']),
|
||||
"adresse": str(adresse),
|
||||
"code_postal": str(code_postal),
|
||||
"ville": str(ville),
|
||||
"formateur": str(formateur),
|
||||
"presentiel": str(presentiel),
|
||||
"distantiel": str(distantiel),
|
||||
"partner": str(mysy_partner_nom),
|
||||
"contenu_ftion": str(contenu_ftion),
|
||||
"num_declation": str(mysy_partner_num_declation),
|
||||
"mysy_partner_adr_city":str(mysy_partner_adr_city),
|
||||
"date_jour":str(date_jour),
|
||||
"cachet_signature": "https://img.mysy-training.com/perso/mysy_cachet.png",
|
||||
"logo_url": "https://img.mysy-training.com/1000formation/LOGO-FORMATION1000.png"
|
||||
}}
|
||||
|
||||
|
||||
|
||||
sourceHtml = template.render(json_data=body["params"])
|
||||
|
||||
msg.set_content(sourceHtml, subtype='html')
|
||||
file_name = str("Attestation_" + str(ts) ).replace(".", "")
|
||||
orig_file_name = str(file_name)+".pdf"
|
||||
|
||||
outputFilename = str(MYSY_GV.INVOICE_DIRECTORY) + str(orig_file_name)
|
||||
print(" ### orig_file_name = ", outputFilename)
|
||||
# open output file for writing (truncated binary)
|
||||
resultFile = open(outputFilename, "w+b")
|
||||
# convert HTML to PDF
|
||||
pisaStatus = pisa.CreatePDF(
|
||||
src=sourceHtml, # the HTML to convert
|
||||
dest=resultFile) # file handle to receive result
|
||||
|
||||
# close output file
|
||||
resultFile.close()
|
||||
|
||||
body = '''Hello,
|
||||
This is the body of the email
|
||||
sicerely yours
|
||||
G.G.
|
||||
'''
|
||||
msg.attach(MIMEText(body, 'plain'))
|
||||
|
||||
# open the file in bynary
|
||||
binary_pdf = open(outputFilename, 'rb')
|
||||
|
||||
payload = MIMEBase('application', 'octate-stream', Name=outputFilename)
|
||||
payload.set_payload((binary_pdf).read())
|
||||
|
||||
# enconding the binary into base64
|
||||
encoders.encode_base64(payload)
|
||||
|
||||
# add header with pdf name
|
||||
payload.add_header('Content-Decomposition', 'attachment', filename=outputFilename)
|
||||
msg.attach(payload)
|
||||
|
||||
|
||||
"""with open(outputFilename, 'rb') as content_file:
|
||||
content = content_file.read()
|
||||
msg.add_attachment(content, maintype='application', subtype='pdf', filename='Attestation.pdf')
|
||||
|
||||
"""
|
||||
|
||||
msg['From'] = MYSY_GV.O365_SMTP_COUNT_From_User
|
||||
msg['Bcc'] = 'contact@mysy-training.com'
|
||||
msg['Subject'] = 'MySy Training : Votre attestation de formation : ' + str(diction['title'])
|
||||
msg['To'] = str(diction['email'])
|
||||
msg['Subject'] = 'MySy Training : Votre attestation de formation : ' + str(diction['class_title'])
|
||||
msg['To'] = str(diction['email_participant'])
|
||||
|
||||
msg.attach(MIMEText(open(outputFilename).read()))
|
||||
|
||||
smtpserver.ehlo()
|
||||
smtpserver.starttls()
|
||||
|
@ -639,9 +782,11 @@ def SendAttestion_to_attendee_by_email(diction):
|
|||
mytoday = datetime.date.today().strftime("%d/%m/%Y")
|
||||
my_local_mydata = {'certification_send_date':str(mytoday)}
|
||||
|
||||
print(" ### str(diction['inscription_id']) = ",str(diction['inscription_id']) )
|
||||
#print(" ### str(diction['inscription_id']) = ",str(diction['inscription_id']) )
|
||||
## Mise à jour de la date d'envoi du certificat
|
||||
MYSY_GV.dbname['inscription'].find_one_and_update({'_id':ObjectId(str(diction['inscription_id']))},
|
||||
MYSY_GV.dbname['inscription'].find_one_and_update({'session_id': str(diction['session_id']),
|
||||
'class_internal_url': str(diction['class_internal_url']),
|
||||
'email':str(diction['email_participant'])},
|
||||
{"$set":my_local_mydata},
|
||||
return_document=ReturnDocument.AFTER,)
|
||||
|
||||
|
@ -738,6 +883,7 @@ def SendAttestion_to_attendee_by_email_standalone(diction):
|
|||
"presentiel": str(diction['presentiel']),
|
||||
"distantiel": str(diction['distantiel']),
|
||||
"partner": str(mysy_partner_nom),
|
||||
"contenu_ftion": "Les 10 états d’esprit Kaizen<br>Pratique du PDCA et de la Résolution de problème<br>MODULE 3 Pérennisation:<br>Les rituels managériaux<br>Piloter un système Lean",
|
||||
"num_declation": str(mysy_partner_num_declation),
|
||||
"mysy_partner_siren": str(mysy_partner_siren),
|
||||
"mysy_partner_adr_city":str(mysy_partner_adr_city),
|
||||
|
|
Loading…
Reference in New Issue