26/11/2023 22h

master
cherif 2023-11-26 22:08:13 +01:00
parent 48b484860b
commit 7399df3ec4
9 changed files with 1226 additions and 7 deletions

View File

@ -5,7 +5,12 @@
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" 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$/Session_Formation_Sequence.py" beforeDir="false" afterPath="$PROJECT_DIR$/Session_Formation_Sequence.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/emargement.py" beforeDir="false" afterPath="$PROJECT_DIR$/emargement.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/base_config_modele_journee.py" beforeDir="false" afterPath="$PROJECT_DIR$/base_config_modele_journee.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/main.py" beforeDir="false" afterPath="$PROJECT_DIR$/main.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/partner_document_mgt.py" beforeDir="false" afterPath="$PROJECT_DIR$/partner_document_mgt.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/partner_invoice.py" beforeDir="false" afterPath="$PROJECT_DIR$/partner_invoice.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/prj_common.py" beforeDir="false" afterPath="$PROJECT_DIR$/prj_common.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ressources_humaines.py" beforeDir="false" afterPath="$PROJECT_DIR$/ressources_humaines.py" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />

File diff suppressed because it is too large Load Diff

View File

@ -188,6 +188,8 @@ def Add_Session_Sequence(diction):
my_data['valide'] = "1"
my_data['locked'] = "0"
my_data['partner_owner_recid'] = str(my_partner['recid'])
my_data['update_by'] = str(my_partner['_id'])
MYSY_GV.dbname['session_formation_sequence'].insert_one(my_data)
@ -617,6 +619,7 @@ def Update_Session_Sequence(diction):
update_data['valide'] = "1"
update_data['locked'] = "0"
update_data['date_update'] = str(datetime.now())
update_data['update_by'] = str(my_partner['_id'])
update = MYSY_GV.dbname['session_formation_sequence'].update_one({'_id': ObjectId(str(diction['_id'])),
'partner_owner_recid': str(my_partner['recid']),
@ -941,7 +944,6 @@ def Add_Sequence_Affectation_Ressource_Poste(diction):
token = diction['token']
# Recuperation du recid du partenaire
partner_recid = mycommon.get_parnter_recid_from_token(str(token))
if partner_recid is False:
@ -1048,7 +1050,7 @@ def Add_Sequence_Affectation_Ressource_Poste(diction):
my_data['valide'] = "1"
my_data['locked'] = "0"
my_data['date_update'] = str(datetime.now().strftime("%d/%m/%Y %H:%M:%S"))
my_data['update_by'] = str(my_partner_data['_id'])
inserted_data = MYSY_GV.dbname['session_formation_sequence_affectation'].insert_one(my_data)
if( inserted_data is None):
@ -1085,6 +1087,7 @@ def Add_Sequence_Affectation_Ressource_Poste(diction):
data_agenda['locked'] = "0"
data_agenda['event_type'] = "planning"
data_agenda['sequence_session_id'] = str(sequence_session_existe_data['_id'])
data_agenda['update_by'] = str(my_partner_data['_id'])
#print(" #### data_agenda to add = ", data_agenda)
@ -1330,6 +1333,7 @@ def Update_Sequence_Affectation_Ressource_Poste(diction):
update_data['valide'] = "1"
update_data['locked'] = "0"
update_data['date_update'] = str(datetime.now().strftime("%d/%m/%Y %H:%M:%S"))
update_data['update_by'] = str(my_partner_data['_id'])
inserted_data = MYSY_GV.dbname['session_formation_sequence_affectation'].find_one_and_update(
{'_id': ObjectId(str(diction['_id'])), 'valide': "1", "locked": "0",

View File

@ -295,3 +295,113 @@ def Get_Default_Modele_Journee(diction):
return False, " Impossible de récupérer la liste des points de paramétrage (jounée de travail) "
"""
Recuperation des heures de debut et fin des journée.
Cette fonction est utilisé dans les planning en gle.
"""
def Get_Default_Debut_Fin_journee_Modele_Journee(diction):
try:
diction = mycommon.strip_dictionary(diction)
"""
Verification des input acceptés
"""
field_list = ['token',]
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'existe pas")
return False, " Les informations fournies sont incorrectes",
"""
Verification des champs obligatoires
"""
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, " 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 = []
qry = {'partner_owner_recid': str(my_partner['recid']), 'valide': '1',
'locked': '0'}
New_retVal_count = MYSY_GV.dbname['base_config_modele_journee'].count_documents(qry)
if( New_retVal_count > 1):
mycommon.myprint(
str(inspect.stack()[0][3]) + " - Plusieurs modèles existe. Les données sont incohérentes ")
return False, " Plusieurs modèles existe. Les données sont incohérentes",
elif (New_retVal_count <= 0):
# Aucun modèle pour ce partenaire, on va aller chercher le modèle par defaut de mysy
qry_mysy = {'partner_owner_recid': "default", 'valide': '1',
'locked': '0'}
New_retVal_count_mysy = MYSY_GV.dbname['base_config_modele_journee'].count_documents(qry_mysy)
if( New_retVal_count_mysy != 1):
mycommon.myprint(
str(inspect.stack()[0][3]) + " - Aucun modèle de journée de travail n'est configuré dans le système ")
return False, " Aucun modèle de journée de travail n'est configuré dans le système ",
else:
New_retVal_mysy_data = MYSY_GV.dbname['base_config_modele_journee'].find_one( qry_mysy)
if ("debut_fin_journee" not in New_retVal_mysy_data.keys()):
mycommon.myprint(
str(inspect.stack()[0][
3]) + " - Votre configuration ne dispose pas d'un début et d'une fin de journée ")
return False, " Votre configuration ne dispose pas d'un début et d'une fin de journée ",
debut_fin_journee = New_retVal_mysy_data['debut_fin_journee']
RetObject.append(mycommon.JSONEncoder().encode(debut_fin_journee))
# print(" ### retval_json =", retval_json)
return True, RetObject
elif (New_retVal_count <= 1):
qry = {'partner_owner_recid': str(my_partner['recid']), 'valide': '1',
'locked': '0'}
New_retVal_data = MYSY_GV.dbname['base_config_modele_journee'].find_one(qry)
if( "debut_fin_journee" not in New_retVal_data.keys()):
mycommon.myprint(
str(inspect.stack()[0][
3]) + " - Votre configuration ne dispose pas d'un début et d'une fin de journée ")
return False, " Votre configuration ne dispose pas d'un début et d'une fin de journée ",
debut_fin_journee = New_retVal_data['debut_fin_journee']
RetObject.append(mycommon.JSONEncoder().encode(debut_fin_journee))
# print(" ### retval_json =", retval_json)
return True, RetObject
else:
mycommon.myprint(
str(inspect.stack()[0][3]) + " - Impossible de trouver un modèle de journée de travail dans le système ")
return False, " Impossible de trouver un modèle de journée de travail dans le système ",
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 points de paramétrage (jounée de travail) "

15
main.py
View File

@ -5733,6 +5733,21 @@ def Get_Default_Modele_Journee():
return jsonify(status=status, message=retval)
"""
API Recuperation des heures de début et de fin de journée pour les planning.
"""
@app.route('/myclass/api/Get_Default_Debut_Fin_journee_Modele_Journee/', methods=['POST','GET'])
@crossdomain(origin='*')
def Get_Default_Debut_Fin_journee_Modele_Journee():
# On recupere le corps (payload) de la requete
payload = mycommon.strip_dictionary (request.form.to_dict())
print(" ### Get_Default_Debut_Fin_journee_Modele_Journee payload = ",payload)
status, retval = base_config_modele_journee.Get_Default_Debut_Fin_journee_Modele_Journee(payload)
return jsonify(status=status, message=retval)
if __name__ == '__main__':
print(" debut api")
context = SSL.Context(SSL.SSLv23_METHOD)

View File

@ -164,6 +164,7 @@ def Add_Partner_Document(diction):
data['valide'] = '1'
data['locked'] = '0'
data['date_update'] = str(datetime.now())
data['update_by'] = str(my_partner['_id'])
inserted_id = ""
inserted_id = MYSY_GV.dbname['courrier_template'].insert_one(data).inserted_id
@ -328,6 +329,7 @@ def Update_Partner_Document(diction):
data_update['valide'] = '1'
data_update['locked'] = '0'
data_update['date_update'] = str(datetime.now())
data_update['update_by'] = str(my_partner['_id'])
"""
Clés de mise à jour

View File

@ -235,6 +235,7 @@ def Invoice_Partner_Order(diction):
new_invoice_data_header['invoice_header_ref_interne'] = retval_sequence_invoice['prefixe']+str(current_seq_value)
new_invoice_data_header['invoice_header_type'] = "facture"
new_invoice_data_header['invoice_date'] = invoice_date_time
new_invoice_data_header['update_by'] = str(my_partner['_id'])
inserted_invoice_id = MYSY_GV.dbname['partner_invoice_header'].insert_one(new_invoice_data_header).inserted_id
if (not inserted_invoice_id):
order_updated = MYSY_GV.dbname['partner_order_header'].update_one({{'_id': ObjectId(
@ -257,6 +258,7 @@ def Invoice_Partner_Order(diction):
new_invoice_data_line['invoice_line_type'] = "facture"
new_invoice_data_line['invoice_date'] = invoice_date_time
new_invoice_data_line['invoice_header_id'] = str(inserted_invoice_id)
new_invoice_data_line['update_by'] = str(my_partner['_id'])
#print(" ### on Va inserer la ligne de factue new_invoice_data_line = ", new_invoice_data_line)
@ -553,6 +555,7 @@ def Get_Given_Partner_Invoice_Lines(diction):
user['date_update'] = retval['date_update']
user['update_by'] = str(my_partner['_id'])
user['partner_owner_recid'] = retval['partner_owner_recid']
user['invoice_line_type'] = retval['invoice_line_type']
@ -731,6 +734,7 @@ def Get_Given_Partner_Invoice_Lines_From_Invoice_ref_interne(diction):
user['order_line_montant_hors_taxes'] = "0"
user['date_update'] = retval['date_update']
user['update_by'] = str(my_partner['_id'])
user['partner_owner_recid'] = retval['partner_owner_recid']
user['invoice_line_type'] = retval['invoice_line_type']
@ -1241,6 +1245,7 @@ def Get_Given_Line_Of_Partner_Invoice_Lines(diction):
user['valide'] = retval['valide']
user['locked'] = retval['locked']
user['date_update'] = retval['date_update']
user['update_by'] = str(my_partner['_id'])
user['partner_owner_recid'] = retval['partner_owner_recid']
@ -1473,6 +1478,7 @@ def GerneratePDF_Partner_Invoice(diction):
user['order_line_montant_hors_taxes'] = "0"
user['date_update'] = retval['date_update']
user['update_by'] = str(my_partner['_id'])
user['partner_owner_recid'] = retval['partner_owner_recid']
if ("order_line_comment" in retval.keys()):
@ -1740,6 +1746,7 @@ def Send_Partner_Invoice_By_Email(diction):
user['order_line_montant_hors_taxes'] = "0"
user['date_update'] = retval['date_update']
user['update_by'] = str(my_partner['_id'])
user['partner_owner_recid'] = retval['partner_owner_recid']
if ("order_line_comment" in retval.keys()):

View File

@ -387,7 +387,7 @@ def get_partner_data_from_recid(user_recid = ""):
# print(" myquery pr demo_account = " + str(myquery))
tmp_count = coll_token.count_documents({'recid': str(user_recid), 'valide': '1', 'locked':'0'})
if (tmp_count <= 0):
return False, ""
return False, "Le token est invalide"
coll_token = MYSY_GV.dbname['partnair_account']
tmp_val = coll_token.find_one({'recid': str(user_recid), 'active': '1', 'locked':'0'})
@ -400,6 +400,32 @@ def get_partner_data_from_recid(user_recid = ""):
return False
"""
Recuperation des données d'une personne connecté à partir du token
"""
def get_connected_data_from_token(connected_token = ""):
try:
if len(str(connected_token)) <= 0:
myprint(" Le token cid est vide")
return False, ""
coll_token = MYSY_GV.dbname['partner_token']
# print(" myquery pr demo_account = " + str(myquery))
tmp_count = coll_token.count_documents({'token': str(connected_token), 'valide': '1', 'locked': '0'})
if (tmp_count <= 0):
return False, "Le token est invalide"
coll_token = MYSY_GV.dbname['partnair_account']
tmp_val = coll_token.find_one({'token': str(connected_token), 'active': '1', 'locked': '0'})
return True, tmp_val
except Exception as e:
exc_type, exc_obj, exc_tb = sys.exc_info()
myprint(str(inspect.stack()[0][3]) + " -" + str(e) + " - ERRORRRR AT Line : " + str(exc_tb.tb_lineno))
return False, "Impossible de récupérer les données de l'entité connectée"
"""
Recuperation des données du partner à partir du token
"""
@ -444,6 +470,8 @@ def get_user_email_from_token(token = ""):
myprint(str(inspect.stack()[0][3]) + " -" + str(e) + " - ERRORRRR AT Line : " + str(exc_tb.tb_lineno))
return False
'''
recuperation d'email du user from recid
'''
@ -467,7 +495,7 @@ def get_user_email_from_recid(recid = ""):
except Exception as e:
exc_type, exc_obj, exc_tb = sys.exc_info()
myprint(str(inspect.stack()[0][3]) + " -" + str(e) + " - ERRORRRR AT Line : " + str(exc_tb.tb_lineno))
return False, "Impossible de supprimer le compte utilisateur"
return False, "Impossible de recuperer l'email le compte utilisateur"
'''
recuperation du recid du partner
@ -3472,7 +3500,16 @@ def Check_Connexion_And_Return_Partner_Data(diction):
myprint(str(inspect.stack()[0][3]) + " - impossible de récupérer les données du partenaire")
return False, str(inspect.stack()[0][3]) + " - impossible de récupérer les données du partenaire. "
return True, my_partner
"""
/!\ Update du 26/11/2023 :
On a plutot besoin de recuperer les données du user connecté au lieu du partenaire
"""
local_status, my_connected_user = get_connected_data_from_token(token)
if (local_status is False):
myprint(str(inspect.stack()[0][3]) + " - impossible de récupérer les données du partenaire")
return False, str(inspect.stack()[0][3]) + " - impossible de récupérer les données du partenaire. "
return True, my_connected_user
except Exception as e:
exc_type, exc_obj, exc_tb = sys.exc_info()

View File

@ -159,6 +159,7 @@ def Add_Partner_Admin_Ressource_Humaine_No_Toke(diction):
data_to_add['date_update'] = str(datetime.now())
MYSY_GV.dbname['user_access_right'].find_one_and_update(
{'user_id': str(inserted_id), 'module_name': str(retval['module_name'])},
{"$set": data_to_add},
@ -422,6 +423,7 @@ def Add_Ressource_Humaine(diction):
data['valide'] = '1'
data['locked'] = '0'
data['date_update'] = str(datetime.now())
data['update_by'] = str(my_partner['_id'])
data['is_partner_admin_account'] = "0"
# Creation du RecId
@ -681,6 +683,7 @@ def Update_Ressource_Humaine(diction):
data_update['valide'] = '1'
data_update['locked'] = '0'
data_update['date_update'] = str(datetime.now())
data_update['update_by'] = str(my_partner['_id'])
"""
Clés de mise à jour
@ -2539,6 +2542,7 @@ def Add_Affectation_Ressource_Humaine_Poste(diction):
my_data['valide'] = "1"
my_data['locked'] = "0"
my_data['date_update'] = str(datetime.now().strftime("%d/%m/%Y %H:%M:%S"))
my_data['update_by'] = str(my_partner_data['_id'])
inserted_data = MYSY_GV.dbname['ressource_humaine_affectation'].insert_one(my_data)
@ -2687,6 +2691,7 @@ def Update_Affectation_Ressource_Humaine_Poste(diction):
update_data['related_target_collection'] = str(related_target_collection)
update_data['date_update'] = str(datetime.now().strftime("%d/%m/%Y %H:%M:%S"))
update_data['update_by'] = str(my_partner_data['_id'])
# Verifier l'existance de l'affectation
@ -3071,6 +3076,7 @@ def Add_Update_Employee_Login_Pass(diction):
mydata['recid'] = str(my_partner['recid'])
mydata['is_partner_admin_account'] = '0'
mydata['ispending'] = '0'
mydata['update_by'] = str(my_partner['_id'])
mydata['active'] = '1'
@ -3133,7 +3139,8 @@ def Add_Update_Employee_Login_Pass(diction):
"""
employee = MYSY_GV.dbname['ressource_humaine'].update_one({'_id':ObjectId(str(ressource_humaine_id)), 'partner_recid':str(my_partner['recid'])},
{'$set':{'user_login':str(email), 'account_partner_id':str(result['_id']),
'is_partner_admin_account':'0', 'date_update':str(datetime.now())}})
'is_partner_admin_account':'0', 'date_update':str(datetime.now()),
'update_by' : str(my_partner['_id']) } })
employee_data = MYSY_GV.dbname['ressource_humaine'].find_one({'_id':ObjectId(str(ressource_humaine_id))})