Commit 99096fe7 authored by Jérémie Passerat's avatar Jérémie Passerat

Sauvegarde avant modifs tests

parent 50692b41
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
...@@ -73,11 +73,13 @@ def hello_world(): ...@@ -73,11 +73,13 @@ def hello_world():
'class="m-l-1">Faux</label> </div></div></div></div></div></div></form></div></body></html> ' 'class="m-l-1">Faux</label> </div></div></div></div></div></div></form></div></body></html> '
# Fonction censée se déclencher quand le token lu n'est pas bon
@jwt.unauthorized_loader @jwt.unauthorized_loader
def my_invalid_token_callback(expired_token): def my_invalid_token_callback(expired_token):
return jsonify(code="dave", err="I can't let you do that"), 401 return jsonify(code="dave", err="I can't let you do that"), 401
# Fonction censée se déclencher après lecture
# todo (Peut être) Compléter cette fonction pour lire le token et lancer un rafraichissement si besoin
@app.after_request @app.after_request
def refresh_expiring_jwts(response): def refresh_expiring_jwts(response):
try: try:
...@@ -98,7 +100,7 @@ def refresh(): ...@@ -98,7 +100,7 @@ def refresh():
## ********************************************************************************************************************* ## *********************************************************************************************************************
## Test de manipulation des images ## Test de manipulation des images - inutile actuellement, car les images ont été remplacées par des caractères unicode
image = api.namespace('images', description="pour les champs qui le nécessitent, permet de récupérer des images") image = api.namespace('images', description="pour les champs qui le nécessitent, permet de récupérer des images")
......
File mode changed from 100644 to 100755
...@@ -19,6 +19,7 @@ class GitUtils: ...@@ -19,6 +19,7 @@ class GitUtils:
# @param cheminFichier le chemin du fichier # @param cheminFichier le chemin du fichier
# @param texteCommit le texte associé au commit # @param texteCommit le texte associé au commit
# @return le hash du commit # @return le hash du commit
# inutile actuellement, mais conservé au cas où
# def embranchement(self, cheminFichier, nomBranche): # def embranchement(self, cheminFichier, nomBranche):
# repo = Repo.init(cheminFichier) # repo = Repo.init(cheminFichier)
# repo.create_head(nomBranche, 'HEAD') # repo.create_head(nomBranche, 'HEAD')
......
...@@ -31,13 +31,11 @@ class Utils: ...@@ -31,13 +31,11 @@ class Utils:
from modele.contenu_dao import ContenuDao from modele.contenu_dao import ContenuDao
from modele.encours_dao import EncoursDao from modele.encours_dao import EncoursDao
if (en_cours): if (en_cours):
chemin = EncoursDao().get_chemin_contenu_en_cours(id_contenu) chemin = EncoursDao().get_chemin_contenu_en_cours(id_contenu)
else: else:
chemin = ContenuDao().get_chemin_du_contenu(id_contenu) chemin = ContenuDao().get_chemin_du_contenu(id_contenu)
with open(chemin, "r") as fichier: with open(chemin, "r") as fichier:
texte = fichier.read() texte = fichier.read()
...@@ -82,6 +80,8 @@ class Utils: ...@@ -82,6 +80,8 @@ class Utils:
myFile.write(nouveau_texte) myFile.write(nouveau_texte)
myFile.close() myFile.close()
## Fonction permettant, quand l'utilisateur consulte un contenu et revient en arriere, de s'assurer que la version "chargée" du fichier soit la dernière
# @param id_contenu l'id du contenu consulté
def recalibrerGit(self, id_contenu): def recalibrerGit(self, id_contenu):
from modele.contenu_dao import ContenuDao from modele.contenu_dao import ContenuDao
version = ContenuDao().get_version_courante(id_contenu) version = ContenuDao().get_version_courante(id_contenu)
......
...@@ -66,6 +66,12 @@ class ContenuDao: ...@@ -66,6 +66,12 @@ class ContenuDao:
{"$set": {"versionEnCours.commit": commit}}) {"$set": {"versionEnCours.commit": commit}})
## Fonction qui permet d'importer un nouveau contenu ## Fonction qui permet d'importer un nouveau contenu
# @param auteur l'auteur qui est en train d'importer le contenu
# @param file le fichier importe
# @param tags les tags associes au fichier importe
# @param descriptif (optionnel). Si le fichier n'est pas un xml, doit être renseigné
# @param type (optionnel). Si le fichier n'est pas un xml, indique le type du fichier importé
# @param titreFichier (optionnel). Si le fichier n'est pas un xml, indique le titre du fichier importé
def importer_contenu(self, auteur, file, tags, descriptif=None, type=None, titreFichier=None): def importer_contenu(self, auteur, file, tags, descriptif=None, type=None, titreFichier=None):
from xml.dom import minidom from xml.dom import minidom
...@@ -76,14 +82,12 @@ class ContenuDao: ...@@ -76,14 +82,12 @@ class ContenuDao:
chemin_tags = '/'.join(json.loads(tags)) + "/" chemin_tags = '/'.join(json.loads(tags)) + "/"
print("chemin_tags : ", chemin_tags)
print("filename : ", filename)
chemin_fichier = self.chemin + chemin_tags + filename + "/" chemin_fichier = self.chemin + chemin_tags + filename + "/"
Path(chemin_fichier).mkdir(0o777, parents=True, exist_ok=True) Path(chemin_fichier).mkdir(0o777, parents=True, exist_ok=True)
file.save(os.path.join(chemin_fichier, filename)) file.save(os.path.join(chemin_fichier, filename))
print("chemin_fichier : ", chemin_fichier)
if titreFichier is None: if titreFichier is None:
# on récupère le vrai titre du contenu # on récupère le vrai titre du contenu
...@@ -167,13 +171,9 @@ class ContenuDao: ...@@ -167,13 +171,9 @@ class ContenuDao:
contenu_tiers["provenance"] = "tiers" contenu_tiers["provenance"] = "tiers"
contenu_tiers["version"] = id_tiers[i][1]["version"] contenu_tiers["version"] = id_tiers[i][1]["version"]
note = self.recupererNoteContenu(id_tiers[i][0]["contenu"], id_tiers[i][1]["version"], auteur) note = self.recupererNoteContenu(id_tiers[i][0]["contenu"], id_tiers[i][1]["version"], auteur)
print("note : ", note)
if note == -1: if note == -1:
contenu_tiers["note_perso"] = "-" contenu_tiers["note_perso"] = "-"
print("ici")
# print("prout caca : " + contenu_tiers["note_perso"])
else: else:
print("là")
contenu_tiers["note_perso"] = note contenu_tiers["note_perso"] = note
contenus.append(contenu_tiers) contenus.append(contenu_tiers)
...@@ -189,7 +189,6 @@ class ContenuDao: ...@@ -189,7 +189,6 @@ class ContenuDao:
for contenu in curseur_en_cours: for contenu in curseur_en_cours:
contenu["provenance"] = "en-cours" contenu["provenance"] = "en-cours"
contenu["tags_libres"] = self.recuperer_tags_libres_contenu(contenu["_id"], auteur) contenu["tags_libres"] = self.recuperer_tags_libres_contenu(contenu["_id"], auteur)
# print("tags libres en_cours", contenu["tags_libres"])
contenus.append(contenu) contenus.append(contenu)
# on garde le développement de l'évaliation pour plus tard # on garde le développement de l'évaliation pour plus tard
# return contenus_persos + contenus_en_cours + contenus_tiers # return contenus_persos + contenus_en_cours + contenus_tiers
...@@ -255,7 +254,6 @@ class ContenuDao: ...@@ -255,7 +254,6 @@ class ContenuDao:
def supprimer_tiers(self, id_tiers, auteur, version, note): def supprimer_tiers(self, id_tiers, auteur, version, note):
note_contenu = self.recupererNoteContenu(id_tiers, auteur, version) note_contenu = self.recupererNoteContenu(id_tiers, auteur, version)
print("note : ", note_contenu)
# on distingue le cas ou une note a été donnée ou non # on distingue le cas ou une note a été donnée ou non
if note == "-": if note == "-":
self.base_donnees.utilisateur.update_one({"nom": auteur}, self.base_donnees.utilisateur.update_one({"nom": auteur},
...@@ -383,7 +381,6 @@ class ContenuDao: ...@@ -383,7 +381,6 @@ class ContenuDao:
titre_en_cours = EncoursDao().get_titre_en_cours(id_contenu_en_cours) titre_en_cours = EncoursDao().get_titre_en_cours(id_contenu_en_cours)
# print ("Titre en cours " + titre_en_cours)
Utils().changer_texte_fichier(id_contenu, nouveau_texte, titre_en_cours, True) Utils().changer_texte_fichier(id_contenu, nouveau_texte, titre_en_cours, True)
...@@ -483,7 +480,6 @@ class ContenuDao: ...@@ -483,7 +480,6 @@ class ContenuDao:
# On réfcupère tous les ties d'un auteur # On réfcupère tous les ties d'un auteur
tiers = self.get_contenus_tiers(auteur) tiers = self.get_contenus_tiers(auteur)
print("Je le ai ", len(tiers), " tiers disponibles")
for i in range(len(tiers)): for i in range(len(tiers)):
versionCourante = self.get_version_courante(tiers[i][0]["contenu"]) versionCourante = self.get_version_courante(tiers[i][0]["contenu"])
if tiers[i][1]["version"] < versionCourante: if tiers[i][1]["version"] < versionCourante:
...@@ -511,6 +507,7 @@ class ContenuDao: ...@@ -511,6 +507,7 @@ class ContenuDao:
# @return le commit associé à la version # @return le commit associé à la version
def get_commit_pour_une_version(self, id_contenu, version): def get_commit_pour_une_version(self, id_contenu, version):
version = str(version)
if version == str(self.get_version_courante(id_contenu)) or version == '0': if version == str(self.get_version_courante(id_contenu)) or version == '0':
courante = self.base_donnees.contenu.find_one({"_id": ObjectId(id_contenu)})["versionEnCours"] courante = self.base_donnees.contenu.find_one({"_id": ObjectId(id_contenu)})["versionEnCours"]
return courante["commit"] return courante["commit"]
...@@ -542,10 +539,8 @@ class ContenuDao: ...@@ -542,10 +539,8 @@ class ContenuDao:
self.base_donnees.contenu.update_one({"_id": ObjectId(id_contenu)}, self.base_donnees.contenu.update_one({"_id": ObjectId(id_contenu)},
{"$set": {"fichier": chemin_tags + id_contenu + "/" + id_contenu}}) {"$set": {"fichier": chemin_tags + id_contenu + "/" + id_contenu}})
# print(self.get_chemin_du_contenu(id_contenu))
Path(self.chemin + chemin_tags + id_contenu + "/").mkdir(0o777, parents=True, exist_ok=True) Path(self.chemin + chemin_tags + id_contenu + "/").mkdir(0o777, parents=True, exist_ok=True)
print(ancien_chemin[:ancien_chemin.rfind("/")])
print(ancien_chemin[:ancien_chemin.rfind("/") + 1])
Path(ancien_chemin).rename(self.get_chemin_du_contenu(id_contenu)) Path(ancien_chemin).rename(self.get_chemin_du_contenu(id_contenu))
self.rm_tree(Path(ancien_chemin[:ancien_chemin.rfind("/") + 1])) self.rm_tree(Path(ancien_chemin[:ancien_chemin.rfind("/") + 1]))
...@@ -617,15 +612,12 @@ class ContenuDao: ...@@ -617,15 +612,12 @@ class ContenuDao:
# on récupère les tags # on récupère les tags
tags = self.base_donnees.utilisateur.find_one({"nom": auteur})["tags"] tags = self.base_donnees.utilisateur.find_one({"nom": auteur})["tags"]
print("foinest : ", tags)
# on "vide" les tags (qu'on réinjectera) # on "vide" les tags (qu'on réinjectera)
self.base_donnees.utilisateur.update_one({"nom": auteur}, {"$set": {"tags": []}}) self.base_donnees.utilisateur.update_one({"nom": auteur}, {"$set": {"tags": []}})
# on parcourt chaque tag et on vire les mentions à id_contenu # on parcourt chaque tag et on vire les mentions à id_contenu
for letag in tags: for letag in tags:
print("Coutch")
if letag[0]['tag'] == tag: if letag[0]['tag'] == tag:
letag[1]['contenus'].append(ObjectId(id_contenu)) letag[1]['contenus'].append(ObjectId(id_contenu))
# print("J'ajoute le contenu : ", ObjectId(id_contenu), "\n")
letag[1]['contenus'] = list(set(letag[1]['contenus'])) letag[1]['contenus'] = list(set(letag[1]['contenus']))
self.base_donnees.utilisateur.update_one({"nom": auteur}, {"$set": {"tags": tags}}) self.base_donnees.utilisateur.update_one({"nom": auteur}, {"$set": {"tags": tags}})
...@@ -705,7 +697,9 @@ class ContenuDao: ...@@ -705,7 +697,9 @@ class ContenuDao:
/ self.base_donnees.contenu.find_one({"_id": ObjectId(id_contenu)})["versionEnCours"]["nbreNotes"] / self.base_donnees.contenu.find_one({"_id": ObjectId(id_contenu)})["versionEnCours"]["nbreNotes"]
else: else:
historique = self.base_donnees.contenu.find_one({"_id": ObjectId(id_contenu)})["historique"] historique = self.base_donnees.contenu.find_one({"_id": ObjectId(id_contenu)})["historique"]
return "popapopapa" # todo PARTIE MANQUANTE - A DEVELOPPER
# DANS CETTE PARTIE ON DOIT ETRE CAPABLE D'ALLER CHERCHER LA NOTE D'UNE VERSION QUI N'EST PAS LA VERSION EN COURS
return "-"
## Fonction permettant de changer la moyenne d'une version d'un contenu à l'insertion d'une nouvelle note ## Fonction permettant de changer la moyenne d'une version d'un contenu à l'insertion d'une nouvelle note
# @param id_contenu l'id du contenu concerné # @param id_contenu l'id du contenu concerné
...@@ -724,7 +718,6 @@ class ContenuDao: ...@@ -724,7 +718,6 @@ class ContenuDao:
else: else:
print("Non, là")
contenus = self.base_donnees.contenu.find_one({"_id": ObjectId(id_contenu)})["historique"] contenus = self.base_donnees.contenu.find_one({"_id": ObjectId(id_contenu)})["historique"]
self.base_donnees.contenu.update_one({"_id": ObjectId(id_contenu)}, {"$set": {"historique": []}}) self.base_donnees.contenu.update_one({"_id": ObjectId(id_contenu)}, {"$set": {"historique": []}})
for cont in contenus: for cont in contenus:
...@@ -746,7 +739,6 @@ class ContenuDao: ...@@ -746,7 +739,6 @@ class ContenuDao:
def previsualiser_xml_moodle(self, id_contenu, en_cours=False): def previsualiser_xml_moodle(self, id_contenu, en_cours=False):
texte = Utils().recuperer_contenu_fichier(id_contenu, en_cours) texte = Utils().recuperer_contenu_fichier(id_contenu, en_cours)
# exit(0)
# on va stocker tous les éléments séparés dans cette structure # on va stocker tous les éléments séparés dans cette structure
elements_question = dict() elements_question = dict()
...@@ -769,8 +761,6 @@ class ContenuDao: ...@@ -769,8 +761,6 @@ class ContenuDao:
for question in root.iter('questiontext'): for question in root.iter('questiontext'):
for intitule in question.iter('text'): for intitule in question.iter('text'):
# print("new game now loading : " + intitule.text)
# elements_question["intitule_question"] = intitule.text[3:len(intitule.text) - 4]
elements_question["intitule_question"] = intitule.text elements_question["intitule_question"] = intitule.text
for general in root.iter('generalfeedback'): for general in root.iter('generalfeedback'):
...@@ -798,7 +788,6 @@ class ContenuDao: ...@@ -798,7 +788,6 @@ class ContenuDao:
elif elements_question["type_question"] == "shortanswer": elif elements_question["type_question"] == "shortanswer":
# majuscule -> permet la casse (à 1) ou non (à 0) # majuscule -> permet la casse (à 1) ou non (à 0)
# majuscule = ''
for usecase in root.iter('usecase'): for usecase in root.iter('usecase'):
elements_question["majuscule"] = usecase.text elements_question["majuscule"] = usecase.text
# on récupère les réponses valables, les notes associées et les feedback # on récupère les réponses valables, les notes associées et les feedback
...@@ -813,10 +802,6 @@ class ContenuDao: ...@@ -813,10 +802,6 @@ class ContenuDao:
for feed in feedback.iter('text'): for feed in feedback.iter('text'):
liste_feedback.append(feed.text) liste_feedback.append(feed.text)
# for k in range(3):
# liste_reponse.append("")
# liste_note.append("")
# liste_feedback.append("")
elements_question["liste_reponse"] = liste_reponse elements_question["liste_reponse"] = liste_reponse
elements_question["liste_note"] = liste_note elements_question["liste_note"] = liste_note
...@@ -824,10 +809,8 @@ class ContenuDao: ...@@ -824,10 +809,8 @@ class ContenuDao:
elif elements_question["type_question"] == "multichoice": elif elements_question["type_question"] == "multichoice":
# nb_reponse = ''
for single in root.iter('single'): for single in root.iter('single'):
elements_question["nb_reponse"] = single.text elements_question["nb_reponse"] = single.text
# print ("nb_reponse : ", nb_reponse)
for shuffleanswers in root.iter('shuffleanswers'): for shuffleanswers in root.iter('shuffleanswers'):
elements_question["melange_reponse"] = shuffleanswers.text elements_question["melange_reponse"] = shuffleanswers.text
...@@ -900,7 +883,6 @@ class ContenuDao: ...@@ -900,7 +883,6 @@ class ContenuDao:
for feed in feedback.iter('text'): for feed in feedback.iter('text'):
liste_feedback.append(feed.text) liste_feedback.append(feed.text)
for tolerance in answer.iter('tolerance'): for tolerance in answer.iter('tolerance'):
# print ("tolerance : ", tolerance.text)
if tolerance.text is not None: if tolerance.text is not None:
liste_tolerance.append(tolerance.text) liste_tolerance.append(tolerance.text)
if elements_question["type_question"] == "calculatedsimple": if elements_question["type_question"] == "calculatedsimple":
...@@ -923,30 +905,6 @@ class ContenuDao: ...@@ -923,30 +905,6 @@ class ContenuDao:
elements_question["liste_reponse_format"] = liste_reponse_format elements_question["liste_reponse_format"] = liste_reponse_format
elements_question["liste_reponse_taille"] = liste_reponse_taille elements_question["liste_reponse_taille"] = liste_reponse_taille
# elif elements_question["type_question"] == 'calculatedsimple':
# print("calculatedsimple")
#
# liste_reponse = []
# liste_note = []
# liste_feedback = []
# liste_erreur = []
# for answer in root.iter('answer'):
# liste_note.append(answer.attrib["fraction"])
# for question in answer.iter('text'):
# liste_reponse.append(question.text)
# for feedback in answer.iter('feedback'):
# for feed in feedback.iter('text'):
# liste_feedback.append(feed.text)
# for tolerance in answer.iter('tolerance'):
# liste_erreur.append(tolerance.text)
#
# elements_question["liste_reponse"] = liste_reponse
# elements_question["liste_note"] = liste_note
# elements_question["liste_feedback"] = liste_feedback
# elements_question["liste_tolerance"] = liste_erreur
# print("elements_question : ", elements_question)
return elements_question return elements_question
## Fonction permettant de modifier un xml Moodle ## Fonction permettant de modifier un xml Moodle
...@@ -957,7 +915,6 @@ class ContenuDao: ...@@ -957,7 +915,6 @@ class ContenuDao:
texte = Utils().recuperer_contenu_fichier(id_contenu, en_cours) texte = Utils().recuperer_contenu_fichier(id_contenu, en_cours)
root = ET.fromstring(texte) root = ET.fromstring(texte)
print(elements_contenu)
# On parcourt tous les champs généralistes (type_question est inamovible) # On parcourt tous les champs généralistes (type_question est inamovible)
for note in root.iter('defaultgrade'): for note in root.iter('defaultgrade'):
...@@ -972,8 +929,6 @@ class ContenuDao: ...@@ -972,8 +929,6 @@ class ContenuDao:
for question in root.iter('questiontext'): for question in root.iter('questiontext'):
for intitule in question.iter('text'): for intitule in question.iter('text'):
# print("new game now loading : " + intitule.text)
# elements_question["intitule_question"] = intitule.text[3:len(intitule.text) - 4]
intitule.text = elements_contenu["intitule_question"] intitule.text = elements_contenu["intitule_question"]
for general in root.iter('generalfeedback'): for general in root.iter('generalfeedback'):
...@@ -985,7 +940,6 @@ class ContenuDao: ...@@ -985,7 +940,6 @@ class ContenuDao:
if elements_contenu["type_question"] == "truefalse": if elements_contenu["type_question"] == "truefalse":
note_faux = 0 note_faux = 0
# # on récupère la bonne réponse (mise par défault à Vrai mais changée si besoin). # # on récupère la bonne réponse (mise par défault à Vrai mais changée si besoin).
# bonne_reponse = 'Vrai'
i = 0 i = 0
for answer in root.iter('answer'): for answer in root.iter('answer'):
if i == 0: if i == 0:
...@@ -994,20 +948,13 @@ class ContenuDao: ...@@ -994,20 +948,13 @@ class ContenuDao:
answer.attrib["fraction"] = '100' if elements_contenu['bonne_reponse'] == 'Faux' else '0' answer.attrib["fraction"] = '100' if elements_contenu['bonne_reponse'] == 'Faux' else '0'
i = i + 1 i = i + 1
# for feedback in answer.iter('text'):
# feedback.text = elements_contenu["liste_feedback"][i]
elif elements_contenu["type_question"] == "shortanswer": elif elements_contenu["type_question"] == "shortanswer":
pass pass
# majuscule -> permet la casse (à 1) ou non (à 0) # majuscule -> permet la casse (à 1) ou non (à 0)
# majuscule = ''
for usecase in root.iter('usecase'): for usecase in root.iter('usecase'):
usecase.text = elements_contenu["majuscule"] usecase.text = elements_contenu["majuscule"]
# on récupère les réponses valables, les notes associées et les feedback # on récupère les réponses valables, les notes associées et les feedback
liste_reponse = []
liste_note = []
liste_feedback = []
i = 0 i = 0
...@@ -1022,11 +969,7 @@ class ContenuDao: ...@@ -1022,11 +969,7 @@ class ContenuDao:
i += 1 i += 1
print("A la sortie, i = ", i)
print("J'ai ", len(elements_contenu["liste_reponse"]), " reponses")
if i < len(elements_contenu["liste_reponse"]): if i < len(elements_contenu["liste_reponse"]):
print("Je le ai ", len(elements_contenu["liste_reponse"]) - i, " nouveaux contenus")
for question in root.iter('question'): for question in root.iter('question'):
# eltQuestion = root.iter("question") # eltQuestion = root.iter("question")
new_answer = SubElement(question, "answer") new_answer = SubElement(question, "answer")
...@@ -1039,15 +982,6 @@ class ContenuDao: ...@@ -1039,15 +982,6 @@ class ContenuDao:
text_feedback.text = elements_contenu["liste_feedback"][i] text_feedback.text = elements_contenu["liste_feedback"][i]
i += 1 i += 1
# # for k in range(3):
# # liste_reponse.append("")
# # liste_note.append("")
# # liste_feedback.append("")
#
# elements_question["liste_reponse"] = liste_reponse
# elements_question["liste_note"] = liste_note
# elements_question["liste_feedback"] = liste_feedback
elif elements_contenu["type_question"] == "multichoice": elif elements_contenu["type_question"] == "multichoice":
pass pass
...@@ -1072,7 +1006,6 @@ class ContenuDao: ...@@ -1072,7 +1006,6 @@ class ContenuDao:
i += 1 i += 1
if i < len(elements_contenu["liste_reponse"]): if i < len(elements_contenu["liste_reponse"]):
print("Je le ai ", len(elements_contenu["liste_reponse"]) - i, " nouveaux contenus")
for question in root.iter('question'): for question in root.iter('question'):
# eltQuestion = root.iter("question") # eltQuestion = root.iter("question")
new_answer = SubElement(question, "answer") new_answer = SubElement(question, "answer")
...@@ -1128,9 +1061,6 @@ class ContenuDao: ...@@ -1128,9 +1061,6 @@ class ContenuDao:
unit_name = SubElement(new_unit, "unit_name") unit_name = SubElement(new_unit, "unit_name")
unit_name.text = elements_contenu["liste_unite_nom"][i] unit_name.text = elements_contenu["liste_unite_nom"][i]
# print("Je le ai ", len(elements_contenu["liste_note"]), " notes, ", len(elements_contenu["liste_feedback"]), " feedbacks, ",
# len(elements_contenu["liste_reponse"]), " reponses et ", len(elements_contenu["liste_tolerance"]), "tolerances")
i = 0 i = 0
for answer in root.iter('answer'): for answer in root.iter('answer'):
answer.attrib["fraction"] = elements_contenu["liste_note"][i] answer.attrib["fraction"] = elements_contenu["liste_note"][i]
...@@ -1158,7 +1088,6 @@ class ContenuDao: ...@@ -1158,7 +1088,6 @@ class ContenuDao:
# on ajoute les éventuelles nouvelles réponses # on ajoute les éventuelles nouvelles réponses
if i < len(elements_contenu["liste_reponse"]): if i < len(elements_contenu["liste_reponse"]):
for question in root.iter('question'): for question in root.iter('question'):
# eltQuestion = root.iter("question")
new_answer = SubElement(question, "answer") new_answer = SubElement(question, "answer")
new_answer.attrib["fraction"] = elements_contenu["liste_note"][i] new_answer.attrib["fraction"] = elements_contenu["liste_note"][i]
new_answer.attrib["format"] = "moodle_auto_format" new_answer.attrib["format"] = "moodle_auto_format"
......
File mode changed from 100644 to 100755
...@@ -76,26 +76,24 @@ class EncoursDao: ...@@ -76,26 +76,24 @@ class EncoursDao:
def creer_en_cours(self, auteur, provenance, contenu, titre): def creer_en_cours(self, auteur, provenance, contenu, titre):
from modele.contenu_dao import ContenuDao from modele.contenu_dao import ContenuDao
# on calcule la moyenne du futur contenu en_cours
if contenu["versionEnCours"]["nbreNotes"] == 0: if contenu["versionEnCours"]["nbreNotes"] == 0:
moyenne = 0 moyenne = 0
else: else:
moyenne = contenu["versionEnCours"]["note"] / contenu["versionEnCours"]["nbreNotes"] moyenne = contenu["versionEnCours"]["note"] / contenu["versionEnCours"]["nbreNotes"]
# print("auteur : ", auteur) if type(contenu["tags_fixes"]) == "string":
# print("provenance : ", provenance) tags_fixes = json.loads(contenu["tags_fixes"])
# print("titre : ", titre) else:
# print("id : ", contenu["_id"]["$oid"]) tags_fixes = contenu["tags_fixes"]
# print("type id : ", type(contenu["_id"]["$oid"]))
# print("version : ", contenu["versionEnCours"]["numero"])
# Si le contenu est anonyme un champ supplémentaire est ajouté dans les méta données
if ContenuDao().is_anonyme(contenu["_id"]["$oid"]): if ContenuDao().is_anonyme(contenu["_id"]["$oid"]):
self.base_donnees.encours.insert_one( self.base_donnees.encours.insert_one(
{"date": datetime.now().strftime("%d/%m/%y"), "fichier": "", "auteur": auteur, {"date": datetime.now().strftime("%d/%m/%y"), "fichier": "", "auteur": auteur,
"reference": ObjectId(contenu["_id"]["$oid"]), "version": contenu["versionEnCours"]["numero"], "reference": ObjectId(contenu["_id"]["$oid"]), "version": contenu["versionEnCours"]["numero"],
"origine": provenance, "tags_fixes": json.loads(contenu["tags_fixes"]), "origine": provenance, "tags_fixes": tags_fixes,
"titre": titre, "type": contenu["type"], "source": contenu["source"], "moyenne": moyenne, "titre": titre, "type": contenu["type"], "source": contenu["source"], "moyenne": moyenne,
"anonyme": "oui"}) "anonyme": "oui"})
...@@ -104,16 +102,19 @@ class EncoursDao: ...@@ -104,16 +102,19 @@ class EncoursDao:
self.base_donnees.encours.insert_one( self.base_donnees.encours.insert_one(
{"date": datetime.now().strftime("%d/%m/%y"), "fichier": "", "auteur": auteur, {"date": datetime.now().strftime("%d/%m/%y"), "fichier": "", "auteur": auteur,
"reference": ObjectId(contenu["_id"]["$oid"]), "version": contenu["versionEnCours"]["numero"], "reference": ObjectId(contenu["_id"]["$oid"]), "version": contenu["versionEnCours"]["numero"],
"origine": provenance, "tags_fixes": json.loads(contenu["tags_fixes"]), "origine": provenance, "tags_fixes": tags_fixes,
"titre": titre, "type": contenu["type"], "source": contenu["source"], "moyenne": moyenne}) "titre": titre, "type": contenu["type"], "source": contenu["source"], "moyenne": moyenne})
# on créée le chemin pour le fichier en_cours
id = self.recuperer_dernier_id() id = self.recuperer_dernier_id()
chemin_tags = '/'.join(json.loads(contenu["tags_fixes"])) + "/" chemin_tags = '/'.join(tags_fixes) + "/"
nom_fichier = (contenu["fichier"][contenu["fichier"].rfind("/") + 1:]) nom_fichier = (contenu["fichier"][contenu["fichier"].rfind("/") + 1:])
chemin_fichier = self.chemin + chemin_tags + nom_fichier + "/" chemin_fichier = self.chemin + chemin_tags + nom_fichier + "/"
Path(chemin_fichier).mkdir(0o777, parents=True, exist_ok=True) Path(chemin_fichier).mkdir(0o777, parents=True, exist_ok=True)
# on écrit dans le fichier juste créé
myFile = open(chemin_fichier + nom_fichier, "w") myFile = open(chemin_fichier + nom_fichier, "w")
# y ajouter le texte du contenu # y ajouter le texte du contenu
myFile.write(self.utils.recuperer_contenu_fichier(contenu["_id"]["$oid"])) myFile.write(self.utils.recuperer_contenu_fichier(contenu["_id"]["$oid"]))
......
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
...@@ -86,7 +86,8 @@ def test_supprimer_contenu_en_tiers_chez_qqun_autre(client): ...@@ -86,7 +86,8 @@ def test_supprimer_contenu_en_tiers_chez_qqun_autre(client):
contenus = json.loads(rv.data) contenus = json.loads(rv.data)
filtered_contenu = [contenu for contenu in contenus if contenu["_id"] == id] filtered_contenu = [contenu for contenu in contenus if contenu["_id"] == id]
assert filtered_contenu[0]["auteur"] == "Aucun" assert filtered_contenu[0]["auteur"] == "Aucun"
from modele.contenu_dao import ContenuDao
contenu = ContenuDao().get_contenu_par_id(id)
# login 2 modifie son tiers (désormais d'auteur Aucun) # login 2 modifie son tiers (désormais d'auteur Aucun)
data = {"auteur": loginDeux, "id_contenu": json.dumps(id), "provenance": "tiers", "version": 1} data = {"auteur": loginDeux, "id_contenu": json.dumps(id), "provenance": "tiers", "version": 1}
# création d'un contenu en_cours # création d'un contenu en_cours
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment