From 981e99de944ddd209b2fe2a745c67a3f31769358 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20Passerat?=
 <jeremie.passerat@etu.univ-orleans.fr>
Date: Wed, 7 Jul 2021 17:49:28 +0200
Subject: [PATCH] Rectificatifs suite tests utilisateurs Vue

---
 app.py                   | 12 ++++++++----
 modele/contenu_dao.py    | 16 +++++++++++-----
 modele/demande_pubDao.py | 19 +++++++++++++++----
 3 files changed, 34 insertions(+), 13 deletions(-)

diff --git a/app.py b/app.py
index d92d4afe..8dde451a 100644
--- a/app.py
+++ b/app.py
@@ -80,7 +80,7 @@ class CreerUtilisateur(Resource):
 @users.doc(description="vérification qu'un utilisateur est enrengistré dans la base")
 class VerifierUtilisateur(Resource):
     @users.response(200, "Vérification de l'utilisateur effectuée")
-    @users.response(200, "Vérification de l'utilisateur ratée")
+    @users.response(400, "Vérification de l'utilisateur ratée")
     ## vérification qu'un utilisateur est enrengistré dans la base
     def get(self):
 
@@ -88,7 +88,7 @@ class VerifierUtilisateur(Resource):
             access_token = create_access_token(identity=request.args.get("login"))
             return make_response(jsonify(access_token=access_token), 200)
         else:
-            return "L'utilisateur n'existe pas", 404
+            return "L'utilisateur n'existe pas", 400
 
 
 @users.route('/changePassword')
@@ -233,7 +233,10 @@ class SupprimerTiers(Resource):
 
         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 str(contenu_dao.existe_en_tiers(id_tiers["$oid"])), 200
+        if request.args.get('auteur') == "Aucun":
+            return str(contenu_dao.existe_en_tiers(id_tiers["$oid"])), 200
+        else:
+            return '1', 200
 
 
 @contenus.route("/newContenu")
@@ -349,6 +352,7 @@ class gerer_maj_tiers(Resource):
     ## gérer la réponse à une maj tiers
     @jwt_required()
     def patch(self):
+
         id_tiers = json.loads(request.json["id_tiers"])
 
         if request.json["reponse"] == 'o':
@@ -615,4 +619,4 @@ class supprimer_evaluation(Resource):
 
 
 if __name__ == '__main__':
-    app.run(host='0.0.0.0')
+    app.run()
diff --git a/modele/contenu_dao.py b/modele/contenu_dao.py
index 77fc5632..ceea054c 100644
--- a/modele/contenu_dao.py
+++ b/modele/contenu_dao.py
@@ -222,7 +222,7 @@ class ContenuDao:
         for i in range(len(tiers)):
             tmp = tiers[i]
             if tmp[0]["contenu"] == ObjectId(id_contenu):
-                return int(tmp[1]["version"])
+                return tmp[1]["version"]
         return 0
 
     ## mise à jour d'un contenu
@@ -344,10 +344,17 @@ class ContenuDao:
                                                      "tiers": [{"contenu": ObjectId(id_tiers)},
                                                                {"version": nouvelle_version}]}})
         else:
+            # on vire le précédent
+            self.base_donnees.utilisateur.update({"nom": auteur},
+                                                 {"$pull": {
+                                                     "tiers": [{"contenu": ObjectId(id_tiers)},
+                                                               {"version": nouvelle_version - 1}]}})
+
+            # et on ajoute la version maj
             self.base_donnees.utilisateur.update({"nom": auteur},
                                                  {"$push": {
-                                                     "majRejetees": [{"contenu": ObjectId(id_tiers),
-                                                                      "version": nouvelle_version}]}})
+                                                     "tiers": [{"contenu": ObjectId(id_tiers)},
+                                                               {"version": str(nouvelle_version - 1) + 'r'}]}})
 
     ## Permet de savoir si au moins un tiers est mettable à jour pour un auteur
     # @param auteur l'auteur concerné
@@ -372,11 +379,10 @@ class ContenuDao:
         liste = list()
         # On réfcupère tous les ties d'un auteur
         tiers = self.get_contenus_tiers(auteur)
-
         for (id, version) in tiers:
             versionCourante = self.get_version_courante(id["contenu"])
             if version["version"] < versionCourante:
-                liste += self.get_contenu_par_id(id["contenu"])
+                liste.append(self.get_contenu_par_id(id["contenu"]))
 
         return liste
 
diff --git a/modele/demande_pubDao.py b/modele/demande_pubDao.py
index c9d3f226..45900269 100644
--- a/modele/demande_pubDao.py
+++ b/modele/demande_pubDao.py
@@ -28,14 +28,12 @@ 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
     # @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):
@@ -66,13 +64,27 @@ class DemandePubDao:
             # On met à jour le tiers (chez le 'demandeur' de la publication)
             version = ContenuDao().get_version_courante(id_contenu)
             ContenuDao().maj_tiers(id_contenu, version, auteur_en_cours)
+
+            self.rendre_publications_obsoletes(id_contenu, auteur_en_cours)
+
         else:
             # on change l'état de la demande de publication
             self.base_donnees.demandesPub.update_one({"_id": ObjectId(id_publication)}, {"$set": {"etat": "refus"}})
 
+    ## Quand unhe publication est validée, toutes les autres publications en cours sur le contenu passent en statut "obsolete"
+    # @param id_contenu l'id du contenu lié à la publication acceptée
+    def rendre_publications_obsoletes(self, id_contenu, auteur_en_cours):
+        # 1. On récupère toutes les publications liées à l'id id_contenu
+        all_publications = self.base_donnees.demandesPub.find({"$and": [{"idContenu": ObjectId(id_contenu)},
+                                                                        {"etat": "enCours"},
+                                                                        {"auteurDemande": {"$ne": auteur_en_cours}}
+                                                                        ]})
+
+        for all_entries in all_publications:
+            self.base_donnees.demandesPub.update({"_id": all_entries["_id"]}, {"$set": {"etat": "obsolete"}})
+
     ## Supprimer une demande de publication
     # @param idPub l'id de la demande de publication
-
     def supprimer_publication(self, idPub):
         self.base_donnees.demandesPub.delete_one({"_id": ObjectId(idPub)})
 
@@ -97,7 +109,6 @@ class DemandePubDao:
     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)
-        print("id dde publication", id_dde_publication, " de type ", type(id_dde_publication))
 
         return self.base_donnees.demandesPub.find_one({"_id": id_dde_publication})["idContenuEnCours"]
 
-- 
2.18.1