24/11/2023 - 18h30

master
cherif 2023-11-24 18:21:56 +01:00
parent e04568b072
commit dab50014a3
5 changed files with 2957 additions and 36 deletions

View File

@ -1,13 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ChangeListManager">
<list default="true" id="c6d0259a-16e1-410d-91a1-830590ee2a08" name="Changes" comment="23/11/23 - 13:30">
<list default="true" id="c6d0259a-16e1-410d-91a1-830590ee2a08" name="Changes" comment="23/11/2023 - 21h30">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Emargement/test_emargement.pdf" beforeDir="false" afterPath="$PROJECT_DIR$/Emargement/test_emargement.pdf" 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$/emargement.py" beforeDir="false" afterPath="$PROJECT_DIR$/emargement.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/main.py" beforeDir="false" afterPath="$PROJECT_DIR$/main.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/partner_order.py" beforeDir="false" afterPath="$PROJECT_DIR$/partner_order.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/prj_common.py" beforeDir="false" afterPath="$PROJECT_DIR$/prj_common.py" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
@ -78,13 +76,6 @@
<option name="presentableId" value="Default" />
<updated>1680804787304</updated>
</task>
<task id="LOCAL-00108" summary="22/09/2023 - 12h53">
<created>1695380023775</created>
<option name="number" value="00108" />
<option name="presentableId" value="LOCAL-00108" />
<option name="project" value="LOCAL" />
<updated>1695380023776</updated>
</task>
<task id="LOCAL-00109" summary="22/09/2023 - 18h53">
<created>1695401442385</created>
<option name="number" value="00109" />
@ -421,7 +412,14 @@
<option name="project" value="LOCAL" />
<updated>1700742130514</updated>
</task>
<option name="localTasksCounter" value="157" />
<task id="LOCAL-00157" summary="23/11/2023 - 21h30">
<created>1700772203290</created>
<option name="number" value="00157" />
<option name="presentableId" value="LOCAL-00157" />
<option name="project" value="LOCAL" />
<updated>1700772203291</updated>
</task>
<option name="localTasksCounter" value="158" />
<servers />
</component>
<component name="Vcs.Log.Tabs.Properties">
@ -436,7 +434,6 @@
</option>
</component>
<component name="VcsManagerConfiguration">
<MESSAGE value="17/10/2023 - 22h45" />
<MESSAGE value="zzz" />
<MESSAGE value="22/10/2023 - 12h" />
<MESSAGE value="22/10/2023 - 18h00" />
@ -461,6 +458,7 @@
<MESSAGE value="20/11/2023 - 21h00" />
<MESSAGE value="22/11/2023 - 23h00" />
<MESSAGE value="23/11/23 - 13:30" />
<option name="LAST_COMMIT_MESSAGE" value="23/11/23 - 13:30" />
<MESSAGE value="23/11/2023 - 21h30" />
<option name="LAST_COMMIT_MESSAGE" value="23/11/2023 - 21h30" />
</component>
</project>

File diff suppressed because it is too large Load Diff

View File

@ -582,6 +582,12 @@ def GerneratePDFEmargementList(diction):
return False, " Impossible d'imprimer la liste d'emargement"
query_get_data = {}
local_status, my_partner = mycommon.Check_Connexion_And_Return_Partner_Data(diction)
if (local_status is not True):
return local_status, my_partner
mytoken = ""
if ("token" in diction.keys()):
if diction['token']:
@ -627,8 +633,6 @@ def GerneratePDFEmargementList(diction):
local_tmp['email'] = val_tmp['email']
local_tmp['nom'] = val_tmp['nom']
local_tmp['prenom'] = val_tmp['prenom']
local_tmp['matin'] = val_tmp['matin']
local_tmp['apresmidi'] = val_tmp['apresmidi']
local_tmp['date'] = val_tmp['date']
local_tmp['sequence_start'] = val_tmp['sequence_start']
@ -639,39 +643,102 @@ def GerneratePDFEmargementList(diction):
tab_users.append(local_tmp)
#print(' ### tab_users = ' + str(tab_users))
date_for_tmplate = {}
# Recuperation des données du partenaire
date_for_tmplate['partner_name'] = my_partner['nom']
date_for_tmplate['partner_adresse'] = my_partner['adr_street']
date_for_tmplate['partner_ville'] = my_partner['adr_city']
date_for_tmplate['partner_code_postal'] = my_partner['invoice_adr_zip']
date_for_tmplate['partner_pays'] = my_partner['adr_country']
date_for_tmplate['partner_phone'] = my_partner['telephone']
date_for_tmplate['partner_mail'] = my_partner['email']
if( "website" in my_partner.keys() ):
date_for_tmplate['partner_website'] = my_partner['website']
else:
date_for_tmplate['partner_website'] = ""
mytoday = str(datetime.today().strftime("%d/%m/%Y"))
date_for_tmplate['today_date'] = str(mytoday)
## Recuperation des info de la formation
class_title = ""
for val_tmp in MYSY_GV.dbname['myclass'].find({'internal_url': str(myclass_internal_url)}):
class_title = val_tmp['title']
## Recuperation des info de la sessop,
class_title = ""
if("title" in val_tmp):
class_title = val_tmp['title']
date_for_tmplate['title'] = class_title
## Recuperation des info de la session
code_session = ""
for val_tmp_2 in MYSY_GV.dbname['session_formation'].find({'_id': ObjectId(str(mysession_id))}):
code_session = val_tmp_2['code_session']
code_session = ""
if ("code_session" in val_tmp_2):
code_session = val_tmp_2['code_session']
date_for_tmplate['code_session'] = code_session
mytoday = datetime.today().strftime("%d/%m/%Y")
session_date_debut = ""
if ("date_debut" in val_tmp_2):
session_date_debut = val_tmp_2['date_debut']
date_for_tmplate['session_date_debut'] = session_date_debut
#print(' ### class_title = ' + str(class_title))
session_date_fin = ""
if ("date_fin" in val_tmp_2):
session_date_fin = val_tmp_2['date_fin']
date_for_tmplate['session_date_fin'] = session_date_fin
templateLoader = jinja2.FileSystemLoader(searchpath="./")
templateEnv = jinja2.Environment(loader=templateLoader)
TEMPLATE_FILE = "Template/tpl_emargement.html"
template = templateEnv.get_template(TEMPLATE_FILE)
session_titre = ""
if ("titre" in val_tmp_2):
session_titre = val_tmp_2['titre']
date_for_tmplate['session_titre'] = session_titre
session_distantiel = ""
if ("distantiel" in val_tmp_2):
session_distantiel = val_tmp_2['distantiel']
date_for_tmplate['session_distantiel'] = session_distantiel
session_presentiel = ""
if ("presentiel" in val_tmp_2):
session_presentiel = val_tmp_2['presentiel']
date_for_tmplate['session_presentiel'] = session_presentiel
#print(json.dumps(date_for_tmplate, indent=1))
#print(" -------- ")
#print(json.dumps(tab_users, indent=1))
# This data can come from database query
body = {
"data": {
"title": str(class_title),
"date": str(mytoday),
"code_session":str(code_session),
},
"data": date_for_tmplate,
"user": tab_users
}
#print(" ### body = " + str(body))
#print( " body = ", body)
sourceHtml = template.render(json_data=body["data"], users=body["user"])
orig_file_name = "test_emargement.pdf"
### Recuperation du modèle de courrier pdf pour l'emargement
data_doc = {}
data_doc['document_ref_intere'] = "EMARGEMENT"
data_doc['document_type'] = "pdf"
data_doc['partner_owner_recid'] = str(partner_recid)
local_retval_status, local_retval_message = mycommon.Get_Personnalized_Document_From_courrier_template(data_doc)
if( local_retval_status is False):
return local_retval_status, local_retval_message
partner_document_data = local_retval_message
contenu_doc_Template = jinja2.Template(str(partner_document_data['contenu_doc']))
sourceHtml = contenu_doc_Template.render(json_data=body["data"], users=body["user"])
orig_file_name = "Emargement.pdf"
outputFilename = str(MYSY_GV.EMARGEMENT_DIRECTORY) + str(orig_file_name)
# open output file for writing (truncated binary)

View File

@ -4203,8 +4203,8 @@ def GerneratePDF_Partner_Order(diction):
if (partner_document_CONF_ORDER_data is None):
mycommon.myprint(
str(inspect.stack()[0][
3]) + "Aucun document parametré ")
return False, "Aucun document parametré "
3]) + "Aucun document paramétré ")
return False, "Aucun document paramétré "
if ("contenu_doc" not in partner_document_CONF_ORDER_data or len(
str(partner_document_CONF_ORDER_data['contenu_doc'])) <= 0):

View File

@ -3584,4 +3584,68 @@ def Is_User_Has_Right_To_Action(diction):
def daterange(start_date, end_date):
for n in range(int((end_date - start_date).days)):
yield start_date + timedelta(n)
yield start_date + timedelta(n)
"""
Cette fonction retroune un document paramétré dans le collection 'courrier_template'
pour un partenaire donné.
Si aucun, alors le sytème renvoie le document par defaut de MySy
"""
def Get_Personnalized_Document_From_courrier_template(diction):
try:
diction = strip_dictionary(diction)
"""
Verification des champs obligatoires
"""
field_list_obligatoire = ['document_ref_intere', 'document_type', 'partner_owner_recid']
for val in field_list_obligatoire:
if val not in diction:
myprint(
str(inspect.stack()[0][3]) + " - La valeur '" + val + "' n'est pas presente dans liste ")
return False, " Les informations fournies sont incorrectes",
document_ref_intere = diction["document_ref_intere"]
document_type = diction["document_type"]
partner_owner_recid = diction["partner_owner_recid"]
partner_document_qry = {'partner_owner_recid': str(partner_owner_recid),
'valide': '1', 'locked': '0', 'ref_interne': str(document_ref_intere),
'type_doc': str(document_type)}
partner_document_data = MYSY_GV.dbname['courrier_template'].find_one(partner_document_qry)
if (partner_document_data is None):
# Il n'existe pas de personnalisation document pour ce partenaire, on va aller récupérer un eventuel modele par default de MySy
partner_document_qry_mysy = {'partner_owner_recid': 'default',
'valide': '1', 'locked': '0', 'ref_interne': str(document_ref_intere),
'type_doc': str(document_type)}
partner_document_data = MYSY_GV.dbname['courrier_template'].find_one(partner_document_qry_mysy)
if (partner_document_data is None):
myprint(
str(inspect.stack()[0][
3]) + " Aucun document " + str(document_ref_intere) + " de Type " + str(
document_type) + " n'est paramétré dans le système ")
return False, " Aucun document " + str(document_ref_intere) + " de Type " + str(
document_type) + " n'est paramétré dans le système "
if ("contenu_doc" not in partner_document_data or len(
str(partner_document_data['contenu_doc'])) <= 0):
myprint(str(inspect.stack()[0][
3]) + " Le paramétrage du document " + str(
document_ref_intere) + " de Type " + str(document_type) + " est invalide ")
return False, " Le paramétrage du document " + str(document_ref_intere) + " de Type " + str(
document_type) + " est invalide "
return True, partner_document_data
except Exception as e:
exc_type, exc_obj, exc_tb = sys.exc_info()
myprint(str(inspect.stack()[0][3]) + " -" + str(e) + " - Line : " + str(exc_tb.tb_lineno))
return False, " Impossible de récuperer le document personnalisé "