ChérifBALDE 2022-08-04 19:32:36 +02:00 committed by cherif
parent 927a2514c1
commit 2c42b09713
2 changed files with 191 additions and 2 deletions

15
main.py
View File

@ -1185,6 +1185,21 @@ def UpdateMetier():
'''
Cette API effectue la migration d'un compte utilisateur
vers un compte pro (ou compte partenaire)
'''
@app.route('/myclass/api/UpgradetoPro/', methods=['GET','POST'])
@crossdomain(origin='*')
def UpgradetoPro():
# On recupere le corps (payload) de la requete
payload = request.form.to_dict()
print(" ### payload = ", payload)
status, result = pa.UpgradetoPro(payload)
return jsonify(status=status, message=result)
if __name__ == '__main__':
print(" debut api")
context = SSL.Context(SSL.SSLv23_METHOD)

View File

@ -58,13 +58,13 @@ def add_partner_account(diction):
'''
field_list = ['nom', 'adr_street', 'adr_city', 'adr_zip', 'adr_country','link_linkedin','link_facebook','link_twitter',
'email','pwd', 'telephone','contact_nom','contact_prenom','contact_tel','contact_mail']
incom_keys = diction.keys()
for val in incom_keys:
if val not in field_list:
mycommon.myprint(str(inspect.stack()[0][3]) + " - Creation partner account : Le champ '" + val + "' n'existe pas, Creation partenaire annulée")
mycommon.myprint(str(inspect.stack()[0][3]) + " - Creation partner account : Le champ '" + val + "' n'est pas autorisé, Creation partenaire annulée")
return False, "Impossible de créer le partenaire"
'''
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
@ -732,3 +732,177 @@ def partner_login(diction):
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 de recuperer la formation"
"""
Cette fonction upgrade un compte utilisateur vers
un compte PRO (aussi appelé compte partenaire).
Ceci revient à créer un nouveau compte utilisateur. aini la personne en face
aura
- un compte utilisateur classique et
- un compte pro
En suite on desactive le compte utilisateur classique et on maintient que le compte pro.
Pour migrer un compte utilisateur classique vers un compte pro, voici ce qu'il faut faire :
1 - recuperer les infos du contact . ici à partir du token de la personne connectée, on peut aller chercher ses info.
2 - recuperer les infos de la société
3 - recuperer les infos sur pack
etape 1 : add_partner_account(diction)
etape 2 : Desactivation du compte utilisateur
"""
def UpgradetoPro(diction):
try:
field_list = ['token', 'nom', 'adr_street', 'adr_city', 'adr_zip', 'adr_country', 'link_linkedin', 'link_facebook',
'link_twitter', 'email', 'pwd', 'telephone', 'contact_nom', 'contact_prenom', 'contact_tel', 'contact_mail']
incom_keys = diction.keys()
for val in incom_keys:
if val not in field_list:
mycommon.myprint(str(inspect.stack()[0][
3]) + " - Creation partner account : Le champ '" + val + "' n'existe pas, UpgradetoPro annulée")
return False, "Impossible de créer le partenaire"
'''
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', 'nom', 'adr_street', 'adr_city', 'adr_zip', 'adr_country', 'email', 'telephone']
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 créer le partenaire"
token = ""
new_diction = {}
user_recid = "None"
if ("token" in diction.keys()):
if diction['token']:
token = diction['token']
if ( len(str(token)) > 0 ):
retval = mycommon.check_token_validity("", token)
if retval is False :
mycommon.myprint(str(inspect.stack()[0][3])+" - Le token n'est pas valide")
return False, "Le token n'est pas valide"
# Recuperation du recid de l'utilisateur
user_recid = mycommon.get_user_recid_from_token(token)
if user_recid is False:
mycommon.myprint(str(inspect.stack()[0][3])+" - Impossible de recuperer le token de l'utilisateur")
return False, " Impossible de migrer vers le compte pro"
# Recuperation des paramettre du compe
if ("nom" in diction.keys()):
if diction['nom']:
new_diction['nom'] = diction['nom']
if ("adr_street" in diction.keys()):
if diction['adr_street']:
new_diction['adr_street'] = diction['adr_street']
if ("adr_city" in diction.keys()):
if diction['adr_city']:
new_diction['adr_city'] = diction['adr_city']
if ("adr_zip" in diction.keys()):
if diction['adr_zip']:
new_diction['adr_zip'] = diction['adr_zip']
if ("adr_country" in diction.keys()):
if diction['adr_country']:
new_diction['adr_country'] = diction['adr_country']
if ("link_linkedin" in diction.keys()):
if diction['link_linkedin']:
new_diction['link_linkedin'] = diction['link_linkedin']
if ("link_facebook" in diction.keys()):
if diction['link_facebook']:
new_diction['link_facebook'] = diction['link_facebook']
if ("link_twitter" in diction.keys()):
if diction['link_twitter']:
new_diction['link_twitter'] = diction['link_twitter']
if ("email" in diction.keys()):
if diction['email']:
new_diction['email'] = diction['email']
if ("telephone" in diction.keys()):
if diction['telephone']:
new_diction['telephone'] = diction['telephone']
'''
Create default pwd for new account
'''
new_diction['pwd'] = mycommon.create_token_urlsafe();
'''
Recuperation des information du contact.
Pour memo, le compte utilisateur qui fait cette migration devient automatiquement
le contact principal du compte pro.
'''
coll_user_account = MYSY_GV.dbname['user_account']
for x in coll_user_account.find({"recid": user_recid}):
if ("email" in x.keys()):
if x['email']:
new_diction['contact_mail'] = x['email']
if x['last_name']:
new_diction['contact_nom'] = x['last_name']
if x['surname']:
new_diction['contact_prenom'] = x['surname']
if x['mob_phone']:
new_diction['contact_tel'] = x['mob_phone']
print(" new_diction la = "+str(new_diction))
status, retval = add_partner_account(new_diction)
if( status ):
'''
La migration s'est bien passée.
Maintenant mettre le compte utilisateur :
- "migrated : 1"
- "migrated_mail_account" : le mail du compte pro associé
- "migration_date" : datetime.now()
'''
mydata = {}
mydata['migrated'] = "1"
mydata['migrated_date'] = str(datetime.now())
mydata['migrated_mail_account'] = new_diction['email']
ret_val = coll_user_account.find_one_and_update(
{"recid": user_recid},
{"$set": mydata},
return_document=ReturnDocument.AFTER )
if (ret_val and ret_val['_id']):
mycommon.myprint(
str(inspect.stack()[0][3]) + " le compte recid "+str(user_recid)+" migré en compte pro "+str(mydata))
else:
mycommon.myprint(str(inspect.stack()[0][3]) + " impossible de migrer le user_account : " + str(user_recid)+" en compte pro")
return False, " Impossible de finaliser la migration vers le compte PRO : "
else:
return False, "Impossible de migrer le compte vers le compte pro"
return True, "Le compte à été bien migré vers un compte pro"
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 de migrer vers le compte pro"