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():
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'])
@cross_origin()
......@@ -75,7 +68,15 @@ def ajouter_contenu():
auteur = request.json["auteur"]
contenu_a_ecrire = request.json["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'])
......@@ -116,7 +117,7 @@ def supprimer_tiers():
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)
return "Contenu Tiers supprimé"
return str(contenu_dao.existe_en_tiers(id_tiers["$oid"]))
@app.route("/newContenu", methods=['POST'])
......@@ -124,7 +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 "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'])
......@@ -241,7 +243,7 @@ def get_texte_contenu_en_cours(id_json):
@app.route("/getEnCours/<id_en_cours>", methods=['GET'])
@cross_origin()
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'])
......@@ -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))
@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'])
@cross_origin()
def supprimer_en_cours_par_id(id_en_cours):
......@@ -278,7 +272,9 @@ def creer_en_cours():
id_contenu = json.loads(request.json["id_contenu"])
en_cours_dao.creer_en_cours(request.json['auteur'], id_contenu["$oid"], request.json['version'],
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'])
......
......@@ -16,7 +16,7 @@ from modele.encours_dao import EncoursDao
class ContenuDao:
client = MongoClient('localhost', 27017)
chemin = "/home/passerat/Stage/flaskProject/"
chemin = "/home/passerat/Stage/flaskProject/contenus/"
gitUtils = GitUtils()
## extraction d'une base de données. Si elle n'existe pas, elle esst créée
......@@ -37,14 +37,9 @@ class ContenuDao:
"tags_banque_fixes": ["tag1", "tag2", "tag3", "tag4", "tag5"],
"tags_banque_libres": ["tagl1", "tagl2", "tagl3", "tagl4", "tagl5"], "type": " ", "source": " "})
# créer un fichier (au bon endroit)
# 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)
nom_contenu = self.id_dernier_contenu_ajoute()
record = next(never_shall_we_die, None)
nom_contenu = str(record.get("_id"))
chemin_fichier = self.chemin + "/" + nom_contenu + "/"
chemin_fichier = self.chemin + nom_contenu + "/"
Path(chemin_fichier).mkdir(parents=True, exist_ok=True)
myFile = open(chemin_fichier + nom_contenu, "w")
......@@ -53,26 +48,30 @@ class ContenuDao:
myFile.close()
# 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}})
# initialiser le git et récupérer le commit
commit = self.gitUtils.commit(chemin_fichier, nom_contenu, "version" + str(1))
# 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
# @param id_contenu l'id du contenu recherché
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
# @param id l'id du contenu recherché
# @param version la version du contenu recherché
def get_contenu_avec_id(self, id_contenu):
## Récupérer l'id du dernier contenu ajouté
# @return l'id du dernier contenu (sous la forme d'une chaine de caracteres)
def id_dernier_contenu_ajoute(self):
# 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')
# @param auteur l'auteur des contenus
......@@ -87,11 +86,10 @@ class ContenuDao:
if tiers:
id_tiers = self.get_contenus_tiers(auteur)
for (id, version) in id_tiers:
curseur_tiers = self.get_contenu_avec_id(id)
for contenu in curseur_tiers:
contenu["provenance"] = "tiers"
contenu["version"] = version["version"]
contenus.append(contenu)
contenu_tiers = self.get_contenu_par_id(id["contenu"])
contenu_tiers["provenance"] = "tiers"
contenu_tiers["version"] = version["version"]
contenus.append(contenu_tiers)
if perso:
curseur_perso = self.get_contenus_persos(auteur)
......@@ -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é
# @param auteur l'id du contenu à supprimer
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)
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)})
## l'auteur 'renie' un tiers (suppression définitive)
# @param auteur l'id du contenu à supprimer
def supprimer_tiers(self, id_tiers, auteur, version):
self.base_donnees.utilisateur.update({"nom": auteur},
{"$pull": {
"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
# @param auteur l'id du contenu à 'tester'
def existe_en_tiers(self, id_contenu):
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
# @param chemin le chemin du contenu
......@@ -193,7 +199,7 @@ class ContenuDao:
"versionEnCours": {"numero": 1, "date": datetime.now().strftime("%d/%m/%y"),
"popularite": 0, "commit": ""},
"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"}})
DemandePubDao().supprimer_publication(id_demande_publication)
......@@ -205,6 +211,8 @@ class ContenuDao:
if type('id_contenu') == str:
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"]
## récupère la version en cours du contenu
......@@ -240,7 +248,7 @@ class ContenuDao:
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_en_cours = DemandePubDao().get_id_contenu_en_cours_associe_a_une_publication(id_contenu_en_cours)
......@@ -378,7 +386,7 @@ class ContenuDao:
for (id, version) in tiers:
versionCourante = self.get_version_courante(id["contenu"])
if version["version"] < versionCourante:
liste += self.get_contenu_avec_id(id)
liste += self.get_contenu_par_id(id["contenu"])
return liste
......
......@@ -28,6 +28,21 @@ class DemandePubDao:
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
# @param idPublication l'id de la demande de publication
# @param reponse la réponse donnée par l'auteur d'origine
......@@ -69,7 +84,7 @@ class DemandePubDao:
if type(id_dde_publication) == str:
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"]
## Récupérer lid du contenu en cours associé à une demande de publication
......
import os
from pathlib import Path
from bson import ObjectId
......@@ -49,19 +50,22 @@ class EncoursDao:
## récupérer un contenu en cours
# @param idContenuEnCours l'id du contenu en cours de modification
# @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)
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
# @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)})
return self.base_donnees.encours.find_one({"_id": id_contenu_en_cours})
## supprimer un contenu en cours avec l'id
# @param idContenuEnCours id du contenu a supprimer
def supprimer_contenu_en_cours_via_id(self, idContenuEnCours):
self.base_donnees.encours.delete_one({"_id": ObjectId(idContenuEnCours)})
def supprimer_contenu_en_cours_via_id(self, id_contenu_en_cours):
# 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
# @param version la version du contenu d'origine
......@@ -107,6 +111,7 @@ 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))
......
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