from flask import Flask from flask_pymongo import PyMongo from config.gitUtils import GitUtils app = Flask(__name__) app.config["MONGO_URI"] = "mongodb://localhost:27017/squelette" mongo = PyMongo(app) ## Fonctions 'générales', principalement de manipulation des fichiers class Utils: ## Fonction permettant de changer la version # @param idContenu l'id du contenu associé # @param version la version désirée du contenu # @param nomBranche le nom de la branche désirée du contenu def changer_version(self, idContenu, version, nomBranche=""): from modele.contenu_dao import ContenuDao # on recupere le chemin du fichier associé au contenu (dans les 2 cas) chemin = ContenuDao().get_chemin_du_contenu(idContenu) repertoire = chemin[:chemin.rfind("/") + 1] if version != 0: # on change le repertoire récupéré ci dessus dans la bonne version (si on travaille avec une version) idCommit = ContenuDao().get_commit_pour_une_version(idContenu, version) GitUtils().changerVersionCommit(repertoire, idCommit) else: GitUtils().changerVersionBranche(repertoire, nomBranche) ## Fonction permettant de lire et de récupérer l'intérieur d'un fichier # @param id_contenu l'id du contenu désiré # @param en_cours permet de déterminer si le contenu que l'on désire est lié à un fichier en cours ou pas # @return l'intérieur du texte associé au contenu def recuperer_contenu_fichier(self, id_contenu, en_cours=False): from modele.contenu_dao import ContenuDao from modele.encours_dao import EncoursDao if (en_cours): chemin = EncoursDao().get_chemin_contenu_en_cours(id_contenu) else: chemin = ContenuDao().get_chemin_du_contenu(id_contenu) with open(chemin, "r") as fichier: texte = fichier.read() return texte.strip() ## Fonction permettant de lire et de récupérer l'intérieur d'un fichier (dans une version spécifique # @param id_contenu l'id du contenu désiré # @param version le numéro de version désiré # @return l'intérieur du texte associé au contenu def recuperer_contenu_version_fichier(self, id_contenu, version): from modele.contenu_dao import ContenuDao chemin = ContenuDao().get_chemin_du_contenu(id_contenu) commit = ContenuDao().get_commit_pour_une_version(id_contenu, version) repertoire = chemin[:chemin.rfind("/")] GitUtils().changerVersionCommit(repertoire, commit) with open(chemin, "r") as fichier: texte = fichier.read() return texte.strip() ## Fonction qui permet de mettre à jour l'intérieur du texte d'un contenu # @param id_contenu l'id du contenu qui verra son texte changé # @param nouveau_texte la maj du texte # @param majContenu si true, maj d'un contenu perso. Si false, maj d'un contenu en cours def changer_texte_fichier(self, id_contenu, nouveau_texte, maj_contenu=False): # On ouvre le contenu, soit pour mettre à jour une version de contenu perso, # soit pour changer le coeur d'un contenu en cours if maj_contenu: from modele.contenu_dao import ContenuDao chemin_fichier = ContenuDao().get_chemin_du_contenu(id_contenu) else: from modele.encours_dao import EncoursDao chemin_fichier = EncoursDao().get_chemin_contenu_en_cours(id_contenu) myFile = open(chemin_fichier, "w") # y ajouter le texte du contenu myFile.write(nouveau_texte) myFile.close()