09/04/2024 - 23h50

master
cherif 2024-04-09 23:51:34 +02:00
parent 601af08a93
commit 461fbe59ee
4 changed files with 1383 additions and 84 deletions

View File

@ -4,8 +4,7 @@
<list default="true" id="c6d0259a-16e1-410d-91a1-830590ee2a08" name="Changes" comment="09/04/2024 - 15h19">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" 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$/module_editique.py" beforeDir="false" afterPath="$PROJECT_DIR$/module_editique.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/prj_common.py" beforeDir="false" afterPath="$PROJECT_DIR$/prj_common.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/partner_document_mgt.py" beforeDir="false" afterPath="$PROJECT_DIR$/partner_document_mgt.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/survey_mgt.py" beforeDir="false" afterPath="$PROJECT_DIR$/survey_mgt.py" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
@ -76,13 +75,6 @@
<option name="presentableId" value="Default" />
<updated>1680804787304</updated>
</task>
<task id="LOCAL-00213" summary="04/02/2024 - 23h">
<created>1707082428610</created>
<option name="number" value="00213" />
<option name="presentableId" value="LOCAL-00213" />
<option name="project" value="LOCAL" />
<updated>1707082428611</updated>
</task>
<task id="LOCAL-00214" summary="05/02/2024 -23h">
<created>1707172831686</created>
<option name="number" value="00214" />
@ -419,7 +411,14 @@
<option name="project" value="LOCAL" />
<updated>1712669291681</updated>
</task>
<option name="localTasksCounter" value="262" />
<task id="LOCAL-00262" summary="09/04/2024 - 15h19">
<created>1712676544737</created>
<option name="number" value="00262" />
<option name="presentableId" value="LOCAL-00262" />
<option name="project" value="LOCAL" />
<updated>1712676544738</updated>
</task>
<option name="localTasksCounter" value="263" />
<servers />
</component>
<component name="Vcs.Log.Tabs.Properties">

File diff suppressed because it is too large Load Diff

View File

@ -194,12 +194,12 @@ def Add_Partner_Document(diction):
if ("contenu_doc" in diction.keys()):
if diction['contenu_doc']:
contenu_doc = diction['contenu_doc']
if (len(str(contenu_doc)) > 10000):
if (len(str(contenu_doc)) > 20000):
mycommon.myprint(
str(inspect.stack()[0][
3]) + " - Le champ 'contenu_doc' fait plus de 10000 caractères ")
3]) + " - Le champ 'contenu_doc' fait plus de 20000 caractères ")
return False, " - Le champ 'contenu_doc' fait plus de 10000 caractères "
return False, " - Le champ 'contenu_doc' fait plus de 20000 caractères "
data['contenu_doc'] = contenu_doc
@ -441,12 +441,12 @@ def Update_Partner_Document(diction):
if ("contenu_doc" in diction.keys()):
if diction['contenu_doc']:
contenu_doc = diction['contenu_doc']
if (len(str(sujet)) > 10000):
if (len(str(sujet)) > 20000):
mycommon.myprint(
str(inspect.stack()[0][
3]) + " - Le champ 'contenu_doc' fait plus de 10000 caractères ")
3]) + " - Le champ 'contenu_doc' fait plus de 20000 caractères ")
return False, " - Le champ 'contenu_doc' fait plus de 10000 caractère "
return False, " - Le champ 'contenu_doc' fait plus de 20000 caractère "
data_update['contenu_doc'] = diction['contenu_doc']

View File

@ -611,6 +611,20 @@ def Create_One_Survey_To_Inscrit(diction):
"""
Cette fonction permet d'envoyer la demande d'enquete à la personne concerné
/!\ : Cette fontion permet d'envoyer toutes les demande d'enquete, que soit :
un questionnaire de positionnement, une demande d'evaluation a chaud,
une demande d'evaluation à froid, ou tout autre.
Le type de courrier à utiliser, le 'courrier_template_type_document_ref_interne' à loger dans tracking history
depende du type d'enquete.
par exemple :
- si survey.survey_type == 'pos' ==> courrier_template_type_document_ref_interne = "QUESTION_POSITIONNEMENT" et
courrier_template.ref_interne = QUESTION_POSITIONNEMENT.
- si survey.survey_type == 'hot_eval' ==> courrier_template_type_document_ref_interne = "EVAL_FORMATION" et
courrier_template.ref_interne = EVAL_FORMATION.
"""
def Send_Survey_TabIds(diction):
@ -700,72 +714,6 @@ def Send_Survey_TabIds(diction):
'valide': '1',
'locked': '0'}, {'config_value': 1})['config_value'])
"""
Recuperation du modele de courrier (unique) associé à l'envoie des questions de positionnement
le principe est de prendre le module du partenaire. si pas de modele du partenaire on
prend le modele par default
"""
courrier_template_model = MYSY_GV.dbname['courrier_template'].count_documents(
{'ref_interne': "QUESTION_POSITIONNEMENT",
'valide': '1',
'locked': '0',
'type_doc': 'email',
'partner_owner_recid': str(my_partner['recid'])}
)
if (courrier_template_model == 1):
courrier_template_data = MYSY_GV.dbname['courrier_template'].find_one(
{'ref_interne': "QUESTION_POSITIONNEMENT",
'valide': '1',
'locked': '0',
'type_doc': 'email',
'partner_owner_recid': str(my_partner['recid'])}
)
else:
courrier_template_model = MYSY_GV.dbname['courrier_template'].count_documents(
{'ref_interne': "QUESTION_POSITIONNEMENT",
'valide': '1',
'locked': '0',
'type_doc': 'email',
'partner_owner_recid': "default"}
)
if (courrier_template_model == 1):
courrier_template_data = MYSY_GV.dbname['courrier_template'].find_one(
{'ref_interne': "QUESTION_POSITIONNEMENT",
'valide': '1',
'locked': '0',
'type_doc': 'email',
'partner_owner_recid': "default"}
)
else:
mycommon.myprint(str(
inspect.stack()[0][
3]) + " Aucun modèle de document configuré pour envoyer les demandes pour les questionnaires de positionnement ")
return False, " Aucun modèle de document configuré pour envoyer les demandes pour les questionnaires de positionnement "
if ("contenu_doc" not in courrier_template_data.keys() or str(
courrier_template_data['contenu_doc']).strip() == ""):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Le modèle de document ne contient pas de valeur 'contenu_doc' ")
return False, " Le modèle de document ne contient pas de valeur 'contenu_doc' "
contenu_doc_Template = jinja2.Template(str(courrier_template_data['contenu_doc']))
# Creation du dictionnaire d'information à utiliser pour la creation du doc
convention_dictionnary_data = {}
new_diction = {}
new_diction['token'] = diction['token']
new_diction['list_stagiaire_id'] = []
new_diction['list_session_id'] = []
new_diction['list_class_id'] = []
new_diction['list_client_id'] = []
new_diction['list_apprenant_id'] = []
local_status, local_retval = mycommon.Get_Dictionnary_data_For_Template(new_diction)
if (local_status is False):
return local_status, local_retval
convention_dictionnary_data = local_retval
for my_survey_id in tab_my_survey_ids:
# Recuperation des données de l'inscript
@ -778,6 +726,86 @@ def Send_Survey_TabIds(diction):
mycommon.myprint(str(inspect.stack()[0][3]) + " L'identifiant de l'inscrit est invalide ")
return False, " L'identifiant de l'inscrit est invalide "
courrier_ref_interne = ""
if ( "survey_type" in local_survey_retval.keys() and local_survey_retval['survey_type'] == "pos"):
courrier_ref_interne = "QUESTION_POSITIONNEMENT"
elif ( "survey_type" in local_survey_retval.keys() and local_survey_retval['survey_type'] == "hot_eval"):
courrier_ref_interne = "EVAL_FORMATION"
else :
mycommon.myprint(str(inspect.stack()[0][3]) + " Le type d'enquete est invalide ")
return False, " Le type d'enquete est invalide "
"""
Recuperation du modele de courrier (unique) associé à l'envoie des questions de positionnement
le principe est de prendre le module du partenaire. si pas de modele du partenaire on
prend le modele par default
"""
courrier_template_model = MYSY_GV.dbname['courrier_template'].count_documents(
{'ref_interne': str(courrier_ref_interne),
'valide': '1',
'locked': '0',
'type_doc': 'email',
'partner_owner_recid': str(my_partner['recid'])}
)
if (courrier_template_model == 1):
courrier_template_data = MYSY_GV.dbname['courrier_template'].find_one(
{'ref_interne': str(courrier_ref_interne),
'valide': '1',
'locked': '0',
'type_doc': 'email',
'partner_owner_recid': str(my_partner['recid'])}
)
else:
courrier_template_model = MYSY_GV.dbname['courrier_template'].count_documents(
{'ref_interne': str(courrier_ref_interne),
'valide': '1',
'locked': '0',
'type_doc': 'email',
'partner_owner_recid': "default"}
)
if (courrier_template_model == 1):
courrier_template_data = MYSY_GV.dbname['courrier_template'].find_one(
{'ref_interne': str(courrier_ref_interne),
'valide': '1',
'locked': '0',
'type_doc': 'email',
'partner_owner_recid': "default"}
)
else:
mycommon.myprint(str(
inspect.stack()[0][
3]) + " Aucun modèle de document configuré pour envoyer les demandes pour les questionnaires de positionnement ")
return False, " Aucun modèle de document configuré pour envoyer les demandes pour les questionnaires de positionnement "
if ("contenu_doc" not in courrier_template_data.keys() or str(
courrier_template_data['contenu_doc']).strip() == ""):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Le modèle de document ne contient pas de valeur 'contenu_doc' ")
return False, " Le modèle de document ne contient pas de valeur 'contenu_doc' "
contenu_doc_Template = jinja2.Template(str(courrier_template_data['contenu_doc']))
# Creation du dictionnaire d'information à utiliser pour la creation du doc
convention_dictionnary_data = {}
new_diction = {}
new_diction['token'] = diction['token']
new_diction['list_stagiaire_id'] = []
new_diction['list_session_id'] = []
new_diction['list_class_id'] = []
new_diction['list_client_id'] = []
new_diction['list_apprenant_id'] = []
local_status, local_retval = mycommon.Get_Dictionnary_data_For_Template(new_diction)
if (local_status is False):
return local_status, local_retval
convention_dictionnary_data = local_retval
servey_url = MYSY_GV.CLIENT_URL_BASE + "Survey/" + str(local_survey_retval['_id'])
convention_dictionnary_data["servey_url"] = str(servey_url)
@ -843,12 +871,22 @@ def Send_Survey_TabIds(diction):
qry = {'_id': ObjectId(str(my_survey_id)), 'partner_owner_recid': str(my_partner['recid']),
'valide': '1', 'locked': '0'}
MYSY_GV.dbname['survey'].find_one_and_update(qry,
result = MYSY_GV.dbname['survey'].find_one_and_update(qry,
{'$set':{'statut':'1', 'date_update':str(now),
'update_by':str(my_partner['_id']),
'date_envoi':now}}
)
courrier_ref_interne = ""
if ("survey_type" in result.keys() and result['survey_type'] == "pos"):
courrier_ref_interne = "QUESTION_POSITIONNEMENT"
elif ("survey_type" in result.keys() and result['survey_type'] == "hot_eval"):
courrier_ref_interne = "EVAL_FORMATION"
else:
mycommon.myprint(str(inspect.stack()[0][3]) + " Le type d'enquete est invalide ")
return False, " Le type d'enquete est invalide "
"""
Apres que l'envoie est fait, on va loguer le traitement dans la collection : courrier_template_tracking_history
@ -869,7 +907,7 @@ def Send_Survey_TabIds(diction):
print(" inscription_data = ", inscription_data)
local_status, local_retval = module_editique.Editic_Log_History_Action_From_courrier_template_type_document_ref_interne(
my_partner, "QUESTION_POSITIONNEMENT", str(inscription_data['session_id']), 'inscription',
my_partner, str(courrier_ref_interne), str(inscription_data['session_id']), 'inscription',
str(local_inscription_id),"")
if (local_status is False):
mycommon.myprint(