from pymongo import MongoClient from datetime import datetime class EvaluationDao: client = MongoClient('localhost', 27017) ## extraction d'une base de données. Si elle n'existe pas, elle esst créée base_donnees = client.squelette ## Création d'une nouvelle évaluation # @param contenus tableau avec les id des contenus associés à cette évaluation # @param auteur l'auteur qui créée l'évaluation def creer_evaluation(self, contenus, auteur): # création de l'évaluation max_id_eval = self.base_donnees.get_max_id_evaluations() if max_id_eval is None: max_id_eval = 0 self.base_donnees.evaluation.insert_one( {"idEval": max_id_eval + 1, "date": datetime.now().strftime("%d/%m/%y"), "auteur": auteur, "contenu(s)": contenus}) # on renseigne l'évaluation dans les contenus associés for i in contenus: self.base_donnees.contenu.update({"id": i}, {"$push": {"evals": max_id_eval + 1}}) ## récupérer une ou plusieurs évaluations # @param auteur l'utilisateur souhaitant effectuer la récupération # @param id si non 0, l'id de l'évaluation à récupérer. # @return une évaluation ou toutes les évaluations de l'auteur @staticmethod def get_evaluations(self, auteur, id=0): if id == 0: return self.base_donnees.evaluation.find({"auteur": auteur}) else: return self.base_donnees.evaluation.find({"auteur": auteur} and {"idEval": id}) ## supprimer une évaluation # @param idEval l'id de l'évaluation à supprimer @staticmethod def supprimer_evaluation(self, idEval): self.base_donnees.evaluation.delete_one({"idEval": idEval}) ## récupérer l'id max des évaluations (sera supprimé et remplacé par les id mongo) # @return l'id max des conenus en cours @staticmethod def get_max_id_evaluations(self): ## Fonction permettant de récupérer l'id max présent en base (pour pouvoir incrémenter un nouveau contenu). element = self.base_donnees.evaluation.find().sort("idEval", -1).limit(1) for elt in element: # print("id : ", elt["id"]) return int(elt["idEval"])