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