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

Nettoyage des appels ws menu maj

parent 74ac7b0d
...@@ -53,13 +53,6 @@ def changer_mdp(): ...@@ -53,13 +53,6 @@ def changer_mdp():
pass pass
@app.route('/ajouterTiers', methods=['PATCH'])
@cross_origin()
def ajouter_tiers():
id_tiers = json.loads(request.json["id_tiers"])
contenu_dao.creer_tiers(request.json["auteur"], id_tiers["$oid"], request.json["version"])
return "Tiers ajouté"
@app.route('/auteursExistants', methods=['GET']) @app.route('/auteursExistants', methods=['GET'])
@cross_origin() @cross_origin()
...@@ -75,7 +68,15 @@ def ajouter_contenu(): ...@@ -75,7 +68,15 @@ def ajouter_contenu():
auteur = request.json["auteur"] auteur = request.json["auteur"]
contenu_a_ecrire = request.json["contenu_a_ecrire"] contenu_a_ecrire = request.json["contenu_a_ecrire"]
contenu_dao.ajouter_contenu(auteur, contenu_a_ecrire) contenu_dao.ajouter_contenu(auteur, contenu_a_ecrire)
return "Contenu ajouré" 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()
def ajouter_tiers():
id_tiers = json.loads(request.json["id_tiers"])
contenu_dao.creer_tiers(request.json["auteur"], id_tiers["$oid"], request.json["version"])
return json.dumps((contenu_dao.get_contenu_par_id(id_tiers["$oid"])), default=json_util.default)
@app.route("/getContenu/<id>", methods=['GET']) @app.route("/getContenu/<id>", methods=['GET'])
...@@ -116,7 +117,7 @@ def supprimer_tiers(): ...@@ -116,7 +117,7 @@ def supprimer_tiers():
version = contenu_dao.get_version_tiers_avec_id(id_tiers["$oid"], request.args.get('auteur')) version = contenu_dao.get_version_tiers_avec_id(id_tiers["$oid"], request.args.get('auteur'))
contenu_dao.supprimer_tiers(id_tiers["$oid"], request.args.get('auteur'), version) contenu_dao.supprimer_tiers(id_tiers["$oid"], request.args.get('auteur'), version)
return "Contenu Tiers supprimé" return str(contenu_dao.existe_en_tiers(id_tiers["$oid"]))
@app.route("/newContenu", methods=['POST']) @app.route("/newContenu", methods=['POST'])
...@@ -124,7 +125,8 @@ def supprimer_tiers(): ...@@ -124,7 +125,8 @@ def supprimer_tiers():
def creer_nouveau_contenu(): def creer_nouveau_contenu():
id_demande_pub = json.loads(request.json["id_demande_pub"]) id_demande_pub = json.loads(request.json["id_demande_pub"])
contenu_dao.creer_nouveau_contenu(id_demande_pub["$oid"], request.json["auteur"]) contenu_dao.creer_nouveau_contenu(id_demande_pub["$oid"], request.json["auteur"])
return "Nouveau contenu créé" return json.dumps((contenu_dao.get_contenu_par_id(contenu_dao.id_dernier_contenu_ajoute())), default=json_util.default)
@app.route("/majContenu", methods=['PATCH']) @app.route("/majContenu", methods=['PATCH'])
...@@ -241,7 +243,7 @@ def get_texte_contenu_en_cours(id_json): ...@@ -241,7 +243,7 @@ def get_texte_contenu_en_cours(id_json):
@app.route("/getEnCours/<id_en_cours>", methods=['GET']) @app.route("/getEnCours/<id_en_cours>", methods=['GET'])
@cross_origin() @cross_origin()
def get_contenu_en_cours(id_en_cours): def get_contenu_en_cours(id_en_cours):
return json.dumps(list(en_cours_dao.get_contenu_en_cours(id_en_cours)), default=json_util.default) return json.dumps(list(en_cours_dao.get_contenu_en_cours_via_id(id_en_cours)), default=json_util.default)
@app.route("/getAuteurOrigineEnCours/<id_en_cours>", methods=['GET']) @app.route("/getAuteurOrigineEnCours/<id_en_cours>", methods=['GET'])
...@@ -256,14 +258,6 @@ def is_contenu_demande_publication(id_en_cours, auteur): ...@@ -256,14 +258,6 @@ def is_contenu_demande_publication(id_en_cours, auteur):
return str(en_cours_dao.is_en_cours_demande(id_en_cours, auteur)) return str(en_cours_dao.is_en_cours_demande(id_en_cours, auteur))
@app.route("/supprimerEnCours/<id_reference>", methods=['DELETE'])
@cross_origin()
def supprimer_en_cours(id_reference):
id_contenu = json.loads(id_reference)
en_cours_dao.supprimer_contenu_en_cours(id_contenu["$oid"])
return "Contenu En Cours supprimé"
@app.route("/supprimerEnCoursParId/<id_en_cours>", methods=['DELETE']) @app.route("/supprimerEnCoursParId/<id_en_cours>", methods=['DELETE'])
@cross_origin() @cross_origin()
def supprimer_en_cours_par_id(id_en_cours): def supprimer_en_cours_par_id(id_en_cours):
...@@ -278,7 +272,9 @@ def creer_en_cours(): ...@@ -278,7 +272,9 @@ def creer_en_cours():
id_contenu = json.loads(request.json["id_contenu"]) id_contenu = json.loads(request.json["id_contenu"])
en_cours_dao.creer_en_cours(request.json['auteur'], id_contenu["$oid"], request.json['version'], en_cours_dao.creer_en_cours(request.json['auteur'], id_contenu["$oid"], request.json['version'],
request.json['provenance']) request.json['provenance'])
return en_cours_dao.recuperer_dernier_id()
return json.dumps(en_cours_dao.get_contenu_en_cours_via_id(en_cours_dao.recuperer_dernier_id()),
default=json_util.default)
@app.route("/newEnCoursRefuse", methods=['PATCH']) @app.route("/newEnCoursRefuse", methods=['PATCH'])
......
...@@ -16,7 +16,7 @@ from modele.encours_dao import EncoursDao ...@@ -16,7 +16,7 @@ from modele.encours_dao import EncoursDao
class ContenuDao: class ContenuDao:
client = MongoClient('localhost', 27017) client = MongoClient('localhost', 27017)
chemin = "/home/passerat/Stage/flaskProject/" chemin = "/home/passerat/Stage/flaskProject/contenus/"
gitUtils = GitUtils() gitUtils = GitUtils()
## extraction d'une base de données. Si elle n'existe pas, elle esst créée ## extraction d'une base de données. Si elle n'existe pas, elle esst créée
...@@ -37,14 +37,9 @@ class ContenuDao: ...@@ -37,14 +37,9 @@ class ContenuDao:
"tags_banque_fixes": ["tag1", "tag2", "tag3", "tag4", "tag5"], "tags_banque_fixes": ["tag1", "tag2", "tag3", "tag4", "tag5"],
"tags_banque_libres": ["tagl1", "tagl2", "tagl3", "tagl4", "tagl5"], "type": " ", "source": " "}) "tags_banque_libres": ["tagl1", "tagl2", "tagl3", "tagl4", "tagl5"], "type": " ", "source": " "})
# créer un fichier (au bon endroit) nom_contenu = self.id_dernier_contenu_ajoute()
# récupérer l'id mongo (pour nommer le répertoire)
never_shall_we_die = self.base_donnees.contenu.find().sort("_id", -1).limit(1)
record = next(never_shall_we_die, None) chemin_fichier = self.chemin + nom_contenu + "/"
nom_contenu = str(record.get("_id"))
chemin_fichier = self.chemin + "/" + nom_contenu + "/"
Path(chemin_fichier).mkdir(parents=True, exist_ok=True) Path(chemin_fichier).mkdir(parents=True, exist_ok=True)
myFile = open(chemin_fichier + nom_contenu, "w") myFile = open(chemin_fichier + nom_contenu, "w")
...@@ -53,26 +48,30 @@ class ContenuDao: ...@@ -53,26 +48,30 @@ class ContenuDao:
myFile.close() myFile.close()
# mettre a jour le chemin du contenu # mettre a jour le chemin du contenu
self.base_donnees.contenu.update_one({"_id": record.get("_id")}, self.base_donnees.contenu.update_one({"_id": ObjectId(nom_contenu)},
{"$set": {"fichier": nom_contenu + "/" + nom_contenu}}) {"$set": {"fichier": nom_contenu + "/" + nom_contenu}})
# initialiser le git et récupérer le commit # initialiser le git et récupérer le commit
commit = self.gitUtils.commit(chemin_fichier, nom_contenu, "version" + str(1)) commit = self.gitUtils.commit(chemin_fichier, nom_contenu, "version" + str(1))
# puis le mettre a jour dans le contenu # puis le mettre a jour dans le contenu
self.base_donnees.contenu.update_one({"_id": record.get("_id")}, {"$set": {"versionEnCours.commit": commit}}) self.base_donnees.contenu.update_one({"_id": ObjectId(nom_contenu)},
{"$set": {"versionEnCours.commit": commit}})
## recherche d'un contenu par id (pour affichage de son contenu. charge la version courante ## recherche d'un contenu par id (pour affichage de son contenu. charge la version courante
# @param id_contenu l'id du contenu recherché # @param id_contenu l'id du contenu recherché
def get_contenu_par_id(self, id_contenu): def get_contenu_par_id(self, id_contenu):
return self.base_donnees.contenu.find({"_id": ObjectId(id_contenu)}) return self.base_donnees.contenu.find_one({"_id": ObjectId(id_contenu)})
## recherche d'un contenu par id et une version précise ## Récupérer l'id du dernier contenu ajouté
# @param id l'id du contenu recherché # @return l'id du dernier contenu (sous la forme d'une chaine de caracteres)
# @param version la version du contenu recherché def id_dernier_contenu_ajoute(self):
def get_contenu_avec_id(self, id_contenu): # créer un fichier (au bon endroit)
# récupérer l'id mongo (pour nommer le répertoire)
tmp = self.base_donnees.contenu.find().sort("_id", -1).limit(1)
return self.base_donnees.contenu.find({"_id": ObjectId(id_contenu["contenu"])}) record = next(tmp, None)
return str(record.get("_id"))
## recherche des contenus pour un auteur donné (son 'panier') ## recherche des contenus pour un auteur donné (son 'panier')
# @param auteur l'auteur des contenus # @param auteur l'auteur des contenus
...@@ -87,11 +86,10 @@ class ContenuDao: ...@@ -87,11 +86,10 @@ class ContenuDao:
if tiers: if tiers:
id_tiers = self.get_contenus_tiers(auteur) id_tiers = self.get_contenus_tiers(auteur)
for (id, version) in id_tiers: for (id, version) in id_tiers:
curseur_tiers = self.get_contenu_avec_id(id) contenu_tiers = self.get_contenu_par_id(id["contenu"])
for contenu in curseur_tiers: contenu_tiers["provenance"] = "tiers"
contenu["provenance"] = "tiers" contenu_tiers["version"] = version["version"]
contenu["version"] = version["version"] contenus.append(contenu_tiers)
contenus.append(contenu)
if perso: if perso:
curseur_perso = self.get_contenus_persos(auteur) curseur_perso = self.get_contenus_persos(auteur)
...@@ -146,24 +144,32 @@ class ContenuDao: ...@@ -146,24 +144,32 @@ class ContenuDao:
## l'auteur 'renie' son contenu, mais vu que personne d'autre ne l'a il est définitivement supprimé ## 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 # @param auteur l'id du contenu à supprimer
def supprimer_contenu(self, id_contenu): def supprimer_contenu(self, id_contenu):
import shutil
if self.existe_en_tiers(id_contenu): if self.existe_en_tiers(id_contenu) != 0:
self.dissocier_contenu(id_contenu) self.dissocier_contenu(id_contenu)
else: else:
chemin = self.get_chemin_du_contenu(id_contenu)
repertoire = chemin[:chemin.rfind("/")]
print("repertoire :", repertoire)
shutil.rmtree(repertoire)
self.base_donnees.contenu.delete_one({"_id": ObjectId(id_contenu)}) self.base_donnees.contenu.delete_one({"_id": ObjectId(id_contenu)})
## l'auteur 'renie' un tiers (suppression définitive) ## l'auteur 'renie' un tiers (suppression définitive)
# @param auteur l'id du contenu à supprimer # @param auteur l'id du contenu à supprimer
def supprimer_tiers(self, id_tiers, auteur, version): def supprimer_tiers(self, id_tiers, auteur, version):
self.base_donnees.utilisateur.update({"nom": auteur}, self.base_donnees.utilisateur.update({"nom": auteur},
{"$pull": { {"$pull": {
"tiers": [{"contenu": ObjectId(id_tiers)}, {"version": version}]}}) "tiers": [{"contenu": ObjectId(id_tiers)}, {"version": version}]}})
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 si au moins un auteur possède un certain contenu dans ses tiers
# @param auteur l'id du contenu à 'tester' # @param auteur l'id du contenu à 'tester'
def existe_en_tiers(self, id_contenu): def existe_en_tiers(self, id_contenu):
return self.base_donnees.utilisateur.find( return self.base_donnees.utilisateur.find(
{"tiers": {"$elemMatch": {"$elemMatch": {"contenu": ObjectId(id_contenu)}}}}).count() != 0 {"tiers": {"$elemMatch": {"$elemMatch": {"contenu": ObjectId(id_contenu)}}}}).count()
## fonction qui permet de créer un contenu à partir d'une contenu en cours ## fonction qui permet de créer un contenu à partir d'une contenu en cours
# @param chemin le chemin du contenu # @param chemin le chemin du contenu
...@@ -193,7 +199,7 @@ class ContenuDao: ...@@ -193,7 +199,7 @@ class ContenuDao:
"versionEnCours": {"numero": 1, "date": datetime.now().strftime("%d/%m/%y"), "versionEnCours": {"numero": 1, "date": datetime.now().strftime("%d/%m/%y"),
"popularite": 0, "commit": ""}, "popularite": 0, "commit": ""},
"tags_banque_libres": {"1": "tag1", "2": "tag1", "3": "tag1", "4": "tag1", "tags_banque_libres": {"1": "tag1", "2": "tag1", "3": "tag1", "4": "tag1",
"5": "tag1"}, "5": "tag1"},
"tags_banque_fixes": {"1": "tag1", "2": "tag1", "3": "tag1", "4": "tag1", "5": "tag1"}}) "tags_banque_fixes": {"1": "tag1", "2": "tag1", "3": "tag1", "4": "tag1", "5": "tag1"}})
DemandePubDao().supprimer_publication(id_demande_publication) DemandePubDao().supprimer_publication(id_demande_publication)
...@@ -205,6 +211,8 @@ class ContenuDao: ...@@ -205,6 +211,8 @@ class ContenuDao:
if type('id_contenu') == str: if type('id_contenu') == str:
id_contenu = ObjectId(id_contenu) id_contenu = ObjectId(id_contenu)
print(str(id_contenu), " - ", type(id_contenu))
return self.chemin + self.base_donnees.contenu.find_one({"_id": id_contenu})["fichier"] return self.chemin + self.base_donnees.contenu.find_one({"_id": id_contenu})["fichier"]
## récupère la version en cours du contenu ## récupère la version en cours du contenu
...@@ -240,7 +248,7 @@ class ContenuDao: ...@@ -240,7 +248,7 @@ class ContenuDao:
else: else:
print ("L'id de la publication est ", id_contenu_en_cours ) print("L'id de la publication est ", id_contenu_en_cours)
id_contenu = DemandePubDao().get_id_contenu_associe_a_une_publication(id_contenu_en_cours) id_contenu = DemandePubDao().get_id_contenu_associe_a_une_publication(id_contenu_en_cours)
id_contenu_en_cours = DemandePubDao().get_id_contenu_en_cours_associe_a_une_publication(id_contenu_en_cours) id_contenu_en_cours = DemandePubDao().get_id_contenu_en_cours_associe_a_une_publication(id_contenu_en_cours)
...@@ -378,7 +386,7 @@ class ContenuDao: ...@@ -378,7 +386,7 @@ class ContenuDao:
for (id, version) in tiers: for (id, version) in tiers:
versionCourante = self.get_version_courante(id["contenu"]) versionCourante = self.get_version_courante(id["contenu"])
if version["version"] < versionCourante: if version["version"] < versionCourante:
liste += self.get_contenu_avec_id(id) liste += self.get_contenu_par_id(id["contenu"])
return liste return liste
......
...@@ -28,6 +28,21 @@ class DemandePubDao: ...@@ -28,6 +28,21 @@ class DemandePubDao:
self.base_donnees.encours.update_one({"_id": ObjectId(id_contenu_en_cours)}, {"$set": {"isPublie": "oui"}}) self.base_donnees.encours.update_one({"_id": ObjectId(id_contenu_en_cours)}, {"$set": {"isPublie": "oui"}})
## Récupérer une demande de publication via son id
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
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)
tmp = self.base_donnees.demandesPub.find().sort("_id", -1).limit(1)
record = next(tmp, None)
return str(record.get("_id"))
## Fonction permettant de gérer une demande de publication ## Fonction permettant de gérer une demande de publication
# @param idPublication l'id de la demande de publication # @param idPublication l'id de la demande de publication
# @param reponse la réponse donnée par l'auteur d'origine # @param reponse la réponse donnée par l'auteur d'origine
...@@ -69,7 +84,7 @@ class DemandePubDao: ...@@ -69,7 +84,7 @@ class DemandePubDao:
if type(id_dde_publication) == str: if type(id_dde_publication) == str:
id_dde_publication = ObjectId(id_dde_publication) id_dde_publication = ObjectId(id_dde_publication)
print ("id dde publication", id_dde_publication, " de type ", type(id_dde_publication)) print("id dde publication", id_dde_publication, " de type ", type(id_dde_publication))
return self.base_donnees.demandesPub.find_one({"_id": id_dde_publication})["idContenu"] return self.base_donnees.demandesPub.find_one({"_id": id_dde_publication})["idContenu"]
## Récupérer lid du contenu en cours associé à une demande de publication ## Récupérer lid du contenu en cours associé à une demande de publication
......
import os
from pathlib import Path from pathlib import Path
from bson import ObjectId from bson import ObjectId
...@@ -49,19 +50,22 @@ class EncoursDao: ...@@ -49,19 +50,22 @@ class EncoursDao:
## récupérer un contenu en cours ## récupérer un contenu en cours
# @param idContenuEnCours l'id du contenu en cours de modification # @param idContenuEnCours l'id du contenu en cours de modification
# @return le contenu en cours # @return le contenu en cours
def get_contenu_en_cours(self, id_contenu_en_cours): def get_contenu_en_cours_via_id(self, id_contenu_en_cours):
# id_contenu = Utils.getIdContenuAssocieAUnEnCours(idContenuEnCours) # id_contenu = Utils.getIdContenuAssocieAUnEnCours(idContenuEnCours)
return self.base_donnees.encours.find_one({"idContenuEC": id_contenu_en_cours}) if type(id_contenu_en_cours) == str:
id_contenu_en_cours = ObjectId(id_contenu_en_cours)
## supprimer un contenu en cours return self.base_donnees.encours.find_one({"_id": id_contenu_en_cours})
# @param idContenu id du contenu de la reference a supprimer
def supprimer_contenu_en_cours(self, idContenuEnCours):
self.base_donnees.encours.delete_one({"reference": ObjectId(idContenuEnCours)})
## supprimer un contenu en cours avec l'id ## supprimer un contenu en cours avec l'id
# @param idContenuEnCours id du contenu a supprimer # @param idContenuEnCours id du contenu a supprimer
def supprimer_contenu_en_cours_via_id(self, idContenuEnCours): def supprimer_contenu_en_cours_via_id(self, id_contenu_en_cours):
self.base_donnees.encours.delete_one({"_id": ObjectId(idContenuEnCours)})
# on supprime les fichiers
chemin = self.get_chemin_contenu_en_cours(id_contenu_en_cours)
os.remove(chemin)
# puis les métadonnées
self.base_donnees.encours.delete_one({"_id": ObjectId(id_contenu_en_cours)})
## création d'un contenu en cours ## création d'un contenu en cours
# @param version la version du contenu d'origine # @param version la version du contenu d'origine
...@@ -107,6 +111,7 @@ class EncoursDao: ...@@ -107,6 +111,7 @@ class EncoursDao:
self.base_donnees.encours.update_one({"_id": ObjectId(id)}, self.base_donnees.encours.update_one({"_id": ObjectId(id)},
{"$set": {"fichier": "en_cours/" + id}}) {"$set": {"fichier": "en_cours/" + id}})
# initialiser le git et récupérer le commit # initialiser le git et récupérer le commit
# self.gitUtils.commit(chemin_fichier, id, "version" + str(version)) # self.gitUtils.commit(chemin_fichier, id, "version" + str(version))
......
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