20/09/22 - 12h00
parent
b57764c980
commit
b70e6a74f2
|
@ -76,7 +76,7 @@ LOG_FILE_NAME = "./Log/log_file.log"
|
|||
|
||||
|
||||
upload_folder = "./Data/"
|
||||
ALLOWED_EXTENSIONS = {'txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif'}
|
||||
ALLOWED_EXTENSIONS = {'txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif', 'webp'}
|
||||
logging.basicConfig( level=DEBUG_LEVEL, filename=LOG_FILE_NAME)
|
||||
AUTORIZED_SOURCE_IPV4=["127.0.0.1", "localhost", "88.170.110.220", "192.168.1.21", "192.168.1.48"]
|
||||
|
||||
|
@ -130,7 +130,7 @@ HELP_WORD_QUERY_LIMIT = 3
|
|||
'''
|
||||
Les formats d'image accepté
|
||||
'''
|
||||
IMG_FORMAT=['jpg', 'jpeg', 'png', 'jpe']
|
||||
IMG_FORMAT=['jpg', 'jpeg', 'png', 'jpe', 'webp']
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -1854,7 +1854,7 @@ def get_partner_class_external_code(diction):
|
|||
" filt_title = " + str(filt_title))
|
||||
|
||||
val_tmp = 1
|
||||
for retVal in coll_name.find({"$and": [{'valide': '1'}, {'locked': '0'},
|
||||
for retVal in coll_name.find_one({"$and": [{'valide': '1'}, {'locked': '0'},
|
||||
{'partner_owner_recid': user_recid},
|
||||
filt_external_code, filt_title, filt_internal_url]},
|
||||
{'external_code':1, 'internal_url':1},
|
||||
|
|
53
main.py
53
main.py
|
@ -916,7 +916,7 @@ def add_class_mass():
|
|||
return jsonify(status=status, message=retval)
|
||||
|
||||
'''
|
||||
test d'enregistrement d'une image
|
||||
Enregistrement d'une image de profil d'un utilisateur
|
||||
'''
|
||||
@app.route('/myclass/api/recordImage/', methods=['POST','GET'])
|
||||
@crossdomain(origin='*')
|
||||
|
@ -1475,7 +1475,7 @@ def removeLSaccount():
|
|||
return jsonify(status=status, message=message)
|
||||
|
||||
"""
|
||||
Correction
|
||||
Correction data - api oneshot
|
||||
"""
|
||||
@app.route('/myclass/api/correction_collection/', methods=['GET','POST'])
|
||||
@crossdomain(origin='*')
|
||||
|
@ -1485,6 +1485,55 @@ def correction_collection():
|
|||
status, message = mycommon.correction_collection()
|
||||
return jsonify(status=status, message=message)
|
||||
|
||||
|
||||
|
||||
"""
|
||||
Cette API recuperer l'image de profil d'une formation
|
||||
"""
|
||||
@app.route('/myclass/api/getRecodedClassImage/', methods=['POST','GET'])
|
||||
@crossdomain(origin='*')
|
||||
def getRecodedClassImage():
|
||||
# On recupere le corps (payload) de la requete
|
||||
payload = request.form.to_dict()
|
||||
print(" ### payload = ",payload)
|
||||
status, myimg= mycommon.getRecodedClassImage(payload)
|
||||
return jsonify(status=status, message=myimg)
|
||||
|
||||
|
||||
"""
|
||||
Cette API de Recuperation d'une image de profils d'une formation pour le mode non connecté. c'est a dire depuis le front
|
||||
"""
|
||||
@app.route('/myclass/api/getRecodedClassImage_from_front/', methods=['POST','GET'])
|
||||
@crossdomain(origin='*')
|
||||
def getRecodedClassImage_from_front():
|
||||
# On recupere le corps (payload) de la requete
|
||||
payload = request.form.to_dict()
|
||||
print(" ### payload = ",payload)
|
||||
status, myimg= mycommon.getRecodedClassImage_from_front(payload)
|
||||
return jsonify(status=status, message=myimg)
|
||||
|
||||
|
||||
|
||||
'''
|
||||
Enregistrement d'une image de profil d'une formation
|
||||
'''
|
||||
@app.route('/myclass/api/recordClassImage/', methods=['POST','GET'])
|
||||
@crossdomain(origin='*')
|
||||
def recordClassImage():
|
||||
# On recupere le corps (payload) de la requete
|
||||
payload = request.form.to_dict()
|
||||
print(" ### payload = ",payload)
|
||||
print(request.files)
|
||||
|
||||
if request.method == 'POST':
|
||||
# Create variable for uploaded file
|
||||
f = request.files['File']
|
||||
|
||||
status, message = mycommon.recordClassImage(f, app.config['UPLOAD_FOLDER'], payload)
|
||||
return jsonify(status=status, message=message)
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
print(" debut api")
|
||||
context = SSL.Context(SSL.SSLv23_METHOD)
|
||||
|
|
285
prj_common.py
285
prj_common.py
|
@ -114,11 +114,11 @@ def Upload_Save_IMG_File(file=None, Folder=None):
|
|||
Verification qu'il s'agit bien d'un fichier image ('jpg', 'jpeg', 'png', 'jpe', ...), dont le nom ne comporte pas de "."
|
||||
'''
|
||||
if(len(basename2) != 2 ):
|
||||
myprint(str(inspect.stack()[0][3]) + " - : Le nom du fichier est incorret")
|
||||
myprint(str(inspect.stack()[0][3]) + " - : Le nom du fichier "+str(file.filename)+" est incorret")
|
||||
return False, None
|
||||
|
||||
if( str(basename2[1]).lower() not in MYSY_GV.IMG_FORMAT):
|
||||
myprint(str(inspect.stack()[0][3]) + " - : Ce n'est pas un fichier image :"+str(MYSY_GV.IMG_FORMAT))
|
||||
myprint(str(inspect.stack()[0][3]) + " - : le ficier "+str(file.filename)+ ". L'extention '"+str(basename2[1])+"' n'est pas un fichier image. Les extentions autorisées sont :"+str(MYSY_GV.IMG_FORMAT))
|
||||
return False, None
|
||||
|
||||
|
||||
|
@ -1222,7 +1222,7 @@ def clean_emoji(sentence=None):
|
|||
|
||||
|
||||
'''
|
||||
test d'enregistrement d'une image
|
||||
Fonction d'enregistrement d'une image d'un profils
|
||||
'''
|
||||
def recordImage(file=None, Folder=None, diction=None):
|
||||
try:
|
||||
|
@ -1342,13 +1342,134 @@ def recordImage(file=None, Folder=None, diction=None):
|
|||
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
|
||||
|
||||
|
||||
|
||||
'''
|
||||
Test de recuperation d'une image
|
||||
Fonction d'enregistrement d'une image d'un profils d'une formation
|
||||
'''
|
||||
def recordClassImage(file=None, Folder=None, diction=None):
|
||||
try:
|
||||
|
||||
# Dictionnaire des champs utilisables
|
||||
field_list = ['token', 'type', 'class_external_code']
|
||||
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():
|
||||
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', 'type', 'class_external_code']
|
||||
for val in field_list_obligatoire:
|
||||
if str(val).lower() not in diction:
|
||||
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']
|
||||
|
||||
mytype = ""
|
||||
# recuperation des paramettre
|
||||
if ("type" in diction.keys()):
|
||||
if diction['type']:
|
||||
mytype = diction['type']
|
||||
|
||||
|
||||
myclassexternalcode = ""
|
||||
if ("class_external_code" in diction.keys()):
|
||||
if diction['class_external_code']:
|
||||
myclassexternalcode = diction['class_external_code']
|
||||
|
||||
'''
|
||||
Verification de la validité du token et recuperation du recid du user
|
||||
'''
|
||||
retval = check_user_validity("", str(mytoken))
|
||||
|
||||
if retval is False:
|
||||
myprint(str(inspect.stack()[0][3]) + " - Le token n'est pas valide")
|
||||
return False, "L'email ou le token ne sont pas valident"
|
||||
|
||||
|
||||
|
||||
if (mytype == "partner"):
|
||||
user_recid = get_parnter_recid_from_token(str(mytoken))
|
||||
if user_recid is False:
|
||||
myprint(str(inspect.stack()[0][3]) + " - Impossible de recuperer le recid du partner")
|
||||
return False, " Les informations d'identification sont incorrectes"
|
||||
else:
|
||||
myprint(str(inspect.stack()[0][3]) + " - l'API est incorrecte. le type n'est pas renseingé")
|
||||
return False, " Les informations d'identification sont incorrectes"
|
||||
|
||||
|
||||
myuserrecid = user_recid
|
||||
|
||||
status, saved_file = Upload_Save_IMG_File(file, Folder)
|
||||
if (status == False):
|
||||
return False, "Impossible d'inserer l'image de la formation "
|
||||
|
||||
# " Lecture du fichier "
|
||||
print(" Lecture du fichier : " + saved_file + ". le token est :" + str(mytoken))
|
||||
nb_line = 0
|
||||
coll_name = MYSY_GV.dbname['image_ch']
|
||||
|
||||
with open(saved_file, "rb") as imageFile:
|
||||
|
||||
# strimg = base64.b64encode(imageFile.read())
|
||||
strimg = base64.b64encode(imageFile.read())
|
||||
|
||||
new_diction = {}
|
||||
new_diction['img'] = strimg
|
||||
new_diction['type'] = 'profil_class'
|
||||
new_diction['recid'] = myuserrecid
|
||||
new_diction['class_external_code'] = myclassexternalcode
|
||||
new_diction['valide'] = '1'
|
||||
new_diction['date_update'] = str(datetime.now())
|
||||
new_diction['locked'] = "0"
|
||||
|
||||
ret_val = coll_name.find_one_and_update({"recid": myuserrecid, "valide": "1", "locked": "0", "class_external_code":str(myclassexternalcode)},
|
||||
{"$set": {"img": strimg, "date_update": str(datetime.now()),
|
||||
"type": "profil_class", "recid": myuserrecid, "valide": "1",
|
||||
"locked": "0",
|
||||
"class_external_code":str(myclassexternalcode)}},
|
||||
upsert=True,
|
||||
return_document=ReturnDocument.AFTER
|
||||
)
|
||||
|
||||
if ret_val and ret_val['_id']:
|
||||
myprint(" L'image de la formation "+str(myclassexternalcode)+" a bien ete enregistrée. ")
|
||||
return True, " L'image de la formation "+str(myclassexternalcode)+" a bien ete enregistrée. "
|
||||
else:
|
||||
myprint(" IMPOSSIBLE D'ENREGISTRER L'IMAGE de la formation "+str(myclassexternalcode))
|
||||
return False, "IMPOSSIBLE D'ENREGISTRER L'IMAGE de la formation "+str(myclassexternalcode)
|
||||
|
||||
|
||||
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 de la formation "+str(myclassexternalcode)
|
||||
|
||||
|
||||
|
||||
'''
|
||||
Recuperation d'une image de profils
|
||||
'''
|
||||
def getRecodedImage(diction=None):
|
||||
try:
|
||||
# Dictionnaire des champs utilisables
|
||||
|
@ -1437,6 +1558,160 @@ def getRecodedImage(diction=None):
|
|||
|
||||
|
||||
|
||||
'''
|
||||
Recuperation d'une image de profils d'une formation
|
||||
'''
|
||||
def getRecodedClassImage(diction=None):
|
||||
try:
|
||||
# Dictionnaire des champs utilisables
|
||||
field_list = ['token', 'type', 'class_external_code']
|
||||
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():
|
||||
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','type','class_external_code']
|
||||
for val in field_list_obligatoire:
|
||||
if str(val).lower() not in diction:
|
||||
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']
|
||||
|
||||
mytype = ""
|
||||
if ("type" in diction.keys()):
|
||||
if diction['type']:
|
||||
mytype = diction['type']
|
||||
|
||||
myclassexternalcode = ""
|
||||
if ("class_external_code" in diction.keys()):
|
||||
if diction['class_external_code']:
|
||||
myclassexternalcode = diction['class_external_code']
|
||||
|
||||
|
||||
'''
|
||||
Verification de la validité du token et recuperation du recid du user
|
||||
'''
|
||||
retval = check_user_validity("", str(mytoken))
|
||||
|
||||
if retval is False:
|
||||
myprint(str(inspect.stack()[0][3]) + " - Le token n'est pas valide")
|
||||
return False, "L'email ou le token ne sont pas valident"
|
||||
|
||||
|
||||
if (mytype == "partner"):
|
||||
user_recid = get_parnter_recid_from_token(str(mytoken))
|
||||
if user_recid is False:
|
||||
myprint(str(inspect.stack()[0][3]) + " - Impossible de recuperer le recid du user")
|
||||
return False, " Les informations d'identification sont incorrectes"
|
||||
|
||||
else:
|
||||
myprint(str(inspect.stack()[0][3]) + " - l'API est incorrecte. le type n'est pas renseingé")
|
||||
return False, " Les informations d'identification sont incorrectes"
|
||||
|
||||
myuserrecid = user_recid
|
||||
|
||||
|
||||
coll_name = MYSY_GV.dbname['image_ch']
|
||||
RetObject = []
|
||||
|
||||
for retVal in coll_name.find({'recid':myuserrecid, "type":"profil_class", "class_external_code":str(myclassexternalcode)} ):
|
||||
user2={}
|
||||
user2['date_update'] = retVal['date_update']
|
||||
decode = retVal['img'].decode()
|
||||
user2['img'] = decode
|
||||
data1 = json.loads(json.dumps(user2))
|
||||
|
||||
return True, data1
|
||||
|
||||
return False, ""
|
||||
|
||||
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, ""
|
||||
|
||||
|
||||
|
||||
'''
|
||||
Recuperation d'une image de profils d'une formation pour le mode non connecté. c'est a dire depuis le front
|
||||
'''
|
||||
def getRecodedClassImage_from_front(diction=None):
|
||||
try:
|
||||
# Dictionnaire des champs utilisables
|
||||
field_list = [ 'class_external_code']
|
||||
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():
|
||||
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 = ['class_external_code']
|
||||
for val in field_list_obligatoire:
|
||||
if str(val).lower() not in diction:
|
||||
myprint(
|
||||
str(inspect.stack()[0][3]) + " La valeur '" + val + "' n'est pas presente dans liste des champs")
|
||||
return False, "Impossible de se connecter"
|
||||
|
||||
|
||||
myclassexternalcode = ""
|
||||
if ("class_external_code" in diction.keys()):
|
||||
if diction['class_external_code']:
|
||||
myclassexternalcode = diction['class_external_code']
|
||||
|
||||
|
||||
coll_name = MYSY_GV.dbname['image_ch']
|
||||
RetObject = []
|
||||
|
||||
for retVal in coll_name.find({"type":"profil_class", "class_external_code":str(myclassexternalcode)} ):
|
||||
user2={}
|
||||
user2['date_update'] = retVal['date_update']
|
||||
decode = retVal['img'].decode()
|
||||
user2['img'] = decode
|
||||
data1 = json.loads(json.dumps(user2))
|
||||
|
||||
return True, data1
|
||||
|
||||
return False, ""
|
||||
|
||||
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, ""
|
||||
|
||||
|
||||
|
||||
|
||||
'''
|
||||
|
|
Loading…
Reference in New Issue