Commit 520f210a authored by Jérémie Passerat's avatar Jérémie Passerat

Tests tags ok

parent 74a34fc7
......@@ -424,13 +424,13 @@ class get_tags_contenu(Resource):
## récupérer les tags d'un contenu
@jwt_required()
def get(self, id_contenu):
id_tiers = json.loads(request.json["id_tiers"])
return json.loads(json.dumps(list(contenu_dao.get_tags_contenu(id_tiers["$oid"])),
id_contenu = json.loads(id_contenu)
return json.loads(json.dumps(list(contenu_dao.get_tags_contenu(id_contenu["$oid"])),
default=json_util.default)), 200
@contenus.route("/modifierTags")
@contenus.doc(params={'id_publication': "l'id du contenu pour lequel on veut récupérer des tags"})
@contenus.doc(params={'id_contenu': "l'id du contenu pour lequel on veut récupérer des tags"})
@contenus.doc(params={'tags': "les nouveaux tags du contenu"})
@contenus.doc(description="modifier les tags d'un contenu")
class modifier_tags_contenus(Resource):
......@@ -445,7 +445,6 @@ class modifier_tags_contenus(Resource):
@contenus.route("/newTagLibre")
@contenus.doc(params={'auteur': "le créateur du tag"})
@contenus.doc(params={'id_contenu': "le contenu auquel le tag est associé. Possiblement vide"})
@contenus.doc(params={'tag': "Le tag créé"})
@contenus.doc(description="ajouter un tag libre")
class ajouter_tag_libre(Resource):
......@@ -453,12 +452,9 @@ class ajouter_tag_libre(Resource):
## ajouter un tag libre (lié à un contenu ou non)
@jwt_required()
def patch(self):
if request.json['id_contenu'] != "":
id_contenu = json.loads(request.json["id_contenu"])
id_contenu = id_contenu["$oid"]
else:
id_contenu = ""
ContenuDao().creer_tag_libre(request.json["auteur"], request.json["tag"], id_contenu)
id_contenu = ""
ContenuDao().creer_tag_libre(request.json["auteur"], request.json["tag"])
return "tag créé", 201
......@@ -497,7 +493,7 @@ class associer_tag_libre(Resource):
def patch(self):
id_contenu = json.loads(request.json["id_contenu"])
ContenuDao().associer_tag_libre(request.json["auteur"], request.json["tag"], id_contenu["$oid"])
return "tag associe", 200
return "tag associe", 201
@contenus.route("/dissocierTagLibre")
......@@ -511,7 +507,7 @@ class dissocier_tag_libre(Resource):
def patch(self):
id_contenu = json.loads(request.json["id_contenu"])
ContenuDao().dissocier_tag_libre(request.json["auteur"], request.json["tag"], id_contenu["$oid"])
return "tag dissocié", 200
return "tag dissocié", 201
@contenus.route("/supprimerTagLibre")
......
......@@ -218,8 +218,6 @@ class ContenuDao:
def supprimer_contenu(self, id_contenu):
import shutil
if self.existe_en_tiers(id_contenu) != 0:
self.dissocier_contenu(id_contenu)
......@@ -236,7 +234,6 @@ class ContenuDao:
# @param la note associee au contenu
def supprimer_tiers(self, id_tiers, auteur, version, note):
# on distingue le cas ou une note a été donnée ou non
if note == "-":
self.base_donnees.utilisateur.update({"nom": auteur},
......@@ -500,20 +497,43 @@ class ContenuDao:
# @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_fixes"]
return self.base_donnees.contenu.find_one({"_id": ObjectId(id_contenu)})["tags_fixes"]
## Mise à jour des tags associés au contenu
## Mise à jour des tags fixes associés au contenu
# @param id_contenu l'id du contenu concerné
# @param tags les nouveaux tags
def changer_tags_contenus(self, id_contenu, tags):
ancien_chemin = self.get_chemin_du_contenu(id_contenu)
# on modifie les tags
self.base_donnees.contenu.update({"_id": ObjectId(id_contenu)}, {"$set": {"tags_fixes": tags}})
# et le chemin du fichier
chemin_tags = '/'.join(tags) + "/"
# mettre a jour le chemin du contenu
self.base_donnees.contenu.update_one({"_id": ObjectId(id_contenu)},
{"$set": {"fichier": chemin_tags + id_contenu + "/" + id_contenu}})
# print(self.get_chemin_du_contenu(id_contenu))
Path(self.chemin + chemin_tags + id_contenu + "/").mkdir(0o777, parents=True, exist_ok=True)
print(ancien_chemin[:ancien_chemin.rfind("/")])
print(ancien_chemin[:ancien_chemin.rfind("/") + 1])
Path(ancien_chemin).rename(self.get_chemin_du_contenu(id_contenu))
self.rm_tree(Path(ancien_chemin[:ancien_chemin.rfind("/") + 1]))
# Path(ancien_chemin[:ancien_chemin.rfind("/") + 1]).rmdir()
## Fonction utilitaire -> supprimer un repertoire
# @param path le chemin du repertoire
def rm_tree(self, pth):
for child in pth.iterdir():
if child.is_file():
child.unlink()
else:
self.rm_tree(child)
pth.rmdir()
## Modification d'un titre d'un contenu personnel
# @param id_en_cours l'id du contenu
# @param nouveau_titre le titre à changer
......@@ -524,13 +544,11 @@ class ContenuDao:
# @param auteur l'auteur du nouveau tag
# @param tag le tag créé
# @param id_contenu l'id du contenu associé (potentiellement vide)
def creer_tag_libre(self, auteur, tag, id_contenu):
contenus = list()
if id_contenu != "":
contenus.append(ObjectId(id_contenu))
def creer_tag_libre(self, auteur, tag):
self.base_donnees.utilisateur.update({"nom": auteur}, {
"$push": {
"tags": [{"tag": tag}, {"contenu": contenus}]}})
"tags": [{"tag": tag}, {"contenus": []}]}})
## Fonction permettant de supprimer un tag libre
# @param auteur l'auteur du nouveau tag
......@@ -561,7 +579,7 @@ class ContenuDao:
# on parcourt chaque tag et on vire les mentions à id_contenu
for tag in tags:
if tag[0]['tag'] == mon_tag:
tag[1]['contenu'].remove(ObjectId(id_contenu))
tag[1]['contenus'].remove(ObjectId(id_contenu))
self.base_donnees.utilisateur.update({"nom": auteur}, {"$set": {"tags": tags}})
## Fonction permettant d'associer un contenu à un tag libre
......@@ -576,7 +594,7 @@ class ContenuDao:
# on parcourt chaque tag et on vire les mentions à id_contenu
for letag in tags:
if letag[0]['tag'] == tag:
letag[1]['contenu'].append(ObjectId(id_contenu))
letag[1]['contenus'].append(ObjectId(id_contenu))
# print(letag[1]['contenu'], type(letag[1]['contenu']))
# for contenu_associe in letag[1]:
# print(contenu_associe)
......@@ -601,7 +619,7 @@ class ContenuDao:
tags = self.base_donnees.utilisateur.find_one({"nom": auteur})["tags"]
tags_auteur = list()
for f in tags:
for cont in f[1]['contenu']:
for cont in f[1]['contenus']:
if cont == ObjectId(id_contenu):
tags_auteur.append(f[0]['tag'])
return tags_auteur
......
This diff is collapsed.
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