Elyos_FI_Back_Office/unite_enseignement_mgt.py

823 lines
31 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

"""
Ce fichier permet de gerer les unités d'enseignement (UE)
Une unité d'enseignement est definit par :
- Code (valeur unique & clé)
- Titre
- Description
- prerequis
- Objectif
- Programme
- Méthode pédagogique
- Méthode d'évaluation
- Support
- Durée (heures, jours, semaines, mois)
Rattachement Unité denseignement (UE) & formation :
Lors du rattachement dune UE à une formation, il faudra définir :
- Le crédit associé (numérique)
- Présentiel/ distantiel/ hybride,
- Est_note (oui / non) pour savoir cette unité doit être notée
- Groupe_evaluation : Dans une formation, on peut rassembler plusieurs UE dans un groupe dUE
"""
import bson
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
import jinja2
from flask import send_file
from xhtml2pdf import pisa
from email.message import EmailMessage
from email.mime.text import MIMEText
from email import encoders
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
"""
Ajout d'une unité d'enseignement (UE)
"""
def Add_Unite_Enseignement(diction):
try:
diction = mycommon.strip_dictionary(diction)
"""
Verification des input acceptés
"""
field_list = ['token', 'code', 'titre', 'description', 'objectif', 'prerequis', 'programme', 'methode_pedagogique', 'methode_evaluation',
'support', 'duration', 'duration_unite' ]
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'est pas autorisé")
return False, " Les informations fournies sont incorrectes"
"""
Verification des champs obligatoires
"""
field_list_obligatoire = ['token', 'code', 'titre',]
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
mydata = {}
mydata = diction
del mydata['token']
# Initialisation des champs non envoyés à vide
for val in field_list:
if val not in diction.keys():
mydata[str(val)] = ""
# Verifier qu'une UE avec le meme code n'existe pas déjà pour ce partenaire
is_ue_exist_count = MYSY_GV.dbname['unite_enseignement'].count_documents({'partner_owner_recid':my_partner['recid'],
'valide':'1',
'code':diction['code']})
if( is_ue_exist_count > 0 ):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Il existe déjà une UE avec le même code ")
return False, " Il existe déjà une UE avec le même code "
"""
Verifier que l'unite de durée est valide
"""
if( "duration_unite" in diction.keys() and diction['duration_unite']):
if( diction['duration_unite'] not in MYSY_GV.CLASS_DURATION_UNIT):
mycommon.myprint(
str(inspect.stack()[0][3]) + " L'unité de durée est invalide ")
return False, " L'unité de durée est invalide "
"""
Verifier que la durée est bien un float
"""
if ("duration" in diction.keys() and diction['duration']):
local_status, local_retval = mycommon.IsFloat(str(diction['duration']))
if( local_status is False ):
mycommon.myprint(
str(inspect.stack()[0][3]) + " La durée est invalide ")
return False, " La durée est invalide "
mydata['date_update'] = str(datetime.now())
mydata['update_by'] = str(my_partner['_id'])
mydata['partner_owner_recid'] = str(my_partner['recid'])
mydata['valide'] = "1"
mydata['locked'] = "0"
del mydata['token']
inserted_id = MYSY_GV.dbname['unite_enseignement'].insert_one(mydata).inserted_id
if (not inserted_id):
mycommon.myprint(" Impossible de créer l'unité d'enseignement (2) ")
return False, " Impossible de créer l'unité d'enseignement (2) "
return True, " L'unité d'enseignement a été correctement ajoutée "
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 créer l'UE "
"""
Mise à jour d'une unité d'enseignement
"""
def Update_Unite_Enseignement(diction):
try:
diction = mycommon.strip_dictionary(diction)
"""
Verification des input acceptés
"""
field_list = ['token', '_id', 'code', 'titre', 'description', 'objectif', 'prerequis', 'programme',
'methode_pedagogique', 'methode_evaluation', 'support', 'duration', 'duration_unite']
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'est pas autorisé")
return False, " Les informations fournies sont incorrectes"
"""
Verification des champs obligatoires
"""
field_list_obligatoire = ['token', '_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, " 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']
ue_id = ""
if ("_id" in diction.keys()):
if diction['_id']:
ue_id = diction['_id']
local_status, my_partner = mycommon.Check_Connexion_And_Return_Partner_Data(diction)
if (local_status is not True):
return local_status, my_partner
# Verifier que l'UE existe et est valide
is_valide_opport = MYSY_GV.dbname['unite_enseignement'].count_documents({'_id':ObjectId(str(ue_id)),
'valide':'1',
'locked':'0',
'partner_owner_recid':str(my_partner['recid'])})
if( is_valide_opport != 1):
mycommon.myprint(
str(inspect.stack()[0][3]) + " L'identifiant de l'UE est invalide ")
return False, " L'identifiant de l'UE est invalide "
"""
Si on veut modidier le code, verifier que le nouveau code n'est pas deja prix
"""
if( "code" in diction.keys() ):
is_new_code_exist_with_orther_id = MYSY_GV.dbname['unite_enseignement'].find_one({'code':str(diction['code']),
'valide':'1',
'locked':'0',
'partner_owner_recid':str(my_partner['recid'])})
if( is_new_code_exist_with_orther_id and str(is_new_code_exist_with_orther_id['_id']) != ue_id ):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Le code de l'UE '"+str(diction['code'])+" est déjà utilisé ")
return False, " Le code de l'UE '"+str(diction['code'])+" est déjà utilisé "
mydata = {}
mydata = diction
del mydata['token']
del mydata['_id']
mydata['date_update'] = str(datetime.now())
mydata['update_by'] = str(my_partner['_id'])
result = MYSY_GV.dbname['unite_enseignement'].find_one_and_update(
{'_id':ObjectId(str(ue_id)),
'partner_owner_recid':str(my_partner['recid'])},
{"$set": mydata},
upsert=False,
return_document=ReturnDocument.AFTER
)
if ("_id" not in result.keys()):
mycommon.myprint(
" Impossible de mettre à jour l'UE (2) ")
return False, " Impossible de mettre à jour l'UE (2) "
return True, " L'UE a été correctement mise à jour "
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 mettre à jour l'UE "
"""
Recuperer la liste des UE, sans filtres
"""
def Get_List_Unite_Enseignement_no_filter(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'est pas autorisé")
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 = []
val_tmp = 0
qry = {"partner_owner_recid":str(my_partner['recid']), 'valide':'1', 'locked':'0'}
for New_retVal in MYSY_GV.dbname['unite_enseignement'].find(qry).sort([("_id", pymongo.DESCENDING), ]):
user = New_retVal
user['id'] = str(val_tmp)
val_tmp = val_tmp + 1
if (str(New_retVal['duration_unite']) == "heure"):
user['duration_concat'] = str(New_retVal['duration']) + " h"
elif (str(New_retVal['duration_unite']) == "jour"):
user['duration_concat'] = str(New_retVal['duration']) + " j"
elif (str(New_retVal['duration_unite']) == "semaine"):
user['duration_concat'] = str(New_retVal['duration']) + " s"
elif (str(New_retVal['duration_unite']) == "mois"):
user['duration_concat'] = str(New_retVal['duration']) + " m"
elif (str(New_retVal['duration_unite']) == "annee"):
user['duration_concat'] = str(New_retVal['duration']) + " a"
else:
user['duration_concat'] = str(New_retVal['duration']) + " ?"
RetObject.append(mycommon.JSONEncoder().encode(user))
#print(" #### RetObject = ", RetObject)
return True, RetObject
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 unites d'enseignement "
"""
Recuperer la liste des UE, avec filtres
"""
def Get_List_Unite_Enseignement_with_filter(diction):
try:
diction = mycommon.strip_dictionary(diction)
"""
Verification des input acceptés
"""
field_list = ['token', 'code', 'titre']
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'est pas autorisé")
return False, " Toutes les informations fournies ne sont pas valables"
"""
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
filt_code = {}
if ("code" in diction.keys()):
filt_code = {'code': {'$regex': str(diction['code']), "$options": "i"}}
filt_titre = {}
if ("titre" in diction.keys()):
filt_titre = {'titre': {'$regex': str(diction['titre']), "$options": "i"}}
query = [{'$match': {
'$and': [filt_code, filt_titre, {"partner_owner_recid":str(my_partner['recid']), 'valide':'1', 'locked':'0'} ]}},
{'$sort': {'_id': -1}},
]
RetObject = []
val_tmp = 0
for New_retVal in MYSY_GV.dbname['unite_enseignement'].aggregate(query):
user = New_retVal
user['id'] = str(val_tmp)
val_tmp = val_tmp + 1
if (str(New_retVal['duration_unite']) == "heure"):
user['duration_concat'] = str(New_retVal['duration']) + " h"
elif (str(New_retVal['duration_unite']) == "jour"):
user['duration_concat'] = str(New_retVal['duration']) + " j"
elif (str(New_retVal['duration_unite']) == "semaine"):
user['duration_concat'] = str(New_retVal['duration']) + " s"
elif (str(New_retVal['duration_unite']) == "mois"):
user['duration_concat'] = str(New_retVal['duration']) + " m"
elif (str(New_retVal['duration_unite']) == "annee"):
user['duration_concat'] = str(New_retVal['duration']) + " a"
else:
user['duration_concat'] = str(New_retVal['duration']) + " ?"
RetObject.append(mycommon.JSONEncoder().encode(user))
#print(" #### RetObject = ", RetObject)
return True, RetObject
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 unites d'enseignement "
"""
Suppression d'une UE
Si elle n'est pas utilisée
regles : on ne peut supprimer une UE que si elle n'est pas utilisée dans une formation
"""
def Delete_Given_Unite_Enseignement(diction):
try:
diction = mycommon.strip_dictionary(diction)
"""
Verification des input acceptés
"""
field_list = ['token', '_id', ]
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'est pas autorisé")
return False, " Les informations fournies sont incorrectes"
"""
Verification des champs obligatoires
"""
field_list_obligatoire = ['token', '_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, " 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
# Verifier l'existance de l'ue
is_ue_valide = MYSY_GV.dbname['unite_enseignement'].count_documents({'_id':ObjectId(str(diction['_id'])),
'partner_owner_recid':str(my_partner['recid'])})
if (is_ue_valide != 1):
mycommon.myprint(
str(inspect.stack()[0][3]) + " L'identifiant de l'UE est invalide ")
return False, " L'identifiant de l'UE est invalide "
"""
Verifier si cette formation n'est pas utilisée dans une formation
"""
is_ue_used_in_class_count = MYSY_GV.dbname['myclass'].count_documents({'partner_owner_recid':str(my_partner['recid']),
'valide':'1',
'list_unite_enseignement._id':str(diction['_id'])})
if( is_ue_used_in_class_count > 0 ):
mycommon.myprint(
str(inspect.stack()[0][3]) + " Cette UE est actuellement utilisée dans "+str(is_ue_used_in_class_count)+" formation. Impossible de la supprimer ")
return False, " Cette UE est actuellement utilisée dans "+str(is_ue_used_in_class_count)+" formation. Impossible de la supprimer "
qry = {'_id':ObjectId(str(diction['_id'])), 'partner_owner_recid':str(my_partner['recid'])}
ret_del_competence = MYSY_GV.dbname['unite_enseignement'].delete_many(qry)
return True, "L'UE a été correctement supprimée"
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 supprimer l'UE "
"""
Recuperer une UE données
"""
def Get_Given_Unite_Enseignement(diction):
try:
diction = mycommon.strip_dictionary(diction)
"""
Verification des input acceptés
"""
field_list = ['token', '_id' ]
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'est pas autorisé")
return False, " Les informations fournies sont incorrectes"
"""
Verification des champs obligatoires
"""
field_list_obligatoire = ['token','_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, " 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 = []
val_tmp = 0
qry = {"partner_owner_recid":str(my_partner['recid']), 'valide':'1', 'locked':'0', '_id':ObjectId(str(diction['_id']))}
for New_retVal in MYSY_GV.dbname['unite_enseignement'].find(qry).sort([("_id", pymongo.DESCENDING), ]):
user = New_retVal
user['id'] = str(val_tmp)
val_tmp = val_tmp + 1
RetObject.append(mycommon.JSONEncoder().encode(user))
#print(" #### RetObject = ", RetObject)
return True, RetObject
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 les données de l'unite d'enseignement "
"""
Recuperer la liste des UE d'une formation donnée
"""
def Get_List_Unite_Enseignement_Of_Given_Class(diction):
try:
diction = mycommon.strip_dictionary(diction)
"""
Verification des input acceptés
"""
field_list = ['token', 'class_id', 'class_internal_url']
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'est pas autorisé")
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 = []
val_tmp = 0
is_qry_data = "0"
if( "class_id" in diction.keys() and diction['class_id']) :
is_qry_data = "1"
if ("class_internal_url" in diction.keys() and diction['class_internal_url']):
is_qry_data = "1"
if( is_qry_data == "0" ):
# L'utilisateur n'a fournir aucun element pour faire la requete. on retourne du vide dans ce cas.
user = []
RetObject.append(mycommon.JSONEncoder().encode(user))
# print(" #### RetObject = ", RetObject)
return True, RetObject
if( "class_id" in diction.keys() and diction['class_id']):
qry = {"partner_owner_recid":str(my_partner['recid']), 'valide':'1', 'locked':'0', '_id':ObjectId(str(diction['class_id']))}
elif ( "class_internal_url" in diction.keys() and diction['class_internal_url'] ):
qry = {"partner_owner_recid": str(my_partner['recid']), 'valide': '1', 'locked': '0',
'internal_url': str(diction['class_internal_url'])}
print(" #### Get_List_Unite_Enseignement_Of_Given_Class qry = ", qry)
for New_retVal in MYSY_GV.dbname['myclass'].find(qry).sort([("_id", pymongo.DESCENDING), ]):
if( "list_unite_enseignement" in New_retVal.keys() ):
for local_val in New_retVal['list_unite_enseignement'] :
user = local_val
user['id'] = str(val_tmp)
val_tmp = val_tmp + 1
user['class_id'] = str(New_retVal['_id'])
user['internal_url'] = str(New_retVal['internal_url'])
"""
Recuperation des données associées à cette UE
"""
ue_data = MYSY_GV.dbname['unite_enseignement'].find_one({'partner_owner_recid':str(my_partner['recid']), 'valide':'1', 'locked':'0',
'_id':ObjectId(str(local_val['_id']))})
if( ue_data ):
for val in ue_data.keys() :
user[str(val)] = ue_data[str(val)]
if (str(ue_data['duration_unite']) == "heure"):
user['duration_concat'] = str(ue_data['duration']) + " h"
elif (str(ue_data['duration_unite']) == "jour"):
user['duration_concat'] = str(ue_data['duration']) + " j"
elif (str(ue_data['duration_unite']) == "semaine"):
user['duration_concat'] = str(ue_data['duration']) + " s"
elif (str(ue_data['duration_unite']) == "mois"):
user['duration_concat'] = str(ue_data['duration']) + " m"
elif (str(ue_data['duration_unite']) == "annee"):
user['duration_concat'] = str(ue_data['duration']) + " a"
else:
user['duration_concat'] = str(ue_data['duration']) + " ?"
RetObject.append(mycommon.JSONEncoder().encode(user))
#print(" #### RetObject = ", RetObject)
return True, RetObject
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 unites d'enseignement de la formation "
"""
Cette fonction permet de recupérer les données d'une UE dans une formation données
c'est a dire les detail : credit, is_noted, etc
"""
def Get_Givent_Unite_Enseignement_Data_Of_Given_Class(diction):
try:
diction = mycommon.strip_dictionary(diction)
"""
Verification des input acceptés
"""
field_list = ['token', 'class_id', 'ue_id']
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'est pas autorisé")
return False, " Les informations fournies sont incorrectes"
"""
Verification des champs obligatoires
"""
field_list_obligatoire = ['token', 'class_id', 'ue_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, " 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 = []
val_tmp = 0
qry = {"partner_owner_recid":str(my_partner['recid']), 'valide':'1', 'locked':'0',
'_id':ObjectId(str(diction['class_id'])),
'list_unite_enseignement._id':str(my_partner['ue_id'])}
print(" ### qry 0147 = ", qry)
for New_retVal in MYSY_GV.dbname['myclass'].find(qry).sort([("_id", pymongo.DESCENDING), ]):
if( "list_unite_enseignement" in New_retVal.keys() ):
for local_val in New_retVal['list_unite_enseignement'] :
if( "_id" in local_val.keys() and local_val['_id'] == str(my_partner['ue_id']) ):
user = local_val
user['id'] = str(val_tmp)
val_tmp = val_tmp + 1
"""
Recuperation des données associées à cette UE
"""
ue_data = MYSY_GV.dbname['unite_enseignement'].find_one({'partner_owner_recid':str(my_partner['recid']), 'valide':'1', 'locked':'0',
'_id':ObjectId(str(local_val['_id']))})
if( ue_data ):
for val in ue_data.keys() :
user[str(val)] = ue_data[str(val)]
if (str(ue_data['duration_unite']) == "heure"):
user['duration_concat'] = str(ue_data['duration']) + " h"
elif (str(ue_data['duration_unite']) == "jour"):
user['duration_concat'] = str(ue_data['duration']) + " j"
elif (str(ue_data['duration_unite']) == "semaine"):
user['duration_concat'] = str(ue_data['duration']) + " s"
elif (str(ue_data['duration_unite']) == "mois"):
user['duration_concat'] = str(ue_data['duration']) + " m"
elif (str(ue_data['duration_unite']) == "annee"):
user['duration_concat'] = str(ue_data['duration']) + " a"
else:
user['duration_concat'] = str(ue_data['duration']) + " ?"
RetObject.append(mycommon.JSONEncoder().encode(user))
#print(" #### RetObject = ", RetObject)
return True, RetObject
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 les données de unites d'enseignement de la formation "