17/04/2026 -19h

Signed-off-by: Cherif <cbalde@mysy-training.com>
master_Elyos_FI
Cherif 2026-04-17 19:25:41 +02:00
parent 552c2b926b
commit db1f0769bd
15 changed files with 892 additions and 106246 deletions

View File

@ -4,16 +4,22 @@
<option name="autoReloadType" value="SELECTIVE" />
</component>
<component name="ChangeListManager">
<list default="true" id="c6d0259a-16e1-410d-91a1-830590ee2a08" name="Changes" comment="07/04/2026 - 14h">
<list default="true" id="c6d0259a-16e1-410d-91a1-830590ee2a08" name="Changes" comment="10/04/2026 - 18h">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Ela_Spacy.py" beforeDir="false" afterPath="$PROJECT_DIR$/Ela_Spacy.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/GlobalVariable.py" beforeDir="false" afterPath="$PROJECT_DIR$/GlobalVariable.py" 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$/MySy_IA/mysy_ia.py" beforeDir="false" afterPath="$PROJECT_DIR$/MySy_IA/mysy_ia.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ela_index_bdd_classes.py" beforeDir="false" afterPath="$PROJECT_DIR$/ela_index_bdd_classes.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/help_articles.py" beforeDir="false" afterPath="$PROJECT_DIR$/help_articles.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/apprenant_mgt.py" beforeDir="false" afterPath="$PROJECT_DIR$/apprenant_mgt.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/base_class_calcul_note.py" beforeDir="false" afterPath="$PROJECT_DIR$/base_class_calcul_note.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/class_mgt.py" beforeDir="false" afterPath="$PROJECT_DIR$/class_mgt.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/jury_mgt.py" beforeDir="false" afterPath="$PROJECT_DIR$/jury_mgt.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/main.py" beforeDir="false" afterPath="$PROJECT_DIR$/main.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/session_admission_fi.py" beforeDir="false" afterPath="$PROJECT_DIR$/session_admission_fi.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/notes_apprenant_mgt.py" beforeDir="false" afterPath="$PROJECT_DIR$/notes_apprenant_mgt.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/partner_client.py" beforeDir="false" afterPath="$PROJECT_DIR$/partner_client.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/partner_invoice.py" beforeDir="false" afterPath="$PROJECT_DIR$/partner_invoice.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/partners.py" beforeDir="false" afterPath="$PROJECT_DIR$/partners.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/prj_common.py" beforeDir="false" afterPath="$PROJECT_DIR$/prj_common.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/stage_mgt.py" beforeDir="false" afterPath="$PROJECT_DIR$/stage_mgt.py" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@ -457,7 +463,7 @@
<option name="project" value="LOCAL" />
<updated>1747251650255</updated>
</task>
<option name="localTasksCounter" value="559" />
<option name="localTasksCounter" value="560" />
<servers />
</component>
<component name="Vcs.Log.Tabs.Properties">
@ -499,7 +505,6 @@
</option>
</component>
<component name="VcsManagerConfiguration">
<MESSAGE value="16/02/26 - 18h30" />
<MESSAGE value="18/02/2026 - 18h" />
<MESSAGE value="21/02/26 - 20h" />
<MESSAGE value="22/02/26 - 20h" />
@ -524,6 +529,7 @@
<MESSAGE value="23/03/26 - 20h" />
<MESSAGE value="04/04/26 - 20h" />
<MESSAGE value="07/04/2026 - 14h" />
<option name="LAST_COMMIT_MESSAGE" value="07/04/2026 - 14h" />
<MESSAGE value="10/04/2026 - 18h" />
<option name="LAST_COMMIT_MESSAGE" value="10/04/2026 - 18h" />
</component>
</project>

View File

@ -1197,4 +1197,6 @@ Ftion Initiale : Fréquence de facturation d'un inscrit
"3" ==> Annuelle
"" ==> ""
"""
INSCRIT_FREQUENCE_FACTURE = ["", "1", "2", "3", ]
INSCRIT_FREQUENCE_FACTURE = ["", "1", "2", "3", ]

View File

@ -12416,8 +12416,62 @@ def Sent_Convention_Stagiaire_By_Email(tab_files, Folder, diction):
print(" Email envoyé " + str(val))
"""
25/01/2024 : pour loger une action dans la collection ==> courrier_template_tracking_history
"""
11/04/2026 - Gestion des emails via mail_queu et internal email/
"""
# Traitement du sujet du mail
#sujet_mail_Template = jinja2.Template(courrier_template_data['sujet'])
sujetHtml = courrier_template_data['sujet']
# Recuperation des donnes smtp
(local_stpm_status, local_SMTP_COUNT_smtpsrv, local_own_smtp_value, local_SMTP_COUNT_password,
local_SMTP_COUNT_user, local_SMTP_COUNT_From_User,
local_SMTP_COUNT_port) = mycommon.Get_Partner_SMTP_Param(str(my_partner['recid']))
if (local_stpm_status is False):
return local_stpm_status, local_SMTP_COUNT_smtpsrv
tab_email_bcc = []
tab_email_bcc.append("contact@mysy-training.com")
"""
IMPORTANT : Cette section sera utilisée une fois que le module de Queu de message est ok
"""
queue_mail_diction = {}
queue_mail_diction['token'] = diction['token']
queue_mail_diction['tab_email_cc'] = []
queue_mail_diction['tab_email_bcc'] = tab_email_bcc
if (sujetHtml):
queue_mail_diction['email_sujet'] = sujetHtml
else:
queue_mail_diction['email_sujet'] = '[MySy Training]: Convention individuelle de formation'
corps_mail_Template = jinja2.Template(str(courrier_template_data['corps_mail']))
sourceHtml = corps_mail_Template.render(params=body["params"])
queue_mail_diction['message'] = sourceHtml
queue_mail_diction['smtp_account_password'] = local_SMTP_COUNT_password
queue_mail_diction['smtp_account_smtpsrv'] = local_SMTP_COUNT_smtpsrv
queue_mail_diction['smtp_account_user'] = local_SMTP_COUNT_user
queue_mail_diction['smtp_account_From_User'] = local_SMTP_COUNT_From_User
queue_mail_diction['smtp_account_port'] = local_SMTP_COUNT_port
queue_mail_diction['tab_files_to_attache_to_mail'] = []
toaddrs = ",".join(tab_emails_destinataire)
queue_mail_diction['email_to'] = str(toaddrs)
print(" ### convention dans queu mail queue_mail_diction = ", queue_mail_diction)
queue_and_internal_mail_status, queue_and_internal_mail_status = email_mgt.Individual_Mail_Store_Queu_And_Internal_Mail(
queue_mail_diction)
if (queue_and_internal_mail_status is False):
print(" ## WARNING queue_mail_retval = ", queue_and_internal_mail_status)
"""
25/01/2024 : pour loger une action dans la collection ==> courrier_template_tracking_history
"""
local_status, local_retval = module_editique.Editic_Log_History_Action(my_partner, courrier_template_data,
str(diction['session_id']),
"inscription",

File diff suppressed because one or more lines are too long

View File

@ -1354,9 +1354,7 @@ def Apprenant_Inscrire_Session_List(diction):
# Verifier que le type d'apprenant est bien valide
type_apprenant = "0"
if( str(diction['type_apprenant']) not in MYSY_GV.INSCRIPTION_TYPE_APPRENANT ):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Le type d'apprenant est invalide ")
return False, " Le type d'apprenant est invalide "
type_apprenant = "0"
else:
type_apprenant = str(diction['type_apprenant'])
@ -1454,7 +1452,7 @@ def Apprenant_Inscrire_Session_List(diction):
local_diction['token'] = diction['token']
local_diction['_id'] = str(apprenant_id)
local_diction['session_id'] = diction['session_id']
local_diction['type_apprenant'] = diction['type_apprenant']
local_diction['type_apprenant'] = type_apprenant
local_diction['modefinancement'] = diction['modefinancement']
local_diction['client_rattachement_id'] = client_rattachement_id
if( "tab_ue_ids" in diction.keys() ):

View File

@ -609,42 +609,61 @@ def Cacul_UE_Note_Finale_For_calcul_mode_1(diction):
for my_inscription in tab_inscriptions_ids_splited:
my_inscription = str(my_inscription).strip()
"""
14/04/206 - Recuperer les types d'evaluation concerné par cette formation
"""
tab_evaluation_code = []
for loca_type_evaluation_id in MYSY_GV.dbname['class_unite_enseignement_type_evaluation'].find(
{'class_id': diction['class_id'], 'partner_owner_recid': my_partner['recid'],
'valide': '1',
'locked': '0'}, {'type_evaluation_id': 1}):
type_evaluation_data = MYSY_GV.dbname['type_evaluation'].find_one(
{'_id': ObjectId(str(loca_type_evaluation_id['type_evaluation_id'])),
'partner_owner_recid': my_partner['recid'],
'valide': '1',
'locked': '0'
})
type_eval_td_data = MYSY_GV.dbname['type_evaluation'].find_one({'code': {'$regex': "td", "$options": "i"},
if (type_evaluation_data and 'code' in type_evaluation_data.keys() and type_evaluation_data['code']):
tab_evaluation_code.append(str(type_evaluation_data['code']).lower())
if ("td" in tab_evaluation_code):
type_eval_td_data = MYSY_GV.dbname['type_evaluation'].find_one({'code': {'$regex': "td", "$options": "i"},
'partner_owner_recid': str(my_partner['recid']),
'valide': '1',
'locked': '0',
})
if( type_eval_td_data is None ):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Aucun type d'évaluation de type 'TD', merci de vérifier le paramétrage des types d'évaluation ")
return False, " Aucun type d'évaluation de type 'TD', merci de vérifier le paramétrage des types d'évaluation "
if ("tp" in tab_evaluation_code):
type_eval_tp_data = MYSY_GV.dbname['type_evaluation'].find_one({'code': {'$regex': "tp", "$options": "i"},
'partner_owner_recid': str(my_partner['recid']),
'valide': '1',
'locked': '0',
})
if( type_eval_td_data is None ):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Aucun type d'évaluation de type 'TD', merci de vérifier le paramétrage des types d'évaluation ")
return False, " Aucun type d'évaluation de type 'TD', merci de vérifier le paramétrage des types d'évaluation "
if (type_eval_tp_data is None):
mycommon.myprint(
str(inspect.stack()[0][
3]) + " Aucun type d'évaluation de type 'TP', merci de vérifier le paramétrage des types d'évaluation ")
return False, " Aucun type d'évaluation de type 'TP', merci de vérifier le paramétrage des types d'évaluation "
type_eval_tp_data = MYSY_GV.dbname['type_evaluation'].find_one({'code': {'$regex': "tp", "$options": "i"},
'partner_owner_recid': str(my_partner['recid']),
'valide': '1',
'locked': '0',
})
if (type_eval_tp_data is None):
mycommon.myprint(
str(inspect.stack()[0][
3]) + " Aucun type d'évaluation de type 'TP', merci de vérifier le paramétrage des types d'évaluation ")
return False, " Aucun type d'évaluation de type 'TP', merci de vérifier le paramétrage des types d'évaluation "
type_eval_examen_data = MYSY_GV.dbname['type_evaluation'].find_one({'code': {'$regex': "Examen", "$options": "i"},
'partner_owner_recid': str(my_partner['recid']),
'valide': '1',
'locked': '0',
})
if (type_eval_examen_data is None):
mycommon.myprint(
str(inspect.stack()[0][
3]) + " Aucun type d'évaluation de type 'Examen', merci de vérifier le paramétrage des types d'évaluation ")
return False, " Aucun type d'évaluation de type 'Exame', merci de vérifier le paramétrage des types d'évaluation "
if ("examen" in tab_evaluation_code):
type_eval_examen_data = MYSY_GV.dbname['type_evaluation'].find_one({'code': {'$regex': "Examen", "$options": "i"},
'partner_owner_recid': str(my_partner['recid']),
'valide': '1',
'locked': '0',
})
if (type_eval_examen_data is None):
mycommon.myprint(
str(inspect.stack()[0][
3]) + " Aucun type d'évaluation de type 'Examen', merci de vérifier le paramétrage des types d'évaluation ")
return False, " Aucun type d'évaluation de type 'Exame', merci de vérifier le paramétrage des types d'évaluation "
@ -2083,6 +2102,7 @@ def Cacul_UE_Note_Finale_Standard(diction):
tab_ue_ids_splited = str(tab_ue_ids).split(",")
tab_ue_ids_ObjectId = []
tab_ue_ids = []
for my_ue_id in tab_ue_ids_splited:
my_ue_id = str(my_ue_id).strip()
@ -2100,7 +2120,7 @@ def Cacul_UE_Note_Finale_Standard(diction):
return False, " L'identifiant de l'unité d'enseignement "+str(my_ue_id)+" est invalide "
tab_ue_ids_ObjectId.append( ObjectId(str(my_ue_id)))
tab_ue_ids.append(str(my_ue_id))
is_myclass_valide_data = MYSY_GV.dbname['myclass'].find_one(
@ -2124,23 +2144,41 @@ def Cacul_UE_Note_Finale_Standard(diction):
for my_inscription in tab_inscriptions_ids_splited:
my_inscription = str(my_inscription).strip()
"""
14/04/206 - Recuperer les types d'evaluation concerné par cette formation
"""
tab_evaluation_code = []
for loca_type_evaluation_id in MYSY_GV.dbname['class_unite_enseignement_type_evaluation'].find(
{'class_id': diction['class_id'], 'partner_owner_recid': my_partner['recid'],
'valide': '1',
'locked': '0'}, {'type_evaluation_id': 1}):
type_evaluation_data = MYSY_GV.dbname['type_evaluation'].find_one(
{'_id': ObjectId(str(loca_type_evaluation_id['type_evaluation_id'])),
'partner_owner_recid': my_partner['recid'],
'valide': '1',
'locked': '0'
})
type_eval_td_data = MYSY_GV.dbname['type_evaluation'].find_one({'code': {'$regex': "td", "$options": "i"},
'partner_owner_recid': str(my_partner['recid']),
'valide': '1',
'locked': '0',
})
if (type_evaluation_data and 'code' in type_evaluation_data.keys() and type_evaluation_data['code']):
tab_evaluation_code.append(str(type_evaluation_data['code']).lower())
if( type_eval_td_data is None ):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Aucun type d'évaluation de type 'TD', merci de vérifier le paramétrage des types d'évaluation ")
return False, " Aucun type d'évaluation de type 'TD', merci de vérifier le paramétrage des types d'évaluation "
if ("td" in tab_evaluation_code):
type_eval_td_data = MYSY_GV.dbname['type_evaluation'].find_one({'code': {'$regex': "td", "$options": "i"},
'partner_owner_recid': str(my_partner['recid']),
'valide': '1',
'locked': '0',
})
"""print(" ### QRYY ", {'_id': {'$in':tab_ue_ids_ObjectId},
'valide': '1',
'locked': '0',
'partner_owner_recid': str(my_partner['recid'])})"""
if( type_eval_td_data is None ):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Aucun type d'évaluation de type 'TD', merci de vérifier le paramétrage des types d'évaluation ")
return False, " Aucun type d'évaluation de type 'TD', merci de vérifier le paramétrage des types d'évaluation "
"""print(" ### QRYY ", {'_id': {'$in':tab_ue_ids_ObjectId},
'valide': '1',
'locked': '0',
'partner_owner_recid': str(my_partner['recid'])})"""
for is_ue_valide_data in MYSY_GV.dbname['unite_enseignement'].find(
@ -2715,13 +2753,13 @@ def run_ue_pre_calcul_moyenne_somme_v2(diction):
#print(" ### la liste Class_UE_type_eval = ", Class_UE_type_eval)
"""print(" ### QRYYY = ", {'class_eu_id': str(my_ue_id),
print(" ### QRYYY = ",{'class_eu_id': str(my_ue_id),
'valide': '1',
'locked': '0',
'session_id':str(diction['session_id']),
'partner_owner_recid': str(my_partner['recid']),
'type_eval_id':{'$in':Class_UE_type_eval}
})"""
})
evaluation_distinc_type_eval = MYSY_GV.dbname['note_evaluation'].distinct("type_eval_id",
{'class_eu_id': str(my_ue_id),
@ -2735,7 +2773,7 @@ def run_ue_pre_calcul_moyenne_somme_v2(diction):
#print(" ### la liste evaluation_distinc_type_eval = ", evaluation_distinc_type_eval)
print(" ### la liste evaluation_distinc_type_eval = ", evaluation_distinc_type_eval)
@ -2772,7 +2810,7 @@ def run_ue_pre_calcul_moyenne_somme_v2(diction):
'locked': '0',
'_id': ObjectId(str(eval_type_id))})
#print(" TRAITEMENT TYPE EVAL iii : ", str(eval_type_id_data["code"]))
print(" TRAITEMENT TYPE EVAL iii : ", eval_type_id_data)
local_diction = diction
local_diction['tab_inscriptions_ids'] = str(my_inscription)

View File

@ -217,7 +217,7 @@ def add_class(diction):
is_ftion_initiale = "1"
if ("is_ftion_initiale" in diction.keys() and diction['is_ftion_initiale'] in ['', '0', '1']):
note = diction['is_ftion_initiale']
is_ftion_initiale = diction['is_ftion_initiale']
mydata['is_ftion_initiale'] = is_ftion_initiale

View File

@ -1934,6 +1934,7 @@ def Delete_Jury(diction):
"""
Cette fonction supprime une séance du jury
elle desinscrit egalement les membre
"""
def Delete_Jury_Seance(diction):
try:
@ -2042,6 +2043,136 @@ def Delete_Jury_Seance(diction):
return False, " Impossible de supprimer la séance du jury "
"""
Cette fonction supprime plusieurs séance du jury
elle desinscrit egalement les membre
"""
def Delete_Many_Jury_Seance(diction):
try:
diction = mycommon.strip_dictionary(diction)
"""
Verification des input acceptés
"""
field_list = ['token', 'jury_id', 'tab_jury_soutenance_ids', ]
incom_keys = diction.keys()
for val in incom_keys:
if val not in field_list and val.startswith('my_') is False:
mycommon.myprint(str(
inspect.stack()[0][3]) + " Le champ '" + val + "' n'est pas autorisé")
return False, " Les informations fournies sont incorrectes"
"""
Verification des champs obligatoires
"""
field_list_obligatoire = ['token', 'jury_id', 'tab_jury_soutenance_ids']
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 la liste des arguments ")
return False, " Les informations fournies sont incorrectes"
"""
Verification de l'identité et autorisation de l'entité qui
appelle cette API
"""
token = ""
if ("token" in diction.keys()):
if diction['token']:
token = diction['token']
local_status, my_partner = mycommon.Check_Connexion_And_Return_Partner_Data(diction)
if (local_status is not True):
return local_status, my_partner
is_existe_jury = MYSY_GV.dbname['jury'].count_documents(
{'_id': ObjectId(str(diction['jury_id'])),
'valide': '1',
'partner_owner_recid': str(my_partner['recid'])})
if (is_existe_jury != 1):
mycommon.myprint(
str(inspect.stack()[0][3]) + " L'identifiant du jury est invalide ")
return False, " L'identifiant du jury est invalide "
tab_jury_soutenance_ids = []
tab_jury_soutenance_ids_ObjectId = []
tab_jury_soutenance_id_work = []
for tmp in str(diction['tab_jury_soutenance_ids']).split(","):
if (tmp):
is_valide_jury = MYSY_GV.dbname['jury_soutenance'].count_documents({'jury_id': str(diction['jury_id']),
'_id': ObjectId(str(tmp)),
'partner_owner_recid': str(
my_partner['recid']),
}, )
if (is_valide_jury != 1):
mycommon.myprint(
str(inspect.stack()[0][3]) + " L'identifiant de la soutenance " + str(tmp) + " est invalide ")
return False, " L'identifiant de la soutenance " + str(tmp) + " est invalide "
tab_jury_soutenance_ids.append(tmp)
tab_jury_soutenance_ids_ObjectId.append(ObjectId(str(tmp)))
# Supprenant des apprenants associée à cette seance du jury
jury_seance_apprenant = MYSY_GV.dbname['jury_apprenant'].delete_many({'jury_id': str(diction['jury_id']),
'jury_soutenance_id': {'$in':tab_jury_soutenance_ids},
'partner_owner_recid': str(
my_partner['recid']),
}, )
# Suppression de l'entrée agenda associée
jury_seance_agenda = MYSY_GV.dbname['agenda'].delete_many({'related_collection':'jury_soutenance',
'related_collection_recid': {'$in':tab_jury_soutenance_ids},
'partner_owner_recid': str( my_partner['recid']),
}, )
jury_soutenance = MYSY_GV.dbname['jury_soutenance'].delete_many({'_id': {'$in':tab_jury_soutenance_ids_ObjectId},
'jury_id': str(diction['jury_id']),
'partner_owner_recid': str(my_partner['recid']),
}, )
"""
## Add to log history
"""
now = str(datetime.now().strftime("%d/%m/%Y %H:%M:%S"))
# Pour la collection inscription
history_event_dict = {}
history_event_dict['token'] = diction['token']
history_event_dict['related_collection'] = "jury"
history_event_dict['related_collection_recid'] = str(diction['jury_id'])
history_event_dict['action_date'] = str(now)
history_event_dict['action_description'] = "Suppression en masse des soutenances " + str(tab_jury_soutenance_ids)+" "
local_status, local_retval = mycommon.Collection_Historique.Add_Historique_Event(history_event_dict)
if (local_status is False):
mycommon.myprint(
" WARNING : Impossible de logguer l'historique pour l'évènement : " + str(history_event_dict))
return True, str(len(tab_jury_soutenance_ids))+" soutenance(s) supprimée(s)"
except Exception as e:
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 supprimer les soutenances "
"""

121
main.py
View File

@ -114,6 +114,7 @@ import pole_activite_pedagogique as pole_activite_pedagogique
import competence_pedagogique as competence_pedagogique
import bloc_competence as bloc_competence
import domaine_competence_pedagogique as domaine_competence_pedagogique
import stage_mgt as stage_mgt
import base_document_automatic_setup as base_document_automatic_setup
@ -5147,6 +5148,19 @@ def Get_Partner_Client_Communication_Contact():
"""
API de recuperation la liste de TOUS les contacts d'un client
"""
@app.route('/myclass/api/Get_Partner_Client_All_Contact/', methods=['POST','GET'])
@crossdomain(origin='*')
def Get_Partner_Client_All_Contact():
# On recupere le corps (payload) de la requete
payload = mycommon.strip_dictionary (request.form.to_dict())
print(" ### Get_Partner_Client_All_Contact : payload = ",payload)
localStatus, message = partner_client.Get_Partner_Client_All_Contact(payload)
return jsonify(status=localStatus, message=message)
"""
API de recuperation des contacts d'un client inclus dans la communication en mode non connecté
@ -14281,6 +14295,19 @@ def Delete_Jury_Seance():
return jsonify(status=localStatus, message=message )
"""
API pour mettre supprimer plusieurs séances du jury
"""
@app.route('/myclass/api/Delete_Many_Jury_Seance/', methods=['POST','GET'])
@crossdomain(origin='*')
def Delete_Many_Jury_Seance():
# On recupere le corps (payload) de la requete
payload = mycommon.strip_dictionary (request.form.to_dict())
print(" ### Delete_Many_Jury_Seance : payload = ",payload)
localStatus, message= jury_mgt.Delete_Many_Jury_Seance(payload)
return jsonify(status=localStatus, message=message )
"""
@ -15881,7 +15908,7 @@ def Get_List_Admission_Setup():
"""
API pour Recuperer les données d'une configuration d'admission donnée
"""
@app.route('/myclass/api/Get_List_Admission_Setup/', methods=['POST','GET'])
@app.route('/myclass/api/Get_Given_Admission_Setup/', methods=['POST','GET'])
@crossdomain(origin='*')
def Get_Given_Admission_Setup():
# On recupere le corps (payload) de la requete
@ -17240,10 +17267,102 @@ def get_help_article_alaune():
status, retval = help_articles.get_help_article_alaune(payload)
return jsonify(status=status, message=retval)
"""
API de recuperation de la liste des type d'evaluation (formation initiale)
autorisé
"""
@app.route('/myclass/api/get_FI_base_authorized_type_evaluation/', methods=['POST','GET'])
@crossdomain(origin='*')
def get_FI_base_authorized_type_evaluation():
# On recupere le corps (payload) de la requete
payload = mycommon.strip_dictionary (request.form.to_dict())
print(" ### get_FI_base_authorized_type_evaluation payload = ",payload)
status, retval = mycommon.get_FI_base_authorized_type_evaluation(payload)
return jsonify(status=status, message=retval)
"""
API qui permet d'ajouter le stage d'un etudiant
"""
@app.route('/myclass/api/Add_Stage_Inscrit/', methods=['POST','GET'])
@crossdomain(origin='*')
def Add_Stage_Inscrit():
# On recupere le corps (payload) de la requete
payload = mycommon.strip_dictionary (request.form.to_dict())
print(" ### Add_Stage_Inscrit payload = ",payload)
status, retval = stage_mgt.Add_Stage_Inscrit(payload)
return jsonify(status=status, message=retval)
"""
API qui permet de mettre à jour le stage d'un etudiant
"""
@app.route('/myclass/api/Update_Stage_Inscrit/', methods=['POST','GET'])
@crossdomain(origin='*')
def Update_Stage_Inscrit():
# On recupere le corps (payload) de la requete
payload = mycommon.strip_dictionary (request.form.to_dict())
print(" ### Update_Stage_Inscrit payload = ",payload)
status, retval = stage_mgt.Update_Stage_Inscrit(payload)
return jsonify(status=status, message=retval)
"""
API qui permet le verrouillage et déverrouillage des données d'un stage
"""
@app.route('/myclass/api/Lock_Unlock_Stage_Inscrit/', methods=['POST','GET'])
@crossdomain(origin='*')
def Lock_Unlock_Stage_Inscrit():
# On recupere le corps (payload) de la requete
payload = mycommon.strip_dictionary (request.form.to_dict())
print(" ### Lock_Unlock_Stage_Inscrit payload = ",payload)
status, retval = stage_mgt.Lock_Unlock_Stage_Inscrit(payload)
return jsonify(status=status, message=retval)
"""
API qui permet de recuperer la liste des stage des stages d'un inscrit sans filter
"""
@app.route('/myclass/api/Get_Stage_Inscrit_no_filter/', methods=['POST','GET'])
@crossdomain(origin='*')
def Get_Stage_Inscrit_no_filter():
# On recupere le corps (payload) de la requete
payload = mycommon.strip_dictionary (request.form.to_dict())
print(" ### Get_Stage_Inscrit_no_filter payload = ",payload)
status, retval = stage_mgt.Get_Stage_Inscrit_no_filter(payload)
return jsonify(status=status, message=retval)
"""
API qui permet la suppression d'un stage
"""
@app.route('/myclass/api/Delete_Given_Stage_Inscrit/', methods=['POST','GET'])
@crossdomain(origin='*')
def Delete_Given_Stage_Inscrit():
# On recupere le corps (payload) de la requete
payload = mycommon.strip_dictionary (request.form.to_dict())
print(" ### Delete_Given_Stage_Inscrit payload = ",payload)
status, retval = stage_mgt.Delete_Given_Stage_Inscrit(payload)
return jsonify(status=status, message=retval)
"""
API pour recuperer les données d'un stage
"""
@app.route('/myclass/api/Get_Given_Stage_data/', methods=['POST','GET'])
@crossdomain(origin='*')
def Get_Given_Stage_data():
# On recupere le corps (payload) de la requete
payload = mycommon.strip_dictionary (request.form.to_dict())
print(" ### Get_Given_Stage_data payload = ",payload)
status, retval = stage_mgt.Get_Given_Stage_data(payload)
return jsonify(status=status, message=retval)
if __name__ == '__main__':
print(" debut api")

View File

@ -50,7 +50,7 @@ def Add_Evaluation_Type(diction):
"""
Verification des input acceptés
"""
field_list = ['token', 'code', 'nom', 'description']
field_list = ['token', 'nom', 'description', 'base_authorized_type_evaluation_id']
incom_keys = diction.keys()
for val in incom_keys:
@ -62,7 +62,7 @@ def Add_Evaluation_Type(diction):
"""
Verification des champs obligatoires
"""
field_list_obligatoire = ['token', 'code', 'nom', ]
field_list_obligatoire = ['token', 'nom', 'base_authorized_type_evaluation_id']
for val in field_list_obligatoire:
if val not in diction:
@ -83,19 +83,44 @@ def Add_Evaluation_Type(diction):
if (local_status is not True):
return local_status, my_partner
"""
Verifier la validité de base_authorized_type_evaluation_id
"""
# Verifier que ce code n'existe pas déjà
is_existe_type_evaluation = MYSY_GV.dbname['type_evaluation'].count_documents({'code':str(diction['code']),
print("### ", {'_id': ObjectId(str(diction['base_authorized_type_evaluation_id'])),
'valide': '1',
'locked': '0',
'partner_owner_recid': 'default'})
is_valide_base_authorized_type_evaluation_id = MYSY_GV.dbname[
'base_authorized_type_evaluation'].count_documents(
{'_id': ObjectId(str(diction['base_authorized_type_evaluation_id'])),
'valide': '1',
'locked': '0',
'partner_owner_recid': 'default'})
if (is_valide_base_authorized_type_evaluation_id != 1):
mycommon.myprint(
str(inspect.stack()[0][3]) + " L'identifiant du base_authorized_type_evaluation est invalide ")
return False, " L'identifiant du base_authorized_type_evaluation d'évaluation est invalide "
base_authorized_type_evaluation_data = MYSY_GV.dbname[
'base_authorized_type_evaluation'].find_one(
{'_id': ObjectId(str(diction['base_authorized_type_evaluation_id'])),
'valide': '1',
'locked': '0',
'partner_owner_recid': 'default'})
# Verifier que base_authorized_type_evaluation_id n'est
is_existe_type_evaluation = MYSY_GV.dbname['type_evaluation'].count_documents({'base_authorized_type_evaluation_id':str(diction['base_authorized_type_evaluation_id']),
'valide':'1',
'partner_owner_recid':str(my_partner['recid'])})
if( is_existe_type_evaluation > 0 ):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Un type d'évaluation avec le code '" + str(diction['code']) + "' existe déjà ")
return False, " Un type d'évaluation avec le code '" + str(diction['code']) + "' existe déjà "
str(inspect.stack()[0][3]) + " Un type d'évaluation avec le code '" + str(base_authorized_type_evaluation_data['code']) + "' existe déjà ")
return False, " Un type d'évaluation avec le code '" + str(base_authorized_type_evaluation_data['code']) + "' existe déjà "
new_data = diction
@ -109,6 +134,7 @@ def Add_Evaluation_Type(diction):
new_data['valide'] = "1"
new_data['locked'] = "0"
new_data['code'] = base_authorized_type_evaluation_data['code']
new_data['update_date'] = str(datetime.now())
new_data['update_by'] = str(my_partner['_id'])
new_data['partner_owner_recid'] = str(my_partner['recid'])
@ -139,7 +165,7 @@ def Update_Evaluation_Type(diction):
"""
Verification des input acceptés
"""
field_list = ['token', '_id', 'code', 'nom', 'description',]
field_list = ['token', '_id', 'code', 'nom', 'description', 'base_authorized_type_evaluation_id']
incom_keys = diction.keys()
for val in incom_keys:
@ -151,7 +177,7 @@ def Update_Evaluation_Type(diction):
"""
Verification des champs obligatoires
"""
field_list_obligatoire = ['token', '_id',]
field_list_obligatoire = ['token', '_id', 'base_authorized_type_evaluation_id']
for val in field_list_obligatoire:
if val not in diction:
@ -186,6 +212,25 @@ def Update_Evaluation_Type(diction):
return False, " L'identifiant du type d'évaluation est invalide "
"""
Verifier la validité de base_authorized_type_evaluation_id
"""
is_valide_base_authorized_type_evaluation_id = MYSY_GV.dbname['base_authorized_type_evaluation'].count_documents({'_id':ObjectId(str(diction['base_authorized_type_evaluation_id'])),
'valide':'1',
'locked':'0',
'partner_owner_recid':'default'})
if( is_valide_base_authorized_type_evaluation_id != 1):
mycommon.myprint(
str(inspect.stack()[0][3]) + " L'identifiant du base_authorized_type_evaluation est invalide ")
return False, " L'identifiant du base_authorized_type_evaluation d'évaluation est invalide "
base_authorized_type_evaluation_data = MYSY_GV.dbname[
'base_authorized_type_evaluation'].find_one(
{'_id': ObjectId(str(diction['base_authorized_type_evaluation_id'])),
'valide': '1',
'locked': '0',
'partner_owner_recid': 'default'})
local_id = str(diction['_id'])
@ -201,6 +246,7 @@ def Update_Evaluation_Type(diction):
data_cle['_id'] = ObjectId(local_id)
data_cle['valide'] = "1"
data_cle['locked'] = "0"
data_cle['code'] = base_authorized_type_evaluation_data['code']
result = MYSY_GV.dbname['type_evaluation'].find_one_and_update(
data_cle,
@ -356,6 +402,18 @@ def Get_List_Type_Evaluation(diction):
for retval in MYSY_GV.dbname['type_evaluation'].find(data_cle).sort([("_id", pymongo.DESCENDING), ]):
user = retval
base_authorized_type_evaluation_code = ""
if( "base_authorized_type_evaluation_id" in retval.keys() and retval['base_authorized_type_evaluation_id']):
base_authorized_type_evaluation_data = MYSY_GV.dbname['base_authorized_type_evaluation'].find_one({"_id":ObjectId(str(retval['base_authorized_type_evaluation_id'])),
'valide':'1',
'locked':'0',
'partner_owner_recid':'default'})
if(base_authorized_type_evaluation_data and "code" in base_authorized_type_evaluation_data.keys()):
base_authorized_type_evaluation_code = base_authorized_type_evaluation_data['code']
user['code'] = base_authorized_type_evaluation_code
user['id'] = str(val_tmp)
val_tmp = val_tmp + 1
@ -457,8 +515,7 @@ def Add_Class_UE_Evaluation(diction):
Verification des input acceptés
"""
field_list = ['token', 'class_id', 'class_ue_id', 'type_evaluation_id', 'max_note', 'ponderation_type_eval',
'type_notation'
]
'type_notation' ]
incom_keys = diction.keys()
for val in incom_keys:

View File

@ -3410,6 +3410,89 @@ def Get_Partner_Client_Communication_Contact(diction):
"""
Cette fonction permet de recuperer la liste de TOUS les contacts chez un client
"""
def Get_Partner_Client_All_Contact(diction):
try:
diction = mycommon.strip_dictionary(diction)
"""
Verification des input acceptés
"""
field_list = ['token','_id']
incom_keys = diction.keys()
for val in incom_keys:
if val not in field_list and val.startswith('my_') is False:
mycommon.myprint(str(
inspect.stack()[0][3]) + " Le champ '" + val + "' n'est pas autorisé ")
return False, " Les informations fournies sont incorrectes",
"""
Verification des champs obligatoires
"""
field_list_obligatoire = ['token','_id']
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 la liste des arguments ")
return False, " Les informations fournies sont incorrectes",
"""
Verification de l'identité et autorisation de l'entité qui
appelle cette API
"""
token = ""
if ("token" in diction.keys()):
if diction['token']:
token = diction['token']
local_status, my_partner = mycommon.Check_Connexion_And_Return_Partner_Data(diction)
if (local_status is not True):
return local_status, my_partner
# Verifier la validité du client
is_client_exist_valide = MYSY_GV.dbname['partner_client'].count_documents({"_id":ObjectId(str(diction['_id'])),
'valide': '1',
'locked':'0',
'partner_owner_recid':str(my_partner['recid'])})
if( is_client_exist_valide <= 0 ):
mycommon.myprint(
str(inspect.stack()[0][3]) + " - L'identifiant du client est invalide ")
return False, " L'identifiant du client est invalide ",
# field_list = ['token', 'related_collection', 'related_collection_owner_id']
new_diction = {}
new_diction['related_collection'] = "partner_client"
new_diction['related_collection_recid'] = diction['_id']
new_diction['partner_recid'] = my_partner['recid']
new_diction['valide'] = "1"
new_diction['locked'] = "0"
RetObject = []
val_tmp = 1
for retval in MYSY_GV.dbname['contact'].find(new_diction):
user = retval
user['id'] = str(val_tmp)
val_tmp = val_tmp + 1
RetObject.append(mycommon.JSONEncoder().encode(user))
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) + " - Line : " + str(exc_tb.tb_lineno))
return False, " Impossible de récupérer la liste des contacts du client "
"""
Cette fonction retourne les contact d'un client qui
doivent etre inlus dans les communication, ceci en mode non connecté.

View File

@ -5193,42 +5193,42 @@ def Create_Invoice_Avoir_Total(diction):
inscription_data = MYSY_GV.dbname['inscription'].find_one({'invoiced_ref': {'$regex': str(is_valide_invoice_data['invoice_header_ref_interne'])},
for inscription_data in MYSY_GV.dbname['inscription'].find({'invoiced_ref': {'$regex': str(is_valide_invoice_data['invoice_header_ref_interne'])},
'valide':'1',
'partner_owner_recid':str(my_partner['recid'])})
'partner_owner_recid':str(my_partner['recid'])}):
if(inscription_data ):
current_invoiced_ref = ""
local_invoiced = ""
if( "invoiced_ref" in inscription_data.keys() ):
current_invoiced_ref = inscription_data['invoiced_ref']
if(inscription_data ):
current_invoiced_ref = ""
local_invoiced = ""
if( "invoiced_ref" in inscription_data.keys() ):
current_invoiced_ref = inscription_data['invoiced_ref']
if ("invoiced" in inscription_data.keys()):
local_invoiced = inscription_data['invoiced']
if ("invoiced" in inscription_data.keys()):
local_invoiced = inscription_data['invoiced']
new_data = {}
new_data['invoiced_ref'] = current_invoiced_ref+", "+str(credit_notes_reference)
new_data['invoiced'] = "0"
new_data = {}
new_data['invoiced_ref'] = current_invoiced_ref+", "+str(credit_notes_reference)
new_data['invoiced'] = "0"
print( {'_id': ObjectId(str(inscription_data['_id'])), 'valide': '1',
'partner_owner_recid': str(my_partner['recid'])
} )
print( {'_id': ObjectId(str(inscription_data['_id'])), 'valide': '1',
'partner_owner_recid': str(my_partner['recid'])
} )
ret_val2 = MYSY_GV.dbname['inscription'].find_one_and_update(
{'_id': ObjectId(str(inscription_data['_id'])), 'valide': '1',
'partner_owner_recid': str(my_partner['recid'])
},
{"$set": new_data},
return_document=ReturnDocument.AFTER,
upsert=False,
)
ret_val2 = MYSY_GV.dbname['inscription'].find_one_and_update(
{'_id': ObjectId(str(inscription_data['_id'])), 'valide': '1',
'partner_owner_recid': str(my_partner['recid'])
},
{"$set": new_data},
return_document=ReturnDocument.AFTER,
upsert=False,
)
#icici : on met à jour la staturation de la session (si elle est partiel ou non facturer)
#icici : on met à jour la statut de facturation de la session (si elle est partiel ou non facturer)
nb_line_inscritpion_invoiced = MYSY_GV.dbname['inscription'].count_documents(
{'session_id': str(ret_val2['session_id']), 'valide': '1',
'partner_owner_recid': str(my_partner['recid']),
'invoiced':'1'
})
if( nb_line_inscritpion_invoiced > 0 ):

View File

@ -2414,6 +2414,8 @@ def Get_List_Plateforme_Partnaire_With_Filter(diction):
return local_status, my_partner
is_plateforme_super_admin = "0"
print("my_partnermy_partnermy_partner = ", my_partner)
if( "plateforme_super_admin" in my_partner.keys()):
is_plateforme_super_admin = my_partner['plateforme_super_admin']

View File

@ -8398,3 +8398,61 @@ def regex_replace_cartere( chaine ):
return chaine
"""
Cette fonction permet de recuperer la liste des
type_evaluation autorisé (collection base_authorized_type_evaluation)
"""
def get_FI_base_authorized_type_evaluation(diction=None):
try:
# Dictionnaire des champs utilisables
field_list = ['token']
incom_keys = diction.keys()
for val in incom_keys:
if val not in field_list and val.startswith('my_') is False:
myprint(
str(inspect.stack()[0][3]) + " - Le champ '" + val + "' n'existe pas, requete annulée")
return False, " Impossible de récupérer les informations"
'''
Une fois qu'on a controlé que toutes les clés mise dans l'API sont correcte. etape precedente,
On controle que les champs obligatoires sont presents dans la liste
'''
field_list_obligatoire = ['token']
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 la liste des arguments ")
return False, " Impossible de récupérer les informations"
local_status, my_partner = Check_Connexion_And_Return_Partner_Data(diction)
if (local_status is not True):
return local_status, my_partner
qery_images = {'locked': '0', 'valide': '1', 'related_collection': 'partnair_account',
'related_collection_recid': str(my_partner['recid'])}
#print(" ### qery_images = ", qery_images)
RetObject = []
partner_images = {}
cpt = 0
# Recuperation des image 'logo' et 'cachet' si le partenaire en a
for retVal in MYSY_GV.dbname['base_authorized_type_evaluation'].find({'locked': '0', 'valide': '1',
'partner_owner_recid': 'default'}):
user = retVal
user['id'] = cpt
cpt = cpt + 1
RetObject.append(JSONEncoder().encode(user))
return True, RetObject
except Exception as e:
exc_type, exc_obj, exc_tb = sys.exc_info()
print(str(inspect.stack()[0][3]) + " -" + str(e) + " - ERRORRRR AT Line : " + str(exc_tb.tb_lineno))
return False, " Impossible de récupérer la liste des type d'évaluation autorisés"

View File

@ -91,9 +91,9 @@ def Add_Stage_Inscrit(diction):
Verification des input acceptés
"""
field_list = ['token', 'eu_id', 'inscrit_id', 'session_id', 'partner_client_tuteur_id',
'internal_tuteur_id', 'partner_client_id'
'internal_tuteur_id', 'partner_client_id', 'description',
'date_debut', 'date_fin', 'adresse', 'cp', 'ville',
'pays', 'objectifs', 'objectifs', 'autre_disposition', 'comment']
'pays', 'objectif', 'autre_disposition', 'comment', 'telephone', 'email']
incom_keys = diction.keys()
for val in incom_keys:
@ -105,7 +105,7 @@ def Add_Stage_Inscrit(diction):
"""
Verification des champs obligatoires
"""
field_list_obligatoire = ['token', 'eu_id', 'inscrit_id', 'session_id',]
field_list_obligatoire = ['token', 'eu_id', 'inscrit_id', 'session_id', 'partner_client_id']
for val in field_list_obligatoire:
if val not in diction:
@ -177,15 +177,20 @@ def Add_Stage_Inscrit(diction):
return False, " L'identifiant de l'entreprise est invalide "
"""
Si partner_client_tuteur_id, alors verifier la validité du tuteur en entreprise. c'est une ressource de 'autre rh'
Si partner_client_tuteur_id est un contact dans l'entreprise. il faut donct aller cherche dans la collection
'contact'
"""
if ('partner_client_tuteur_id' in diction.keys() and diction['partner_client_tuteur_id']):
is_valide_partner_client_id = MYSY_GV.dbname['ressource_humaine'].count_documents(
{'_id': ObjectId(str(diction['partner_client_tuteur_id'])),
'partner_recid': my_partner[
'recid'],
'valide': '1',
'locked': '0'})
if ('partner_client_tuteur_id' in diction.keys() and diction['partner_client_tuteur_id']
and 'partner_client_id' in diction.keys() and diction['partner_client_id']):
qry_contact_client = {}
qry_contact_client['related_collection'] = "partner_client"
qry_contact_client['related_collection_recid'] = diction['partner_client_id']
qry_contact_client['partner_recid'] = my_partner['recid']
qry_contact_client['valide'] = "1"
qry_contact_client['locked'] = "0"
is_valide_partner_client_id = MYSY_GV.dbname['contact'].count_documents(
qry_contact_client)
if (is_valide_partner_client_id != 1):
mycommon.myprint(
@ -207,8 +212,8 @@ def Add_Stage_Inscrit(diction):
if (is_valide_session_id != 1):
mycommon.myprint(
str(inspect.stack()[0][3]) + " L'identifiant de la session (class) est invalide ")
return False, " L'identifiant de la session (class) est invalide "
str(inspect.stack()[0][3]) + " L'identifiant de la promotion est invalide ")
return False, " L'identifiant de la promotion est invalide "
"""
Si inscrit_id, verifier la validité de l'inscrit
@ -232,7 +237,7 @@ def Add_Stage_Inscrit(diction):
Verifier que les date_debut et date_fin sont ok
"""
date_debut = str(diction['date_debut']).strip()[0:10]
local_status = mycommon.CheckisDate_Hours(date_debut)
local_status = mycommon.CheckisDate(date_debut)
if (local_status is False):
mycommon.myprint(
str(inspect.stack()[0][
@ -241,7 +246,7 @@ def Add_Stage_Inscrit(diction):
return False, " La date de fin stage n'est pas au format jj/mm/aaaa"
date_fin = str(diction['date_fin']).strip()[0:10]
local_status = mycommon.CheckisDate_Hours(date_fin)
local_status = mycommon.CheckisDate(date_fin)
if (local_status is False):
mycommon.myprint(
str(inspect.stack()[0][
@ -250,8 +255,8 @@ def Add_Stage_Inscrit(diction):
return False, " La date de fin n'est pas au format jj/mm/aaaa"
## Verification de la cohérence des dates. Date_du doit <= Date_au
if (datetime.strptime(str(date_debut).strip(), '%d/%m/%Y %H:%M') > datetime.strptime(
str(date_fin).strip(), '%d/%m/%Y %H:%M')):
if (datetime.strptime(str(date_debut).strip(), '%d/%m/%Y') > datetime.strptime(
str(date_fin).strip(), '%d/%m/%Y')):
mycommon.myprint(
str(inspect.stack()[0][3]) + " La date debut " + str(date_debut) + " est postérieure à la date de fin " + str(date_fin) + " ")
@ -320,11 +325,10 @@ def Update_Stage_Inscrit(diction):
"""
Verification des input acceptés
"""
field_list = ['token', 'stage_id', 'eu_id', 'inscrit_id', 'session_id', 'partner_client_tuteur_id',
'internal_tuteur_id', 'partner_client_id'
'date_debut', 'date_fin', 'adresse', 'cp', 'ville',
'pays', 'objectifs', 'objectifs', 'autre_disposition', 'comment',
'statut']
field_list = ['token', 'stage_id', 'eu_id', 'inscrit_id', 'session_id', 'partner_client_tuteur_id',
'internal_tuteur_id', 'partner_client_id', 'description',
'date_debut', 'date_fin', 'adresse', 'cp', 'ville',
'pays', 'objectif', 'autre_disposition', 'comment', 'telephone', 'email']
incom_keys = diction.keys()
for val in incom_keys:
@ -336,7 +340,7 @@ def Update_Stage_Inscrit(diction):
"""
Verification des champs obligatoires
"""
field_list_obligatoire = ['token', 'stage_id', 'eu_id', 'inscrit_id', 'session_id',]
field_list_obligatoire = ['token', 'stage_id', 'eu_id', 'inscrit_id', 'session_id', 'partner_client_id']
for val in field_list_obligatoire:
if val not in diction:
@ -361,7 +365,7 @@ def Update_Stage_Inscrit(diction):
Verifier la validité du stage à modifier
"""
is_valide_stage_id = MYSY_GV.dbname['inscription_stage'].count_documents(
{'_id': ObjectId(str(diction['internal_tuteur_id'])),
{'_id': ObjectId(str(diction['stage_id'])),
'partner_owner_recid': my_partner[
'recid'],
'valide': '1',
@ -376,7 +380,7 @@ def Update_Stage_Inscrit(diction):
Verifier la validité du stage n'est pas verrouilée
"""
is_valide_stage_id_locked = MYSY_GV.dbname['inscription_stage'].count_documents(
{'_id': ObjectId(str(diction['internal_tuteur_id'])),
{'_id': ObjectId(str(diction['stage_id'])),
'partner_owner_recid': my_partner[
'recid'],
'valide': '1',
@ -448,15 +452,20 @@ def Update_Stage_Inscrit(diction):
return False, " L'identifiant de l'entreprise est invalide "
"""
Si partner_client_tuteur_id, alors verifier la validité du tuteur en entreprise. c'est une ressource de 'autre rh'
Si partner_client_tuteur_id est un contact dans l'entreprise. il faut donct aller cherche dans la collection
'contact'
"""
if ('partner_client_tuteur_id' in diction.keys() and diction['partner_client_tuteur_id']):
is_valide_partner_client_id = MYSY_GV.dbname['ressource_humaine'].count_documents(
{'_id': ObjectId(str(diction['partner_client_tuteur_id'])),
'partner_recid': my_partner[
'recid'],
'valide': '1',
'locked': '0'})
if ('partner_client_tuteur_id' in diction.keys() and diction['partner_client_tuteur_id']
and 'partner_client_id' in diction.keys() and diction['partner_client_id']):
qry_contact_client = {}
qry_contact_client['related_collection'] = "partner_client"
qry_contact_client['related_collection_recid'] = diction['partner_client_id']
qry_contact_client['partner_recid'] = my_partner['recid']
qry_contact_client['valide'] = "1"
qry_contact_client['locked'] = "0"
is_valide_partner_client_id = MYSY_GV.dbname['contact'].count_documents(
qry_contact_client)
if (is_valide_partner_client_id != 1):
mycommon.myprint(
@ -502,7 +511,7 @@ def Update_Stage_Inscrit(diction):
Verifier que les date_debut et date_fin sont ok
"""
date_debut = str(diction['date_debut']).strip()[0:10]
local_status = mycommon.CheckisDate_Hours(date_debut)
local_status = mycommon.CheckisDate(date_debut)
if (local_status is False):
mycommon.myprint(
str(inspect.stack()[0][
@ -511,7 +520,7 @@ def Update_Stage_Inscrit(diction):
return False, " La date de fin stage n'est pas au format jj/mm/aaaa"
date_fin = str(diction['date_fin']).strip()[0:10]
local_status = mycommon.CheckisDate_Hours(date_fin)
local_status = mycommon.CheckisDate(date_fin)
if (local_status is False):
mycommon.myprint(
str(inspect.stack()[0][
@ -520,8 +529,8 @@ def Update_Stage_Inscrit(diction):
return False, " La date de fin n'est pas au format jj/mm/aaaa"
## Verification de la cohérence des dates. Date_du doit <= Date_au
if (datetime.strptime(str(date_debut).strip(), '%d/%m/%Y %H:%M') > datetime.strptime(
str(date_fin).strip(), '%d/%m/%Y %H:%M')):
if (datetime.strptime(str(date_debut).strip(), '%d/%m/%Y') > datetime.strptime(
str(date_fin).strip(), '%d/%m/%Y')):
mycommon.myprint(
str(inspect.stack()[0][3]) + " La date debut " + str(date_debut) + " est postérieure à la date de fin " + str(date_fin) + " ")
@ -745,19 +754,97 @@ def Get_Stage_Inscrit_no_filter(diction):
qry = {"partner_owner_recid":str(my_partner['recid']), 'valide':'1', 'locked':'0', 'inscrit_id':str(diction['inscrit_id'])}
for New_retVal in MYSY_GV.dbname['inscription_stage'].find(qry).sort([("_id", pymongo.DESCENDING), ]):
user = New_retVal
user['id'] = str(val_tmp)
val_tmp = val_tmp + 1
is_session_ok = ""
code_session = ""
if( "session_id" in New_retVal.keys() and New_retVal['session_id']):
local_session_data = MYSY_GV.dbname['session_formation'].find_one({'_id':ObjectId(str(New_retVal['session_id'])),
"partner_owner_recid":str(my_partner['recid'])})
RetObject.append(mycommon.JSONEncoder().encode(user))
if( local_session_data and "code_session" in local_session_data.keys()):
is_session_ok = "1"
code_session = local_session_data['code_session']
is_client_ok = ""
client_raison_sociale = ""
if( "partner_client_id" in New_retVal.keys() and New_retVal['partner_client_id']):
local_client_data = MYSY_GV.dbname['partner_client'].find_one({'_id':ObjectId(str(New_retVal['partner_client_id'])),
"partner_owner_recid":str(my_partner['recid'])})
if( local_client_data):
is_client_ok = '1'
if( local_client_data and "raison_sociale" in local_client_data.keys()):
client_raison_sociale = local_client_data['raison_sociale']
is_tuteur_rh_ok = ""
tuteur_rh_nom_prenom = ""
if ("internal_tuteur_id" in New_retVal.keys() and New_retVal['internal_tuteur_id']):
local_internal_tuteur_data = MYSY_GV.dbname['ressource_humaine'].find_one(
{'_id': ObjectId(str(New_retVal['internal_tuteur_id'])),
"partner_recid": str(my_partner['recid'])})
if( local_internal_tuteur_data):
is_tuteur_rh_ok = "1"
local_nom = ""
local_prenom = ""
if(local_internal_tuteur_data and "nom" in local_internal_tuteur_data.keys()):
local_nom = local_internal_tuteur_data['nom']
if (local_internal_tuteur_data and "prenom" in local_internal_tuteur_data.keys()):
local_prenom = local_internal_tuteur_data['prenom']
tuteur_rh_nom_prenom = local_nom+" "+local_prenom
is_tuteur_entreprise_ok = ""
tuteur_entreprise_nom_prenom = ""
if ("partner_client_tuteur_id" in New_retVal.keys() and New_retVal['partner_client_tuteur_id']):
local_tuteur_entreprise_data = MYSY_GV.dbname['contact'].find_one(
{'_id': ObjectId(str(New_retVal['partner_client_tuteur_id'])),
"partner_recid": str(my_partner['recid'])})
if (local_tuteur_entreprise_data):
is_tuteur_entreprise_ok = "1"
local_nom = ""
local_prenom = ""
if (local_tuteur_entreprise_data and "nom" in local_tuteur_entreprise_data.keys()):
local_nom = local_tuteur_entreprise_data['nom']
if (local_tuteur_entreprise_data and "prenom" in local_tuteur_entreprise_data.keys()):
local_prenom = local_tuteur_entreprise_data['prenom']
tuteur_entreprise_nom_prenom = local_nom + " " + local_prenom
if( is_session_ok == "1" and is_client_ok == "1"):
user = New_retVal
user['id'] = str(val_tmp)
val_tmp = val_tmp + 1
user["tuteur_entreprise_nom_prenom"] = tuteur_entreprise_nom_prenom
user["tuteur_ecole_nom_prenom"] = tuteur_rh_nom_prenom
user["client_raison_sociale"] = client_raison_sociale
if( is_tuteur_rh_ok != "1"):
user['internal_tuteur_id'] = ""
if( is_tuteur_entreprise_ok != "1"):
user['partner_client_tuteur_id'] = ""
RetObject.append(mycommon.JSONEncoder().encode(user))
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) + " - Line : " + str(exc_tb.tb_lineno))
return False, " Impossible de récupérer la liste des compétences "
return False, " Impossible de récupérer la liste des stages "
@ -771,7 +858,7 @@ def Delete_Given_Stage_Inscrit(diction):
"""
Verification des input acceptés
"""
field_list = ['token', 'inscrit_id', ]
field_list = ['token', 'stage_id', ]
incom_keys = diction.keys()
for val in incom_keys:
@ -783,7 +870,7 @@ def Delete_Given_Stage_Inscrit(diction):
"""
Verification des champs obligatoires
"""
field_list_obligatoire = ['token', 'inscrit_id', ]
field_list_obligatoire = ['token', 'stage_id', ]
for val in field_list_obligatoire:
if val not in diction:
@ -804,16 +891,9 @@ def Delete_Given_Stage_Inscrit(diction):
if (local_status is not True):
return local_status, my_partner
# Verifier l'existance de l'opportunité
is_opportunit_valide = MYSY_GV.dbname['inscription_stage'].count_documents({'_id':ObjectId(str(diction['inscrit_id'])),
'partner_owner_recid':str(my_partner['recid'])})
if (is_opportunit_valide != 1):
mycommon.myprint(
str(inspect.stack()[0][3]) + " L'identifiant de la compétence est invalide ")
return False, " L'identifiant de la compétence est invalide "
qry = {'_id':ObjectId(str(diction['inscrit_id'])), 'partner_owner_recid':str(my_partner['recid'])}
qry = {'_id':ObjectId(str(diction['stage_id'])), 'partner_owner_recid':str(my_partner['recid'])}
ret_del_competence = MYSY_GV.dbname['inscription_stage'].delete_many(qry)
@ -826,6 +906,117 @@ def Delete_Given_Stage_Inscrit(diction):
return False, " Impossible de supprimer le stage "
"""
Recuperer des données d'un stage
"""
def Get_Given_Stage_data(diction):
try:
diction = mycommon.strip_dictionary(diction)
"""
Verification des input acceptés
"""
field_list = ['token', 'stage_id' ]
incom_keys = diction.keys()
for val in incom_keys:
if val not in field_list and val.startswith('my_') is False:
mycommon.myprint(str(
inspect.stack()[0][3]) + " Le champ '" + val + "' n'est pas autorisé")
return False, " Les informations fournies sont incorrectes"
"""
Verification des champs obligatoires
"""
field_list_obligatoire = ['token', 'stage_id' ]
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 la liste des arguments ")
return False, " Les informations fournies sont incorrectes"
"""
Verification de l'identité et autorisation de l'entité qui
appelle cette API
"""
token = ""
if ("token" in diction.keys()):
if diction['token']:
token = diction['token']
local_status, my_partner = mycommon.Check_Connexion_And_Return_Partner_Data(diction)
if (local_status is not True):
return local_status, my_partner
RetObject = []
val_tmp = 0
qry = {"partner_owner_recid":str(my_partner['recid']), 'valide':'1', 'locked':'0', '_id':ObjectId(str(diction['stage_id']))}
for New_retVal in MYSY_GV.dbname['inscription_stage'].find(qry).sort([("_id", pymongo.DESCENDING), ]):
is_session_ok = ""
code_session = ""
if ("session_id" in New_retVal.keys() and New_retVal['session_id']):
local_session_data = MYSY_GV.dbname['session_formation'].find_one(
{'_id': ObjectId(str(New_retVal['session_id'])),
"partner_owner_recid": str(my_partner['recid'])})
if (local_session_data and "code_session" in local_session_data.keys()):
is_session_ok = "1"
code_session = local_session_data['code_session']
is_client_ok = ""
if ("partner_client_id" in New_retVal.keys() and New_retVal['partner_client_id']):
local_client_data = MYSY_GV.dbname['partner_client'].find_one(
{'_id': ObjectId(str(New_retVal['partner_client_id'])),
"partner_owner_recid": str(my_partner['recid'])})
if (local_client_data):
is_client_ok = '1'
is_tuteur_rh_ok = ""
if ("internal_tuteur_id" in New_retVal.keys() and New_retVal['internal_tuteur_id']):
local_internal_tuteur_data = MYSY_GV.dbname['ressource_humaine'].find_one(
{'_id': ObjectId(str(New_retVal['internal_tuteur_id'])),
"partner_recid": str(my_partner['recid'])})
if (local_internal_tuteur_data):
is_tuteur_rh_ok = "1"
is_tuteur_entreprise_ok = ""
if ("partner_client_tuteur_id" in New_retVal.keys() and New_retVal['partner_client_tuteur_id']):
local_tuteur_entreprise_data = MYSY_GV.dbname['contact'].find_one(
{'_id': ObjectId(str(New_retVal['partner_client_tuteur_id'])),
"partner_recid": str(my_partner['recid'])})
if (local_tuteur_entreprise_data):
is_tuteur_entreprise_ok = "1"
if (is_session_ok == "1" and is_client_ok == "1"):
user = New_retVal
user['id'] = str(val_tmp)
val_tmp = val_tmp + 1
if (is_tuteur_rh_ok != "1"):
user['internal_tuteur_id'] = ""
if (is_tuteur_entreprise_ok != "1"):
user['partner_client_tuteur_id'] = ""
RetObject.append(mycommon.JSONEncoder().encode(user))
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) + " - Line : " + str(exc_tb.tb_lineno))
return False, " Impossible de récupérer les données du stage "
"""
6.4 Gestion administrative
Génération des conventions