07/04/2024 - 19h19

master
cherif 2024-04-07 19:05:49 +02:00
parent 514e48d8b5
commit dca2288844
5 changed files with 1794 additions and 47 deletions

View File

@ -1,10 +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="06/04/2024 - 21h19">
<list default="true" id="c6d0259a-16e1-410d-91a1-830590ee2a08" name="Changes" comment="07/04/2024 - 13h19">
<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$/main.py" beforeDir="false" afterPath="$PROJECT_DIR$/main.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Session_Formation_Sequence.py" beforeDir="false" afterPath="$PROJECT_DIR$/Session_Formation_Sequence.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/prj_common.py" beforeDir="false" afterPath="$PROJECT_DIR$/prj_common.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" />
@ -75,13 +76,6 @@
<option name="presentableId" value="Default" />
<updated>1680804787304</updated>
</task>
<task id="LOCAL-00210" summary="02/02/2024 - 23h">
<created>1706911273733</created>
<option name="number" value="00210" />
<option name="presentableId" value="LOCAL-00210" />
<option name="project" value="LOCAL" />
<updated>1706911273735</updated>
</task>
<task id="LOCAL-00211" summary="03/02/2024 - 21h">
<created>1706989870351</created>
<option name="number" value="00211" />
@ -418,7 +412,14 @@
<option name="project" value="LOCAL" />
<updated>1712431177614</updated>
</task>
<option name="localTasksCounter" value="259" />
<task id="LOCAL-00259" summary="07/04/2024 - 13h19">
<created>1712487406647</created>
<option name="number" value="00259" />
<option name="presentableId" value="LOCAL-00259" />
<option name="project" value="LOCAL" />
<updated>1712487406648</updated>
</task>
<option name="localTasksCounter" value="260" />
<servers />
</component>
<component name="Vcs.Log.Tabs.Properties">
@ -460,7 +461,6 @@
</option>
</component>
<component name="VcsManagerConfiguration">
<MESSAGE value="02/03/2024 - 23h20" />
<MESSAGE value="sss" />
<MESSAGE value="04/03/2024 - 22h15" />
<MESSAGE value="06/03/2024 - 22h15" />
@ -485,6 +485,7 @@
<MESSAGE value="04/04/24 - 19h30" />
<MESSAGE value="04/04/24 - 21h30" />
<MESSAGE value="06/04/2024 - 21h19" />
<option name="LAST_COMMIT_MESSAGE" value="06/04/2024 - 21h19" />
<MESSAGE value="07/04/2024 - 13h19" />
<option name="LAST_COMMIT_MESSAGE" value="07/04/2024 - 13h19" />
</component>
</project>

File diff suppressed because it is too large Load Diff

View File

@ -145,7 +145,6 @@ def Add_Session_Sequence(diction):
date_fin_seq) + " doit être postérieure à la date de début de séquence "+ str( date_debut_seq)+" "
for retVal in MYSY_GV.dbname['session_formation_sequence'].find({'session_id': str(diction['session_id']),
'partner_owner_recid': str(my_partner['recid']),
'valide':'1',
@ -156,6 +155,7 @@ def Add_Session_Sequence(diction):
New_retVal_start_date = datetime.strptime(str(retVal['sequence_start']), '%d/%m/%Y %H:%M').strftime("%d/%m/%Y %H:%M")
New_retVal_end_date = datetime.strptime(str(retVal['sequence_end']), '%d/%m/%Y %H:%M').strftime("%d/%m/%Y %H:%M")
#print(" ### New_retVal_start_date = ", New_retVal_start_date)
#print(" ### New_retVal_end_date = ", New_retVal_end_date)
@ -166,9 +166,9 @@ def Add_Session_Sequence(diction):
mycommon.myprint(
str(inspect.stack()[0][
3]) + " La date de debut de séquence" + str(
3]) + " La date de debut de séquence yyy " + str(
date_debut_seq) + " chevauche une autre séquence ")
return False, " La date de debut de séquence" + str(
return False, " La date de debut de séquence yyy " + str(
date_debut_seq) + " chevauche une autre séquence"
if (datetime.strptime(str(New_retVal_start_date), '%d/%m/%Y %H:%M') <= datetime.strptime(str(date_fin_seq), '%d/%m/%Y %H:%M') and
@ -176,9 +176,9 @@ def Add_Session_Sequence(diction):
mycommon.myprint(
str(inspect.stack()[0][
3]) + " La date de fin de séquence" + str(
3]) + " La date de fin de séquence zzz " + str(
date_debut_seq) + " chevauche une autre séquence ")
return False, " La date de fin de séquence" + str(
return False, " La date de fin de séquence zz " + str(
date_debut_seq) + " chevauche une autre séquence"
sequence_title = ""
@ -218,9 +218,6 @@ def Add_Session_Sequence(diction):
"""
"""
return True, " La séquence a été correctement ajoutée"
except Exception as e:
@ -481,8 +478,6 @@ def Create_Automatic_Sequence_ORIG(diction):
return True, str(nb_sequence)+" séquence(s) automatiquement créée(s) "
except Exception as e:
@ -674,9 +669,10 @@ def Create_Automatic_Sequence(diction):
nb_sequence = 0
for single_date in mycommon.daterange(date_debut_session, date_fin_session):
# print(single_date.strftime("%Y-%m-%d"))
# print(single_date.strftime("%A"))
#print(single_date.strftime("%Y-%m-%d"))
#print(single_date.strftime("%A"))
# print(" Les date off sont : ", is_existe_valide_journee_model_data['date_off'])
date_jour = str(single_date.strftime("%Y-%m-%d"))
@ -686,10 +682,9 @@ def Create_Automatic_Sequence(diction):
jours_name_list_sequence = is_existe_valide_journee_model_data[jour_name]["tab_sequence"]
# print(" ### les sequences du ", jour_name, " sont ", jours_name_list_sequence)
#
## Sequences / Emargement à la demi journée (matin & apres midi )
if( diction['option'] == "1"):
# Sequences / Emargement à la demi journée (matin & apres midi )
# Vu qu'on prend les journée
#Verifer que le jour n'est pas off. (ex : les dimanches sont paramettré comme off)
is_off_day_of_week = "0"
@ -736,8 +731,6 @@ def Create_Automatic_Sequence(diction):
sequence_data['sequence_start'] = str(single_date.strftime("%d/%m/%Y")) + " "+str(matine_heure_debut)
sequence_data['sequence_end'] = str(single_date.strftime("%d/%m/%Y")) + " "+str(matine_heure_fin)
# print(" ### sequence_data = ", sequence_data)
local_status, local_val = Add_Session_Sequence(sequence_data)
if (local_status is False):
@ -754,8 +747,6 @@ def Create_Automatic_Sequence(diction):
sequence_data['sequence_start'] = str(single_date.strftime("%d/%m/%Y")) + " "+str(apres_midi_heure_debut)
sequence_data['sequence_end'] = str(single_date.strftime("%d/%m/%Y")) + " "+str(apres_midi_heure_fin)
# print(" ### sequence_data = ", sequence_data)
local_status, local_val = Add_Session_Sequence(sequence_data)
if (local_status is False):
@ -769,7 +760,7 @@ def Create_Automatic_Sequence(diction):
cpt = cpt + 1
# Pour chaque sequence de la journée
if (diction['option'] == "2"):
elif (diction['option'] == "2"):
# Sequences / Emargement à la journée
@ -818,7 +809,6 @@ def Create_Automatic_Sequence(diction):
sequence_data['sequence_start'] = str(single_date.strftime("%d/%m/%Y")) + " "+str(matine_heure_debut)
sequence_data['sequence_end'] = str(single_date.strftime("%d/%m/%Y")) + " "+str(apres_midi_heure_fin)
# print(" ### sequence_data = ", sequence_data)
local_status, local_val = Add_Session_Sequence(sequence_data)
@ -831,6 +821,7 @@ def Create_Automatic_Sequence(diction):
cpt = cpt + 1
else:
# Si pas la journée, ni la demi journée alors on crée les sequences selon le calendrier
# print(" ### les sequences du ", jour_name, " sont ", jours_name_list_sequence)
# Pour chaque sequence de la journée
@ -846,8 +837,6 @@ def Create_Automatic_Sequence(diction):
sequence_data['sequence_end'] = str(single_date.strftime("%d/%m/%Y")) + " " + str(
local_val['heure_fin']).strip()
# print(" ### sequence_data = ", sequence_data)
local_status, local_val = Add_Session_Sequence(sequence_data)
if (local_status is False):

View File

@ -4148,7 +4148,14 @@ def Is_User_Has_Right_To_Action(diction):
def daterange(start_date, end_date):
for n in range(int((end_date - start_date).days)):
"""
07/04/2024 :
# Pour la fonction 'range' de base fait sur while (x < y).
# Ici j'ai besoin de faire du while(x <= y).
# alors on va faire end_date = end_date + 1 days
"""
new_end_date = end_date + timedelta(days=1)
for n in range(int((new_end_date - start_date).days)):
yield start_date + timedelta(n)

View File

@ -80,7 +80,7 @@ def Get_Given_Survey_Data_No_Token(diction):
RetObject = []
val_tmp = 0
val_tmp = 1
qry = { 'statut':'1', 'valide': '1', 'locked': '0', '_id':ObjectId(str(diction['survey_id']))}
@ -124,17 +124,22 @@ def Get_Given_Survey_Data_No_Token(diction):
Recuperation des données du formulaire (question)
"""
list_questions = []
formulaire_message_introduction = ""
if( "formulaire_id" in New_retVal.keys() ):
my_formulaire_data = MYSY_GV.dbname['formulaire'].find_one( {"partner_owner_recid": str(New_retVal['partner_owner_recid']), 'valide': '1', 'locked':'0', '_id':ObjectId(str(New_retVal['formulaire_id']))})
if(my_formulaire_data and "list_questions" in my_formulaire_data.keys() ):
list_questions = my_formulaire_data['list_questions']
if( "message_introduction" in my_formulaire_data.keys() ):
formulaire_message_introduction = my_formulaire_data['message_introduction']
user['list_questions'] = list_questions
user['message_introduction'] = formulaire_message_introduction
RetObject.append(mycommon.JSONEncoder().encode(user))
print(" ### RetObject = ", RetObject)
#print(" ### RetObject = ", RetObject)
return True, RetObject
@ -691,7 +696,72 @@ 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
@ -706,16 +776,20 @@ def Send_Survey_TabIds(diction):
servey_url = MYSY_GV.CLIENT_URL_BASE + "Survey/" + str(local_survey_retval['_id'])
html = """\
<html>
<body>
<p>Hi,<br>
Merci de suivre l'enquete :""" + str(servey_url) + """ </p>
<p><a href="https://blog.mailtrap.io/2018/09/27/cloud-or-local-smtp-server">SMTP Server for Testing: Cloud-based or Local?</a></p>
<p> Feel free to <strong>let us</strong> know what content would be useful for you!</p>
</body>
</html>
"""
convention_dictionnary_data["servey_url"] = str(servey_url)
convention_dictionnary_data["servey_email"] = str(local_survey_retval['email'])
convention_dictionnary_data["servey_nom"] = str(local_survey_retval['nom'])
convention_dictionnary_data["servey_prenom"] =str(local_survey_retval['prenom'])
body = {
"params": convention_dictionnary_data
}
html = contenu_doc_Template.render(params=body["params"])
html_mime = MIMEText(html, 'html')
html_mime = MIMEText(html, 'html')