Commit ac62cc0e authored by Jérémie Passerat's avatar Jérémie Passerat

Complétion de la documentation pour Doxygen

parent 98980398
......@@ -33,7 +33,7 @@ base_donnees = client.squelette
## *********************************************************************************************************************
## Routage utilisateur : 1 post, 1 get, 2 patch
## Entrées liées à la gestion utilisateur
@app.route('/newUser', methods=['POST'])
@cross_origin()
def creer_utilisateur():
......@@ -53,7 +53,6 @@ def changer_mdp():
pass
@app.route('/auteursExistants', methods=['GET'])
@cross_origin()
def recuperer_tous_les_utilisateurs():
......@@ -61,14 +60,16 @@ def recuperer_tous_les_utilisateurs():
## *********************************************************************************************************************
## Routage contenus : beaucoup de fonctions
## Entrées liées à la gestion des contenus
@app.route("/addContenu", methods=['POST'])
@cross_origin()
def ajouter_contenu():
auteur = request.json["auteur"]
contenu_a_ecrire = request.json["contenu_a_ecrire"]
contenu_dao.ajouter_contenu(auteur, contenu_a_ecrire)
return json.dumps((contenu_dao.get_contenu_par_id(contenu_dao.id_dernier_contenu_ajoute())), default=json_util.default)
return json.dumps((contenu_dao.get_contenu_par_id(contenu_dao.id_dernier_contenu_ajoute())),
default=json_util.default)
@app.route('/ajouterTiers', methods=['PATCH'])
@cross_origin()
......@@ -78,7 +79,6 @@ def ajouter_tiers():
return json.dumps((contenu_dao.get_contenu_par_id(id_tiers["$oid"])), default=json_util.default)
@app.route("/getContenu/<id>", methods=['GET'])
@cross_origin()
def get_contenu_par_id(id):
......@@ -125,8 +125,8 @@ def supprimer_tiers():
def creer_nouveau_contenu():
id_demande_pub = json.loads(request.json["id_demande_pub"])
contenu_dao.creer_nouveau_contenu(id_demande_pub["$oid"], request.json["auteur"])
return json.dumps((contenu_dao.get_contenu_par_id(contenu_dao.id_dernier_contenu_ajoute())), default=json_util.default)
return json.dumps((contenu_dao.get_contenu_par_id(contenu_dao.id_dernier_contenu_ajoute())),
default=json_util.default)
@app.route("/majContenu", methods=['PATCH'])
......@@ -225,7 +225,7 @@ def changer_texte_contenu(id_contenu):
## *********************************************************************************************************************
## Gestion des Contenus en Cours
## Entrées liées à la gestion des contenus en cours
@app.route("/getTexteContenuEnCours/<id_json>", methods=['GET'])
@cross_origin()
......@@ -287,7 +287,7 @@ def creer_en_cours_refuse():
## *********************************************************************************************************************
## Gestion des Publications
## Entrées liées à la gestion des demandes de publication
@app.route("/demandePublication", methods=['POST'])
@cross_origin()
......@@ -318,7 +318,7 @@ def supprimer_demande_pub(id_publication):
## *********************************************************************************************************************
## Gestion des Evaluations
## Entrées liées à la gestion des évaluations
@app.route("/newEval", methods=['POST'])
@cross_origin()
......
from git import Repo
## Fonctions de manipulation de versionning (avec git)
class GitUtils:
## commit d'un fichier (branche principale)
......@@ -10,7 +10,6 @@ class GitUtils:
def commit(self, cheminFichier, nomFichier, texteCommit):
repo = Repo.init(cheminFichier)
# # Il faudra faire une extraction du nom du fichier a partir du chemin
repo.index.add([nomFichier])
repo.index.commit(texteCommit)
......@@ -20,9 +19,9 @@ class GitUtils:
# @param cheminFichier le chemin du fichier
# @param texteCommit le texte associé au commit
# @return le hash du commit
def embranchement(self, cheminFichier, nomBranche):
repo = Repo.init(cheminFichier)
repo.create_head(nomBranche, 'HEAD')
# def embranchement(self, cheminFichier, nomBranche):
# repo = Repo.init(cheminFichier)
# repo.create_head(nomBranche, 'HEAD')
## changer la version actuelle (avec une base commit):
# @param chemin chemin du repertoire git
......@@ -31,7 +30,6 @@ class GitUtils:
repo = Repo.init(chemin)
repo.head.reference = repo.commit(commit)
repo.head.reset(index=True, working_tree=True)
# repo.git.checkout("c785462dfd454045798baedb11d1674837733962")
## changer la version actuelle (avec une base branche):
# @param chemin chemin du repertoire git
......
......@@ -8,8 +8,13 @@ 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)
......@@ -23,6 +28,10 @@ class Utils:
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
......@@ -37,6 +46,10 @@ class Utils:
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
......@@ -52,8 +65,13 @@ class Utils:
return texte.strip()
## Fonction qui permet de mettre à jour l'intérieur du texte d'un contenu
def changer_texte_fichier(self, id_contenu, nouveau_texte, majContenu=False):
if majContenu:
# @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:
......
......@@ -108,6 +108,7 @@ class ContenuDao:
## FOnction permettant de récupérer les contenus tiers d'un auteur
# @param auteur l'auteur en question
# return les contenus tiers de l'auteur (_id et version)
def get_contenus_tiers(self, auteur):
return self.base_donnees.utilisateur.find_one({"nom": auteur})["tiers"]
......@@ -132,7 +133,8 @@ class ContenuDao:
"tiers": [{"contenu": ObjectId(id_contenu)}, {"version": version}]}})
## FOnction permettant de récupérer les contenus persos d'un auteur
# auteur l'auteur en question
# @param auteur l'auteur en question
# return tous les contenus personnels de l'auteur
def get_contenus_persos(self, auteur):
return self.base_donnees.contenu.find({"auteur": auteur})
......@@ -141,8 +143,8 @@ class ContenuDao:
def dissocier_contenu(self, id_contenu):
self.base_donnees.contenu.update({"_id": ObjectId(id_contenu)}, {"$set": {"auteur": "Aucun"}})
## l'auteur 'renie' son contenu, mais vu que personne d'autre ne l'a il est définitivement supprimé
# @param auteur l'id du contenu à supprimer
## permet de, soit renier, soit supprimer définitivement un auteur (et le fichier de contenu associé)
# @param id_contenu l'id du contenu à supprimer
def supprimer_contenu(self, id_contenu):
import shutil
......@@ -155,8 +157,10 @@ class ContenuDao:
shutil.rmtree(repertoire)
self.base_donnees.contenu.delete_one({"_id": ObjectId(id_contenu)})
## l'auteur 'renie' un tiers (suppression définitive)
# @param auteur l'id du contenu à supprimer
## suppression défintive d'un tiers (de la référence)
# @param id_tiers l'id du tiers à supprimer
# @param auteur l'auteur concerné
# @param version la version du tiers à supprimer
def supprimer_tiers(self, id_tiers, auteur, version):
self.base_donnees.utilisateur.update({"nom": auteur},
......@@ -165,8 +169,9 @@ class ContenuDao:
if self.is_anonyme(id_tiers) and self.existe_en_tiers(id_tiers) == 0:
self.supprimer_contenu(id_tiers)
## fonction qui permet de savoir si au moins un auteur possède un certain contenu dans ses tiers
## fonction qui permet de savoir le nombre de fois qu'un contenu est présent en 'contenu tiers' chez d'autres auteurs
# @param auteur l'id du contenu à 'tester'
# @return le nombre de contenus tiers associés
def existe_en_tiers(self, id_contenu):
return self.base_donnees.utilisateur.find(
{"tiers": {"$elemMatch": {"$elemMatch": {"contenu": ObjectId(id_contenu)}}}}).count()
......@@ -191,7 +196,7 @@ class ContenuDao:
cheminFichier = self.chemin + dossierFichier
nomFichier = chemin[chemin.rfind("/") + 1:]
# Path(cheminFichier).mkdir(parents=True, exist_ok=True)
Path(cheminFichier).mkdir(parents=True, exist_ok=True)
self.base_donnees.contenu.insert_one(
{"auteur": auteur_en_cours, "note": randrange(0, 10, 1),
......@@ -216,6 +221,8 @@ class ContenuDao:
return self.chemin + self.base_donnees.contenu.find_one({"_id": id_contenu})["fichier"]
## récupère la version en cours du contenu
# @param id_contenu l'id du contenu
# @return la version courante du contenu
def get_version_courante(self, id_contenu):
if type('id_contenu') == str:
id_contenu = ObjectId(id_contenu)
......@@ -324,13 +331,14 @@ class ContenuDao:
return self.base_donnees.contenu.find_one({"_id": ObjectId(idContenu)})["auteur"] == "Aucun"
## Récupérer tous les contenus
# @return tous les contenus
def get_tous_les_contenus(self):
return self.base_donnees.contenu.find()
# FOnction permettant de déterminer si un certain contenu fait partie des tiers d'un auteur
# @param auteur l'auteur concerné
# @param idContenu le contenu à 'tester'
# @return booléen true.false si le contenu est chez l'auteur ou pas
# @return un booléen correspondant à savoir si le contenu est chez l'auteur ou pas
def is_tiers_auteur(self, auteur, idContenu):
return self.get_version_tiers_avec_id(ObjectId(idContenu), auteur) != 0
......@@ -393,6 +401,7 @@ class ContenuDao:
## Fonction permettant de récupérer le 'hash' d'un commit
# @param id_contenu l'id du contenu concerné
# @param version la version pour laquelle on veux récupérer le commit
# @return le commit associé à la version
def get_commit_pour_une_version(self, id_contenu, version):
if version == str(self.get_version_courante(id_contenu)) or version == '0':
......@@ -406,5 +415,6 @@ class ContenuDao:
## Fonction permettant de récupérer les tags associés à un contenu
# @param id_contenu l'id du contenu concerné
# @return les tags associés au contenu
def get_tags_contenu(self, id_contenu):
return self.base_donnees.contenu.find({"_id": ObjectId(id_contenu)})["tags_banque_fixes"]
......@@ -30,11 +30,14 @@ class DemandePubDao:
## Récupérer une demande de publication via son id
# @param id_demande_pub un id de demande de publication
# @return la demande de publication désirée
def get_demande_pub_via_id(self, id_demande_pub):
return self.base_donnees.demandesPub.find_one({"_id": ObjectId(id_demande_pub)})
## Récupérer la dernière insertion dasn les demaindes de publication
# @return le dernier id inséré dans les demandes de publication
def id_derniere_demande_publication_ajoutee(self):
# créer un fichier (au bon endroit)
# récupérer l'id mongo (pour nommer le répertoire)
......@@ -75,11 +78,13 @@ class DemandePubDao:
## Récupérer l'auteur d'une demande de publication
# @param idPub l'id de la demande de publication
# @return l'auteur de la publication
def get_auteur_demande_publication(self, idDdePublication):
return self.base_donnees.demandesPub.find_one({"_id": ObjectId(idDdePublication)})["auteurDemande"]
## Récupérer lid du contenu (perso ou tiers) associé à une demande de publication
# @param idDdePublication l'id de la demande de publication
# @return l'id du contenu associé à la demande de publication
def get_id_contenu_associe_a_une_publication(self, id_dde_publication):
if type(id_dde_publication) == str:
id_dde_publication = ObjectId(id_dde_publication)
......@@ -89,6 +94,7 @@ class DemandePubDao:
## Récupérer lid du contenu en cours associé à une demande de publication
# @param idDdePublication l'id de la demande de publication
# @return l'id du contenu en cours associé à la demande de publication
def get_id_contenu_en_cours_associe_a_une_publication(self, id_dde_publication):
if type(id_dde_publication) == str:
id_dde_publication = ObjectId(id_dde_publication)
......
......@@ -68,8 +68,10 @@ class EncoursDao:
self.base_donnees.encours.delete_one({"_id": ObjectId(id_contenu_en_cours)})
## création d'un contenu en cours
# @param auteur -> l'auteur du contenu en cours.
# @param id_contenu -> l'id du contenu d'origine
# @param version la version du contenu d'origine
# @param nomBranche -> plus utile.
# @param provenance pour déterminer si le contenu d'origine est un tiers ou un perso
def creer_en_cours(self, auteur, id_contenu, version, provenance):
from modele.contenu_dao import ContenuDao
......@@ -87,17 +89,6 @@ class EncoursDao:
id = self.recuperer_dernier_id()
# Deux choix -> création d'une branche dans le répertoire idContenu / idContenu
# chemin = ContenuDao().get_chemin_du_contenu(id_contenu)
#
# self.base_donnees.encours.update_one({"_id": id},
# {"$set": {"branche": id}})
#
# GitUtils().changerVersionBranche(chemin, id)
# Ou création d'un autre répertoire id_en_cours / id_en_cours
chemin_fichier = self.chemin + "en_cours/"
Path(chemin_fichier).mkdir(parents=True, exist_ok=True)
......@@ -111,10 +102,6 @@ class EncoursDao:
self.base_donnees.encours.update_one({"_id": ObjectId(id)},
{"$set": {"fichier": "en_cours/" + id}})
# initialiser le git et récupérer le commit
# self.gitUtils.commit(chemin_fichier, id, "version" + str(version))
## création d'un contenu en cours, dans l'état refuse
# @param version la version du contenu d'origine
# @param nomBranche -> plus utile.
......@@ -122,13 +109,17 @@ class EncoursDao:
self.base_donnees.encours.update_one({"_id": ObjectId(id_contenu_en_cours)}, {"$set": {"refuse": "oui"}})
self.base_donnees.encours.update_one({"_id": ObjectId(id_contenu_en_cours)}, {"$unset": {"isPublie": "oui"}})
## récupérer le dernier id inséré dans encours
# @return l'id de la derniere insertion dans encours.
def recuperer_dernier_id(self):
dernier_id_insere = self.base_donnees.encours.find().sort("_id", -1).limit(1)
record = next(dernier_id_insere, None)
return str(record.get("_id"))
## récupérer le chemin associé au contenu en cours
# @param id_contenu le contenu en cours concerné
# @return le chemin associé à id_contenu.
def get_chemin_contenu_en_cours(self, id_contenu):
if type('id_contenu') == str:
id_contenu = ObjectId(id_contenu)
......
......@@ -8,7 +8,6 @@ class EvaluationDao:
## 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
......@@ -29,6 +28,7 @@ class EvaluationDao:
## 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:
......@@ -43,6 +43,7 @@ class EvaluationDao:
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).
......
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