339 lines
14 KiB
Python
339 lines
14 KiB
Python
"""
|
|
Ce fichier/class gerer tout ce qui est relatif aux prix des formation
|
|
- aux discounts accordés par client/famille.
|
|
Concrètement, il répond aux questions suivantes :
|
|
• Comment un éditeur de formation va proposer des prix spécifiques à un client / une famille / une entreprise.
|
|
• Comment un client peut voir la liste des prix spécifiques qui sont accordées.
|
|
|
|
"""
|
|
import pymongo
|
|
from pymongo import MongoClient
|
|
import json
|
|
from bson import ObjectId
|
|
import re
|
|
from datetime import datetime
|
|
import prj_common as mycommon
|
|
import secrets
|
|
import inspect
|
|
import sys, os
|
|
import csv
|
|
import pandas as pd
|
|
from pymongo import ReturnDocument
|
|
import GlobalVariable as MYSY_GV
|
|
from math import isnan
|
|
import GlobalVariable as MYSY_GV
|
|
import ela_index_bdd_classes as eibdd
|
|
import email_mgt as email
|
|
|
|
def add_business_price(diction):
|
|
try:
|
|
|
|
'''
|
|
# 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', 'client_recid', 'discount', 'date_du', 'date_au']
|
|
|
|
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 autorisé "
|
|
|
|
'''
|
|
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', 'client_recid', 'discount', 'date_du', 'date_au']
|
|
|
|
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 du recid du partner
|
|
mydata = {}
|
|
mytoken = ""
|
|
if ("token" in diction.keys()):
|
|
if diction['token']:
|
|
mytoken = diction['token']
|
|
|
|
partner_recid = mycommon.get_parnter_recid_from_token(mytoken)
|
|
if (partner_recid is False):
|
|
mycommon.myprint(
|
|
str(inspect.stack()[0][3]) + " - Impossible de recuperer les donnees du partnaire ")
|
|
return False, "Impossible de recuperer les donnees du partnaire "
|
|
|
|
mydata['partner_recid'] = partner_recid
|
|
|
|
discount = str(diction['discount']).strip()
|
|
if (mycommon.IsFloat(discount) is False):
|
|
mycommon.myprint(
|
|
str(inspect.stack()[0][
|
|
3]) + " Le montant de la reduction est incorrecte ")
|
|
return False, " Le montant de la reduction est incorrecte "
|
|
|
|
mydata['discount'] = discount
|
|
|
|
date_du = str(diction['date_du']).strip()[0:10]
|
|
date_au = str(diction['date_au']).strip()[0:10]
|
|
|
|
is_date_du = mycommon.CheckisDate(date_du)
|
|
is_date_au = mycommon.CheckisDate(date_au)
|
|
|
|
if (is_date_du is False or is_date_au is False):
|
|
mycommon.myprint(
|
|
str(inspect.stack()[0][
|
|
3]) + " - Impossible de créer le prix, Les dates sont incorrectes ")
|
|
return False, " Impossible de créer le prix, Les dates sont incorrectes"
|
|
|
|
mydata['date_du'] = date_du
|
|
mydata['date_au'] = date_au
|
|
|
|
|
|
client_recid = str(diction['client_recid']).strip()
|
|
local_status = mycommon.get_user_data_from_recid(client_recid)
|
|
if(local_status is False ):
|
|
mycommon.myprint(
|
|
str(inspect.stack()[0][
|
|
3]) + " - Impossible de créer le prix, Le client n'est pas valide ")
|
|
return False, " Impossible de créer le prix, Le client n'est pas valide "
|
|
|
|
mydata['client_recid'] = client_recid
|
|
mydata['valide'] = "1"
|
|
mydata['date_update'] = datetime.now().strftime("%d/%m/%Y")
|
|
|
|
ret_val = MYSY_GV.dbname['business_prices'].insert_one(mydata)
|
|
if (ret_val.acknowledged is None):
|
|
mycommon.myprint(
|
|
str(inspect.stack()[0][
|
|
3]) + " - Impossible de créer le prix, ")
|
|
return False, " Impossible de créer le prix, "
|
|
|
|
|
|
|
|
return True, " Le prix a été correctement inséré"
|
|
|
|
|
|
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'ajouter un prix "
|
|
|
|
|
|
def update_business_price(diction):
|
|
try:
|
|
'''
|
|
# 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', 'price_id', 'discount', 'date_du', 'date_au']
|
|
|
|
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 autorisé "
|
|
|
|
'''
|
|
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', 'price_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 liste ")
|
|
return False, " La valeur '" + val + "' n'est pas presente dans liste"
|
|
|
|
# Recuperation du recid du partner
|
|
mydata = {}
|
|
mytoken = ""
|
|
if ("token" in diction.keys()):
|
|
if diction['token']:
|
|
mytoken = diction['token']
|
|
|
|
partner_recid = mycommon.get_parnter_recid_from_token(mytoken)
|
|
if (partner_recid is False):
|
|
mycommon.myprint(
|
|
str(inspect.stack()[0][3]) + " - Impossible de recuperer les donnees du partnaire ")
|
|
return False, "Impossible de recuperer les donnees du partnaire "
|
|
|
|
discount = str(diction['discount']).strip()
|
|
if (mycommon.IsFloat(discount) is False):
|
|
mycommon.myprint(
|
|
str(inspect.stack()[0][
|
|
3]) + " Le montant de la reduction est incorrecte ")
|
|
return False, " Le montant de la reduction est incorrecte "
|
|
|
|
mydata['discount'] = discount
|
|
|
|
date_du = str(diction['date_du']).strip()[0:10]
|
|
date_au = str(diction['date_au']).strip()[0:10]
|
|
|
|
is_date_du = mycommon.CheckisDate(date_du)
|
|
is_date_au = mycommon.CheckisDate(date_au)
|
|
|
|
if (is_date_du is False or is_date_au is False):
|
|
mycommon.myprint(
|
|
str(inspect.stack()[0][
|
|
3]) + " - Impossible de créer le prix, Les dates sont incorrectes ")
|
|
return False, " Impossible de créer le prix, Les dates sont incorrectes"
|
|
|
|
mydata['date_du'] = date_du
|
|
mydata['date_au'] = date_au
|
|
mydata['date_update'] = datetime.now().strftime("%d/%m/%Y")
|
|
|
|
ret_val = MYSY_GV.dbname['business_prices'].find_one_and_update(
|
|
{'_id': ObjectId(str(str(diction['price_id']).strip())), },
|
|
{"$set": mydata},
|
|
upsert=False,
|
|
return_document=ReturnDocument.AFTER
|
|
)
|
|
|
|
if ret_val is None or ret_val['_id'] is None:
|
|
mycommon.myprint(str(inspect.stack()[0][3]) + " Impossible de modifier le prix ")
|
|
return False, " Impossible de modifier le prix "
|
|
|
|
|
|
return True, "Le prix a été bien mis à jour"
|
|
|
|
|
|
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 mettre à jour un prix "
|
|
|
|
|
|
def delete_business_price(diction):
|
|
try:
|
|
'''
|
|
# 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', 'price_id', 'discount', 'date_du', 'date_au']
|
|
|
|
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 autorisé "
|
|
|
|
'''
|
|
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', 'price_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 liste ")
|
|
return False, " La valeur '" + val + "' n'est pas presente dans liste"
|
|
|
|
# Recuperation du recid du partner
|
|
mydata = {}
|
|
mytoken = ""
|
|
if ("token" in diction.keys()):
|
|
if diction['token']:
|
|
mytoken = diction['token']
|
|
|
|
partner_recid = mycommon.get_parnter_recid_from_token(mytoken)
|
|
if (partner_recid is False):
|
|
mycommon.myprint(
|
|
str(inspect.stack()[0][3]) + " - Impossible de recuperer les donnees du partnaire ")
|
|
return False, "Impossible de recuperer les donnees du partnaire "
|
|
|
|
mydata['date_update'] = datetime.now().strftime("%d/%m/%Y")
|
|
mydata['valide'] = "0"
|
|
|
|
ret_val = MYSY_GV.dbname['business_prices'].find_one_and_update(
|
|
{'_id': ObjectId(str(str(diction['price_id']).strip())), },
|
|
{"$set": mydata},
|
|
upsert=False,
|
|
return_document=ReturnDocument.AFTER
|
|
)
|
|
|
|
if ret_val is None or ret_val['_id'] is None:
|
|
mycommon.myprint(str(inspect.stack()[0][3]) + " Impossible de supprimer le prix ")
|
|
return False, " Impossible de supprimer le prix "
|
|
|
|
|
|
return True, "Le prix a été bien supprimer"
|
|
|
|
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 supprimer un prix "
|
|
|
|
|
|
|
|
def recherche_business_price(diction):
|
|
try:
|
|
'''
|
|
# 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', 'client_recid', 'discount', 'date_du', 'date_au']
|
|
|
|
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 autorisé "
|
|
|
|
'''
|
|
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', 'client_recid']
|
|
|
|
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 du recid du partner
|
|
mydata = {}
|
|
mytoken = ""
|
|
if ("token" in diction.keys()):
|
|
if diction['token']:
|
|
mytoken = diction['token']
|
|
|
|
partner_recid = mycommon.get_parnter_recid_from_token(mytoken)
|
|
if (partner_recid is False):
|
|
mycommon.myprint(str(inspect.stack()[0][3]) + " - Impossible de recuperer les donnees du partnaire ")
|
|
return False, "Impossible de recuperer les donnees du partnaire "
|
|
|
|
client_recid = str(diction['client_recid']).strip()
|
|
local_status = mycommon.get_user_data_from_recid(client_recid)
|
|
if (local_status is False):
|
|
mycommon.myprint(
|
|
str(inspect.stack()[0][
|
|
3]) + " - Impossible de créer le prix, Le client n'est pas valide ")
|
|
return False, " Impossible de créer le prix, Le client n'est pas valide "
|
|
|
|
|
|
return True, "ok"
|
|
|
|
|
|
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 supprimer un prix "
|