08/08/2023 - 16h
parent
2671a90c6e
commit
834646deab
|
@ -3,8 +3,11 @@
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="c6d0259a-16e1-410d-91a1-830590ee2a08" name="Changes" comment="06/08/23 - 23h">
|
<list default="true" id="c6d0259a-16e1-410d-91a1-830590ee2a08" name="Changes" comment="06/08/23 - 23h">
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" 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$/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$/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$/prj_common.py" beforeDir="false" afterPath="$PROJECT_DIR$/prj_common.py" afterDir="false" />
|
||||||
</list>
|
</list>
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||||
|
|
|
@ -446,7 +446,7 @@ ACTIVITE_STATUS = ['0', '-1', '1']
|
||||||
"""
|
"""
|
||||||
Les types d'image authorisé a etre stockés en base de données
|
Les types d'image authorisé a etre stockés en base de données
|
||||||
"""
|
"""
|
||||||
BDD_STOCKAGE_IMG = ['logo', 'cachet']
|
BDD_STOCKAGE_IMG = ['logo', 'cachet', 'user']
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2959,3 +2959,250 @@ def Send_LMS_Credentials_to_particpants(diction):
|
||||||
exc_type, exc_obj, exc_tb = sys.exc_info()
|
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))
|
print(str(inspect.stack()[0][3]) + " -" + str(e) + " - ERRORRRR AT Line : " + str(exc_tb.tb_lineno))
|
||||||
return False, " Impossible d'envoyer les informations de connexion à la plateforme LMS"
|
return False, " Impossible d'envoyer les informations de connexion à la plateforme LMS"
|
||||||
|
|
||||||
|
"""
|
||||||
|
Cette fonction ajoute une image de profil d'un stagaire
|
||||||
|
"""
|
||||||
|
def Update_Stagiaire_Image(file_img=None, Folder=None, diction=None):
|
||||||
|
try:
|
||||||
|
|
||||||
|
# Dictionnaire des champs utilisables
|
||||||
|
'''
|
||||||
|
# Verification que les champs reçus dans l'API sont bien dans la liste des champs autorisés
|
||||||
|
# Cela evite le cas ou une entité tierce ajouter les valeurs inconnu dans l'API
|
||||||
|
# Ici on doit mettre tous les champs possible (obligatoire ou non) de la BDD dans la liste
|
||||||
|
# field_list.
|
||||||
|
'''
|
||||||
|
field_list = ['token', 'file_img_recid', 'class_internal_url', 'session_id', 'email' ]
|
||||||
|
|
||||||
|
|
||||||
|
incom_keys = diction.keys()
|
||||||
|
|
||||||
|
|
||||||
|
for val in incom_keys:
|
||||||
|
if val not in field_list:
|
||||||
|
mycommon.myprint(str(inspect.stack()[0][3]) + " : Le champ '"+val + "' n'est pas autorisé ")
|
||||||
|
return False, " Le champ '" + val + "' n'est pas accepté "
|
||||||
|
|
||||||
|
'''
|
||||||
|
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:
|
||||||
|
mycommon.myprint(str(inspect.stack()[0][3]) + " - La valeur '" + val + "' n'est pas presente dans liste ")
|
||||||
|
return False, " La valeur '" + val + "' n'est pas presente dans liste "
|
||||||
|
|
||||||
|
# recuperation des paramettre
|
||||||
|
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
|
||||||
|
|
||||||
|
class_internal_url = ""
|
||||||
|
if ("class_internal_url" in diction.keys()):
|
||||||
|
if diction['class_internal_url']:
|
||||||
|
class_internal_url = diction['class_internal_url']
|
||||||
|
|
||||||
|
session_id = ""
|
||||||
|
if ("session_id" in diction.keys()):
|
||||||
|
if diction['session_id']:
|
||||||
|
session_id = diction['session_id']
|
||||||
|
|
||||||
|
email = ""
|
||||||
|
if ("email" in diction.keys()):
|
||||||
|
if diction['email']:
|
||||||
|
email = diction['email']
|
||||||
|
|
||||||
|
|
||||||
|
## Recuperation de l'"_id" du stagiaire -- Exceptionnement on va mettre dans "_id" dans le 'related_collection_recid'
|
||||||
|
local_retval = MYSY_GV.dbname['inscription'].find_one({'class_internal_url':str(class_internal_url),
|
||||||
|
'session_id':str(session_id), 'email':str(email) })
|
||||||
|
if( local_retval is None):
|
||||||
|
mycommon.myprint(str(inspect.stack()[0][3]) + " : Le stagiaire "+str(email)+" n'est pas reconnu pour la session "+str(str(session_id)) )
|
||||||
|
return False, " Le stagiaire n'est pas reconnu "
|
||||||
|
|
||||||
|
|
||||||
|
"""
|
||||||
|
A present que le partenaire est mis à jour / créé, on va mettre à jour les image logo et image cachet s'il y en a
|
||||||
|
"""
|
||||||
|
if( file_img ):
|
||||||
|
recordimage_diction = {}
|
||||||
|
recordimage_diction['token'] = diction['token']
|
||||||
|
recordimage_diction['related_collection'] = "inscription"
|
||||||
|
recordimage_diction['type_img'] = "user"
|
||||||
|
recordimage_diction['related_collection_recid'] = str(local_retval['_id'])
|
||||||
|
recordimage_diction['image_recid'] = diction['file_img_recid']
|
||||||
|
|
||||||
|
print(" ### recordimage_diction stagaire = ", recordimage_diction)
|
||||||
|
local_status, local_message = mycommon.recordClassImage_v2(file_img, MYSY_GV.upload_folder, recordimage_diction)
|
||||||
|
if( local_status is False):
|
||||||
|
return local_status, local_message
|
||||||
|
|
||||||
|
return True, "L'image du stagiaire a été correctement enregistrée"
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
exc_type, exc_obj, exc_tb = sys.exc_info()
|
||||||
|
mycommon.myprint(str(inspect.stack()[0][3]) + " -" + str(e) + " - ERRORRRR AT Line : " + str(exc_tb.tb_lineno))
|
||||||
|
return False, "Impossible d'enregistrer l'image du stagiaire"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
""" Recuperation de l'image d'un stagiaire
|
||||||
|
|
||||||
|
/!\ important : on prend le 'related_collection_recid' comme le '_id' de la collection inscription
|
||||||
|
"""
|
||||||
|
def getRecodedStagiaireImage_from_front(diction=None):
|
||||||
|
try:
|
||||||
|
# Dictionnaire des champs utilisables
|
||||||
|
field_list = ['token', 'class_internal_url', 'session_id', 'email']
|
||||||
|
incom_keys = diction.keys()
|
||||||
|
for val in incom_keys:
|
||||||
|
if val not in field_list:
|
||||||
|
mycommon.myprint(
|
||||||
|
str(inspect.stack()[0][3]) + " - Le champ '" + val + "' n'existe pas, requete annulée")
|
||||||
|
return False, " Impossible de recuperer 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', 'class_internal_url', 'session_id', 'email']
|
||||||
|
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 liste ")
|
||||||
|
return False, " Impossible de recuperer les informations"
|
||||||
|
|
||||||
|
|
||||||
|
local_status, my_partner = mycommon.Check_Connexion_And_Return_Partner_Data(diction)
|
||||||
|
if (local_status is not True):
|
||||||
|
return local_status, my_partner
|
||||||
|
|
||||||
|
class_internal_url = ""
|
||||||
|
if ("class_internal_url" in diction.keys()):
|
||||||
|
if diction['class_internal_url']:
|
||||||
|
class_internal_url = diction['class_internal_url']
|
||||||
|
|
||||||
|
session_id = ""
|
||||||
|
if ("session_id" in diction.keys()):
|
||||||
|
if diction['session_id']:
|
||||||
|
session_id = diction['session_id']
|
||||||
|
|
||||||
|
email = ""
|
||||||
|
if ("email" in diction.keys()):
|
||||||
|
if diction['email']:
|
||||||
|
email = diction['email']
|
||||||
|
|
||||||
|
## Recuperation de l'"_id" du stagiaire -- Exceptionnement on va mettre dans "_id" dans le 'related_collection_recid'
|
||||||
|
local_retval = MYSY_GV.dbname['inscription'].find_one({'class_internal_url': str(class_internal_url),
|
||||||
|
'session_id': str(session_id),
|
||||||
|
'email': str(email)})
|
||||||
|
if (local_retval is None):
|
||||||
|
mycommon.myprint(str(inspect.stack()[0][3]) + " : Le stagiaire " + str(
|
||||||
|
email) + " n'est pas reconnu pour la session " + str(str(session_id)))
|
||||||
|
return False, " Le stagiaire n'est pas reconnu "
|
||||||
|
|
||||||
|
|
||||||
|
qery_images = {'locked': '0', 'valide': '1', 'related_collection': 'inscription',
|
||||||
|
'related_collection_recid': str(local_retval['_id'])}
|
||||||
|
|
||||||
|
print(" ### qery_images = ", qery_images)
|
||||||
|
|
||||||
|
RetObject = []
|
||||||
|
partner_images = {}
|
||||||
|
# Recuperation des image 'logo' et 'cachet' si le partenaire en a
|
||||||
|
for retVal in MYSY_GV.dbname['mysy_images'].find(qery_images):
|
||||||
|
if ('type_img' in retVal.keys()):
|
||||||
|
if (retVal['type_img'] == "user"):
|
||||||
|
partner_images['logo_img'] = retVal['img'].decode()
|
||||||
|
partner_images['logo_img_recid'] = retVal['recid']
|
||||||
|
|
||||||
|
|
||||||
|
RetObject.append(mycommon.JSONEncoder().encode(partner_images))
|
||||||
|
|
||||||
|
print(" ### getRecodedStagiaireImage_from_front RetObject = ", RetObject)
|
||||||
|
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 recupérer l'image du stagiaire"
|
||||||
|
|
||||||
|
|
||||||
|
"""
|
||||||
|
Suppresion d'un image d'un stagiaire
|
||||||
|
"""
|
||||||
|
def DeleteImage_Stagiaire_v2(diction=None):
|
||||||
|
try:
|
||||||
|
|
||||||
|
# Dictionnaire des champs utilisables
|
||||||
|
field_list = ['token', 'image_recid', ]
|
||||||
|
incom_keys = diction.keys()
|
||||||
|
|
||||||
|
'''
|
||||||
|
# Verification que les champs reçus dans l'API sont bien dans la liste des champs autorisés
|
||||||
|
# Cela evite le cas ou une entité tierce ajouter les valeurs inconnu dans l'API
|
||||||
|
# Ici on doit mettre tous les champs possible (obligatoire ou non) de la BDD dans la liste
|
||||||
|
# field_list.
|
||||||
|
'''
|
||||||
|
for val in incom_keys:
|
||||||
|
if str(val).lower() not in str(field_list).lower():
|
||||||
|
mycommon.myprint(
|
||||||
|
str(inspect.stack()[0][3]) + " Le champ '" + val + "' n'est pas accepté dans cette API")
|
||||||
|
return False, " Impossible de se connecter"
|
||||||
|
|
||||||
|
'''
|
||||||
|
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', 'image_recid']
|
||||||
|
for val in field_list_obligatoire:
|
||||||
|
if str(val).lower() not in diction:
|
||||||
|
mycommon.myprint(
|
||||||
|
str(inspect.stack()[0][3]) + " La valeur '" + val + "' n'est pas presente dans liste des champs")
|
||||||
|
return False, "Impossible de se connecter"
|
||||||
|
|
||||||
|
mydata = {}
|
||||||
|
mytoken = ""
|
||||||
|
|
||||||
|
# recuperation des paramettre
|
||||||
|
if ("token" in diction.keys()):
|
||||||
|
if diction['token']:
|
||||||
|
mytoken = diction['token']
|
||||||
|
|
||||||
|
image_recid = ""
|
||||||
|
if ("image_recid" in diction.keys()):
|
||||||
|
if diction['image_recid']:
|
||||||
|
image_recid = diction['image_recid']
|
||||||
|
|
||||||
|
local_status, my_partner = mycommon.Check_Connexion_And_Return_Partner_Data(diction)
|
||||||
|
if (local_status is not True):
|
||||||
|
return local_status, my_partner
|
||||||
|
|
||||||
|
# " Lecture du fichier "
|
||||||
|
# print(" Lecture du fichier : " + saved_file + ". le token est :" + str(mytoken))
|
||||||
|
nb_line = 0
|
||||||
|
coll_name = MYSY_GV.dbname['mysy_images']
|
||||||
|
|
||||||
|
query_delete = {"recid": image_recid,}
|
||||||
|
|
||||||
|
print(" ### query_delete = ", query_delete)
|
||||||
|
ret_val = coll_name.delete_one({"recid": image_recid,}, )
|
||||||
|
|
||||||
|
print(" ### detelete ret_val = ", ret_val)
|
||||||
|
|
||||||
|
print(" ### recordClassImage_v2 :L'image a été correctement supprimée ")
|
||||||
|
return True, "L'image a été correctement supprimée"
|
||||||
|
|
||||||
|
|
||||||
|
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 D'ENREGISTRER L'IMAGE "
|
||||||
|
|
||||||
|
|
3872
Log/log_file.log
3872
Log/log_file.log
File diff suppressed because it is too large
Load Diff
48
main.py
48
main.py
|
@ -3495,6 +3495,54 @@ def Push_Class_To_MySy_LMS():
|
||||||
return jsonify(status=localStatus, message=message)
|
return jsonify(status=localStatus, message=message)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
"""
|
||||||
|
API permettant d'enregister une image en base de données
|
||||||
|
"""
|
||||||
|
@app.route('/myclass/api/Update_Stagiaire_Image/', methods=['POST','GET'])
|
||||||
|
@crossdomain(origin='*')
|
||||||
|
def Update_Stagiaire_Image():
|
||||||
|
# On recupere le corps (payload) de la requete
|
||||||
|
payload = mycommon.strip_dictionary (request.form.to_dict())
|
||||||
|
print(" ### Update_Stagiaire_Image : payload = ",payload)
|
||||||
|
|
||||||
|
if request.method == 'POST':
|
||||||
|
# Create variable for uploaded file
|
||||||
|
if ('file_img' in request.files.keys()):
|
||||||
|
file_img = request.files['file_img']
|
||||||
|
else:
|
||||||
|
file_img = None
|
||||||
|
print(" ### recordClassImage_v2 : Aucun fichier image à sauvegarder")
|
||||||
|
return False, "Aucun fichier image à enregistrer"
|
||||||
|
|
||||||
|
localStatus, message = inscription.Update_Stagiaire_Image(file_img, MYSY_GV.upload_folder, payload)
|
||||||
|
return jsonify(status=localStatus, message=message)
|
||||||
|
|
||||||
|
"""
|
||||||
|
Recuperation de l'image de profil d'un stagiaire
|
||||||
|
"""
|
||||||
|
@app.route('/myclass/api/getRecodedStagiaireImage_from_front/', methods=['POST','GET'])
|
||||||
|
@crossdomain(origin='*')
|
||||||
|
def getRecodedStagiaireImage_from_front():
|
||||||
|
# On recupere le corps (payload) de la requete
|
||||||
|
payload = mycommon.strip_dictionary (request.form.to_dict())
|
||||||
|
print(" ### getRecodedStagiaireImage_from_front payload = ",payload)
|
||||||
|
status, retval = inscription.getRecodedStagiaireImage_from_front(payload)
|
||||||
|
return jsonify(status=status, message=retval)
|
||||||
|
|
||||||
|
"""
|
||||||
|
API qui supprime l'image de profil d'un stagiaire
|
||||||
|
"""
|
||||||
|
@app.route('/myclass/api/DeleteImage_Stagiaire_v2/', methods=['POST','GET'])
|
||||||
|
@crossdomain(origin='*')
|
||||||
|
def DeleteImage_Stagiaire_v2():
|
||||||
|
# On recupere le corps (payload) de la requete
|
||||||
|
payload = mycommon.strip_dictionary (request.form.to_dict())
|
||||||
|
print(" ### DeleteImage_Stagiaire_v2 payload = ",payload)
|
||||||
|
status, retval = inscription.DeleteImage_Stagiaire_v2(payload)
|
||||||
|
return jsonify(status=status, message=retval)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
print(" debut api")
|
print(" debut api")
|
||||||
context = SSL.Context(SSL.SSLv23_METHOD)
|
context = SSL.Context(SSL.SSLv23_METHOD)
|
||||||
|
|
|
@ -1891,14 +1891,16 @@ def DeleteClassImage_v2(diction=None):
|
||||||
nb_line = 0
|
nb_line = 0
|
||||||
coll_name = MYSY_GV.dbname['mysy_images']
|
coll_name = MYSY_GV.dbname['mysy_images']
|
||||||
|
|
||||||
|
query_delete = {"recid":image_recid, 'related_collection_recid': str(my_partner['recid']) }
|
||||||
|
|
||||||
|
print(" ### query_delete = ", query_delete)
|
||||||
ret_val = coll_name.delete_one({"recid":image_recid,
|
ret_val = coll_name.delete_one({"recid":image_recid,
|
||||||
'related_collection_recid': str(my_partner['recid']) },)
|
'related_collection_recid': str(my_partner['recid']) },)
|
||||||
|
|
||||||
print(" ### detelete ret_val = ", ret_val)
|
print(" ### detelete ret_val = ", ret_val)
|
||||||
|
|
||||||
|
|
||||||
print(" ### recordClassImage_v2 :L'image a été correctement suppriméz ")
|
print(" ### recordClassImage_v2 :L'image a été correctement supprimée ")
|
||||||
return True, "L'image a été correctement supprimée"
|
return True, "L'image a été correctement supprimée"
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue