Commit 52c5ce8d authored by Jérémie Passerat's avatar Jérémie Passerat

Sauvegarde du 04/06

parent c1e55d94
...@@ -7,9 +7,15 @@ from modele.demande_pubDao import DemandePubDao ...@@ -7,9 +7,15 @@ from modele.demande_pubDao import DemandePubDao
from modele.encoursDao import EncoursDao from modele.encoursDao import EncoursDao
from modele.evaluationDao import EvaluationDao from modele.evaluationDao import EvaluationDao
from modele.utilisateurDao import UtilisateurDao from modele.utilisateurDao import UtilisateurDao
import json import json
from flask import Flask
from flask_cors import CORS, cross_origin
app = Flask(__name__) app = Flask(__name__)
cors = CORS(app)
app.config['CORS_HEADERS'] = 'Content-Type'
contenu_dao = ContenuDao() contenu_dao = ContenuDao()
utilisateur_dao = UtilisateurDao() utilisateur_dao = UtilisateurDao()
...@@ -25,22 +31,27 @@ base_donnees = client.squelette ...@@ -25,22 +31,27 @@ base_donnees = client.squelette
## ********************************************************************************************************************* ## *********************************************************************************************************************
## Routage utilisateur : 1 post, 1 get, 2 patch ## Routage utilisateur : 1 post, 1 get, 2 patch
@app.route('/newUser', methods=['POST']) @app.route('/newUser', methods=['POST'])
@cross_origin()
def creer_utilisateur(): def creer_utilisateur():
utilisateur_dao.ajouter_utilisateur(request.json["login"]) utilisateur_dao.ajouter_utilisateur(request.json["login"])
return "Utilisateur créé" return "Utilisateur créé"
@app.route('/checkUser', methods=['POST']) @app.route('/checkUser', methods=['GET'])
@cross_origin()
def verifier_utilisateur(): def verifier_utilisateur():
return str(utilisateur_dao.presence_utilisateur(request.json["login"])) print(request.args.get("login"))
return str(utilisateur_dao.presence_utilisateur(request.args.get("login")))
@app.route('/changePassword', methods=['PATCH']) @app.route('/changePassword', methods=['PATCH'])
@cross_origin()
def changer_mdp(): def changer_mdp():
pass pass
@app.route('/ajouterTiers', methods=['POST']) @app.route('/ajouterTiers', methods=['POST'])
@cross_origin()
def ajouter_tiers(): def ajouter_tiers():
contenu_dao.creer_tiers(request.json["auteur"], request.json["id_tiers"], 1) contenu_dao.creer_tiers(request.json["auteur"], request.json["id_tiers"], 1)
return "tiers ajouté" return "tiers ajouté"
...@@ -49,6 +60,7 @@ def ajouter_tiers(): ...@@ -49,6 +60,7 @@ def ajouter_tiers():
## ********************************************************************************************************************* ## *********************************************************************************************************************
## Routage contenus : beaucoup de fonctions ## Routage contenus : beaucoup de fonctions
@app.route("/newContenu", methods=['POST']) @app.route("/newContenu", methods=['POST'])
@cross_origin()
def ajouter_contenu(): def ajouter_contenu():
auteur = request.json["auteur"] auteur = request.json["auteur"]
nom_fichier = request.json["nom_fichier"] nom_fichier = request.json["nom_fichier"]
...@@ -58,42 +70,51 @@ def ajouter_contenu(): ...@@ -58,42 +70,51 @@ def ajouter_contenu():
@app.route("/getContenu/<id>", methods=['GET']) @app.route("/getContenu/<id>", methods=['GET'])
@cross_origin()
def get_contenu_par_id(id): def get_contenu_par_id(id):
return json.dumps(list(contenu_dao.get_contenu_par_id(int(id))), default=json_util.default) return json.dumps(list(contenu_dao.get_contenu_par_id(int(id))), default=json_util.default)
@app.route("/getContenuPanier/<auteur>", methods=['GET']) @app.route("/getContenuPanier/<auteur>", methods=['GET'])
@cross_origin()
def get_contenu_panier(auteur): def get_contenu_panier(auteur):
print(contenu_dao.get_contenus(auteur, True, True, True)) auteur = auteur.replace("_", " ")
return json.dumps(contenu_dao.get_contenus(auteur, True, True, True), default=json_util.default) return json.dumps(contenu_dao.get_contenus(auteur, request.args.get("perso"), request.args.get("tiers"), request.args.get("enCours")),
default=json_util.default)
@app.route("/deletePerso/<id_perso>", methods=['DELETE']) @app.route("/deletePerso/<id_perso>", methods=['DELETE'])
@cross_origin()
def supprimer_perso(id_perso): def supprimer_perso(id_perso):
contenu_dao.supprimer_contenu(id_perso) contenu_dao.supprimer_contenu(id_perso)
@app.route("/deleteTiers/<id_tiers>", methods=['DELETE']) @app.route("/deleteTiers/<id_tiers>", methods=['DELETE'])
@cross_origin()
def supprimer_tiers(id_tiers): def supprimer_tiers(id_tiers):
contenu_dao.supprimer_tiers(id_tiers, request.args.get('auteur'), request.args.get('version')) contenu_dao.supprimer_tiers(id_tiers, request.args.get('auteur'), request.args.get('version'))
@app.route("/newContenu", methods=['POST']) @app.route("/newContenu", methods=['POST'])
@cross_origin()
def creer_nouveau_contenu(): def creer_nouveau_contenu():
pass pass
@app.route("/majContenu", methods=['PATCH']) @app.route("/majContenu", methods=['PATCH'])
@cross_origin()
def maj_contenu(): def maj_contenu():
pass pass
@app.route("/allContenus", method=['GET']) @app.route("/allContenus", methods=['GET'])
@cross_origin()
def get_tous_les_contenus(): def get_tous_les_contenus():
return json.dumps(list(contenu_dao.get_tous_les_contenus()), default=json_util.default) return json.dumps(list(contenu_dao.get_tous_les_contenus()), default=json_util.default)
@app.route("/isContenuAnonyme/<id_contenu>", methods=['GET']) @app.route("/isContenuAnonyme/<id_contenu>", methods=['GET'])
@cross_origin()
def is_contenu_anonyme(id_contenu): def is_contenu_anonyme(id_contenu):
return str(contenu_dao.is_anonyme(id_contenu)) return str(contenu_dao.is_anonyme(id_contenu))
...@@ -103,26 +124,31 @@ def is_contenu_anonyme(id_contenu): ...@@ -103,26 +124,31 @@ def is_contenu_anonyme(id_contenu):
@app.route("/getEnCours/<id_en_cours>", methods=['GET']) @app.route("/getEnCours/<id_en_cours>", methods=['GET'])
@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(id_en_cours)), default=json_util.default)
@app.route("/getAuteurOrigineEnCours/<id_en_cours>", methods=['GET']) @app.route("/getAuteurOrigineEnCours/<id_en_cours>", methods=['GET'])
def get_contenu_en_cours(id_en_cours): @cross_origin()
def get_auteur_otigine_contenu_en_cours(id_en_cours):
return json.dumps(list(en_cours_dao.get_auteur_origine_contenu_en_cours(id_en_cours)), default=json_util.default) return json.dumps(list(en_cours_dao.get_auteur_origine_contenu_en_cours(id_en_cours)), default=json_util.default)
@app.route("/isContenuDemandePublication/<id_en_cours>/<auteur>", method=['GET']) @app.route("/isContenuDemandePublication/<id_en_cours>/<auteur>", methods=['GET'])
@cross_origin()
def is_contenu_demande_publication(id_en_cours, auteur): 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_en_cours>", methods=['DELETE']) @app.route("/supprimerEnCours/<id_en_cours>", methods=['DELETE'])
@cross_origin()
def supprimer_en_cours(id_en_cours): def supprimer_en_cours(id_en_cours):
en_cours_dao.supprimer_contenu_en_cours(id_en_cours) en_cours_dao.supprimer_contenu_en_cours(id_en_cours)
@app.route("/newEnCours", methods=['POST']) @app.route("/newEnCours", methods=['POST'])
@cross_origin()
def creer_en_cours(): def creer_en_cours():
en_cours_dao.creer_en_cours(request.args.get('id_contenu'), request.args.get('version'), en_cours_dao.creer_en_cours(request.args.get('id_contenu'), request.args.get('version'),
request.args.get('branche')) request.args.get('branche'))
...@@ -133,18 +159,21 @@ def creer_en_cours(): ...@@ -133,18 +159,21 @@ def creer_en_cours():
## Gestion des Publications ## Gestion des Publications
@app.route("/demandePublication", methods=['POST']) @app.route("/demandePublication", methods=['POST'])
@cross_origin()
def demande_de_publication(): def demande_de_publication():
demande_pub_Dao.creer_demande_publication(request.args.get('id_contenu'), request.args.get('id_contenu_en_cours'), demande_pub_Dao.creer_demande_publication(request.args.get('id_contenu'), request.args.get('id_contenu_en_cours'),
request.args.get('auteur_en_cours'), request.args.get('auteur')) request.args.get('auteur_en_cours'), request.args.get('auteur'))
@app.route("/demandePublication/<auteur>/<emise>", method=['GET']) @app.route("/demandePublication/<auteur>/<emise>", methods=['GET'])
@cross_origin()
def get_demandes_pub(auteur, emise): def get_demandes_pub(auteur, emise):
return demande_pub_Dao.get_demandes_pub(auteur, emise) return demande_pub_Dao.get_demandes_pub(auteur, emise)
@app.route("/demandePublication/<id_publication>", method=['DELETE']) @app.route("/demandePublication/<id_publication>", methods=['DELETE'])
def get_demandes_pub(id_publication): @cross_origin()
def supprimer_demande_pub(id_publication):
demande_pub_Dao.supprimer_publication(id_publication) demande_pub_Dao.supprimer_publication(id_publication)
...@@ -152,22 +181,26 @@ def get_demandes_pub(id_publication): ...@@ -152,22 +181,26 @@ def get_demandes_pub(id_publication):
## Gestion des Evaluations ## Gestion des Evaluations
@app.route("/newEval", methods=['POST']) @app.route("/newEval", methods=['POST'])
@cross_origin()
def creer_evaluation(): def creer_evaluation():
evaluation_dao.creer_evaluation(request.args.get('contenus'), request.args.get('auteur')) evaluation_dao.creer_evaluation(request.args.get('contenus'), request.args.get('auteur'))
return "evaluation créée" return "evaluation créée"
@app.route("/getEval/<auteur>/<id_evaluation>", methods=['GET']) @app.route("/getEval/<auteur>/<id_evaluation>", methods=['GET'])
@cross_origin()
def get_evaluation(auteur, id_evaluation): def get_evaluation(auteur, id_evaluation):
return json.dumps(list(evaluation_dao.get_evaluations(auteur, id_evaluation)), default=json_util.default) return json.dumps(list(evaluation_dao.get_evaluations(auteur, id_evaluation)), default=json_util.default)
@app.route("/getEval/<auteur>", methods=['GET']) @app.route("/getEval/<auteur>", methods=['GET'])
@cross_origin()
def get_all_evaluations(auteur): def get_all_evaluations(auteur):
return json.dumps(list(evaluation_dao.get_evaluations(auteur, 0)), default=json_util.default) return json.dumps(list(evaluation_dao.get_evaluations(auteur, 0)), default=json_util.default)
@app.route("/deleteEval", methods=['DELETE']) @app.route("/deleteEval", methods=['DELETE'])
@cross_origin()
def supprimer_evaluation(id_evaluation): def supprimer_evaluation(id_evaluation):
evaluation_dao.supprimer_evaluation(id_evaluation) evaluation_dao.supprimer_evaluation(id_evaluation)
......
...@@ -37,7 +37,7 @@ class ContenuDao: ...@@ -37,7 +37,7 @@ class ContenuDao:
# a décommenter quand git sera actif # a décommenter quand git sera actif
# Utils.changer_version(idContenu, version, "") # Utils.changer_version(idContenu, version, "")
return self.base_donnees.contenu.find_one({"id": id_contenu}) return self.base_donnees.contenu.find_one({"id": id_contenu})
# return Utils.statdb.contenu.find_one({"$and": [ # return Utils.contenu.find_one({"$and": [
# {"id": idContenu}, # {"id": idContenu},
# {"$or": [{"versionEnCours.numero": version}, {"historique.numero": version}]} # {"$or": [{"versionEnCours.numero": version}, {"historique.numero": version}]}
# ] # ]
...@@ -61,7 +61,7 @@ class ContenuDao: ...@@ -61,7 +61,7 @@ class ContenuDao:
contenus.append(contenu) contenus.append(contenu)
if en_cours: if en_cours:
curseur_en_cours = EncoursDao().get_en_cours(auteur) curseur_en_cours = EncoursDao().get_contenus_en_cours_auteur(auteur)
for contenu in curseur_en_cours: for contenu in curseur_en_cours:
contenus.append(contenu) contenus.append(contenu)
# on garde le développement de l'évaliation pour plus tard # on garde le développement de l'évaliation pour plus tard
...@@ -71,15 +71,16 @@ class ContenuDao: ...@@ -71,15 +71,16 @@ class ContenuDao:
def creer_tiers(self, auteur, id_contenu, version): def creer_tiers(self, auteur, id_contenu, version):
self.base_donnees.statdb.utilisateur.update({"nom": auteur}, { self.base_donnees.utilisateur.update({"nom": auteur}, {
"$push": { "$push": {
"tiers": [{"contenu": int(id_contenu)}, {"version": version}]}}) "tiers": [{"contenu": int(id_contenu)}, {"version": version}]}})
def get_contenus_persos(self): def get_contenus_persos(self, auteur):
return self.base_donnees.contenu.find({"auteur": auteur}) return self.base_donnees.contenu.find({"auteur": auteur})
def get_contenus_tiers(self, auteur): def get_contenus_tiers(self, auteur):
return self.base_donnees.statdb.utilisateur.find_one({"nom": auteur})["tiers"] print ("auteur a trouver : " + auteur)
return self.base_donnees.utilisateur.find_one({"nom": auteur})["tiers"]
## l'auteur 'renie' son contenu, qui reste disponible dans le panier de ceux qui le possédent ## l'auteur 'renie' son contenu, qui reste disponible dans le panier de ceux qui le possédent
def dissocier_contenu(self, id_contenu): def dissocier_contenu(self, id_contenu):
...@@ -90,12 +91,12 @@ class ContenuDao: ...@@ -90,12 +91,12 @@ class ContenuDao:
self.base_donnees.db.contenu.delete_one({"id": id_contenu}) self.base_donnees.db.contenu.delete_one({"id": id_contenu})
def supprimer_tiers(self, id_contenu, auteur, version): def supprimer_tiers(self, id_contenu, auteur, version):
self.base_donnees.statdb.utilisateur.update({"nom": auteur}, self.base_donnees.utilisateur.update({"nom": auteur},
{"$pull": { {"$pull": {
"tiers": [{"contenu": id_contenu}, {"version": version}]}}) "tiers": [{"contenu": id_contenu}, {"version": version}]}})
def existe_en_tiers(self, id_contenu): def existe_en_tiers(self, id_contenu):
return self.base_donnees.statdb.utilisateur.find( return self.base_donnees.utilisateur.find(
{"tiers": {"$elemMatch": {"$elemMatch": {"contenu": id_contenu}}}}).count() != 0 {"tiers": {"$elemMatch": {"$elemMatch": {"contenu": id_contenu}}}}).count() != 0
def creer_nouveau_contenu(self, chemin, auteur_en_cours, idContenuEnCours): def creer_nouveau_contenu(self, chemin, auteur_en_cours, idContenuEnCours):
...@@ -117,7 +118,7 @@ class ContenuDao: ...@@ -117,7 +118,7 @@ class ContenuDao:
# exit(0) # exit(0)
#commit = UtilsGit.commit(cheminFichier, "Contenu" + str(max_id), "Version 1") #commit = UtilsGit.commit(cheminFichier, "Contenu" + str(max_id), "Version 1")
''' '''
self.base_donnees.statdb.contenu.insert_one( self.base_donnees.contenu.insert_one(
{"id": max_id + 1, "auteur": auteur_en_cours, "note": randrange(0, 10, 1), {"id": max_id + 1, "auteur": auteur_en_cours, "note": randrange(0, 10, 1),
"fichier": "dossierContenu" + str(max_id) + "/Contenu" + str(max_id), "fichier": "dossierContenu" + str(max_id) + "/Contenu" + str(max_id),
"versionEnCours": {"numero": 1, "date": datetime.now().strftime("%d/%m/%y"), "versionEnCours": {"numero": 1, "date": datetime.now().strftime("%d/%m/%y"),
...@@ -150,13 +151,13 @@ class ContenuDao: ...@@ -150,13 +151,13 @@ class ContenuDao:
#idCommit = UtilsGit.mergeVersion(repertoire, nomBranche) #idCommit = UtilsGit.mergeVersion(repertoire, nomBranche)
# Mise à jour des métadonnées - ok # Mise à jour des métadonnées - ok
version_en_cours = self.base_donnees.statdb.contenu.find_one({"id": idContenu})["versionEnCours"] version_en_cours = self.base_donnees.contenu.find_one({"id": idContenu})["versionEnCours"]
self.base_donnees.statdb.contenu.update_one({"id": int(idContenu)}, {"$push": {"historique": version_en_cours}}) self.base_donnees.contenu.update_one({"id": int(idContenu)}, {"$push": {"historique": version_en_cours}})
self.base_donnees.statdb.contenu.update_one({"id": int(idContenu)}, { # self.base_donnees.contenu.update_one({"id": int(idContenu)}, {
"$set": {"versionEnCours": {"numero": version, "date": datetime.now().strftime("%d/%m/%y"), # "$set": {"versionEnCours": {"numero": version, "date": datetime.now().strftime("%d/%m/%y"),
"popularite": 0, "commit": idCommit}}}) # "popularite": 0, "commit": idCommit}}})
if auteur is not None: if auteur is not None:
self.base_donnees.statdb.contenu.update_one({"id": int(idContenu)}, { self.base_donnees.contenu.update_one({"id": int(idContenu)}, {
"$set": {"auteur": auteur}}) "$set": {"auteur": auteur}})
def consulter_un_contenu(self, id, auteur): def consulter_un_contenu(self, id, auteur):
...@@ -174,7 +175,7 @@ class ContenuDao: ...@@ -174,7 +175,7 @@ class ContenuDao:
def modifier_contenu(self, idContenu, auteur, enCours=False): def modifier_contenu(self, idContenu, auteur, enCours=False):
# le chemin du fichier restera tjrs le même # le chemin du fichier restera tjrs le même
contenu = self.base_donnees.statdb.contenu.find_one({"id": int(idContenu)}) contenu = self.base_donnees.contenu.find_one({"id": int(idContenu)})
self.base_donnees.modification_fichier(self.chemin + contenu["fichier"], idContenu, auteur, not enCours) self.base_donnees.modification_fichier(self.chemin + contenu["fichier"], idContenu, auteur, not enCours)
def detruire_fichier_tmp(self, id, auteur): def detruire_fichier_tmp(self, id, auteur):
...@@ -185,14 +186,14 @@ class ContenuDao: ...@@ -185,14 +186,14 @@ class ContenuDao:
def get_max_id_contenus(self): def get_max_id_contenus(self):
## Fonction permettant de récupérer l'id max présent en base (pour pouvoir incrémenter un nouveau contenu). ## Fonction permettant de récupérer l'id max présent en base (pour pouvoir incrémenter un nouveau contenu).
element = self.base_donnees.statdb.contenu.find().sort("id", -1).limit(1) element = self.base_donnees.contenu.find().sort("id", -1).limit(1)
for elt in element: for elt in element:
# print("id : ", elt["id"]) # print("id : ", elt["id"])
return int(elt["id"]) return int(elt["id"])
def is_anonyme(self, idContenu): def is_anonyme(self, idContenu):
# print("Is anonyme : ", Utils.statdb.contenu.find_one({"id": idContenu})["auteur"]) # print("Is anonyme : ", Utils.contenu.find_one({"id": idContenu})["auteur"])
return self.base_donnees.contenu.find_one({"id": idContenu})["auteur"] == "Aucun" return self.base_donnees.contenu.find_one({"id": idContenu})["auteur"] == "Aucun"
def get_tous_les_contenus(self): def get_tous_les_contenus(self):
......
...@@ -20,6 +20,12 @@ class EncoursDao: ...@@ -20,6 +20,12 @@ class EncoursDao:
id_contenu = self.base_donnees.find_one({"idContenuEC": id_contenu_en_cours})["reference"] id_contenu = self.base_donnees.find_one({"idContenuEC": id_contenu_en_cours})["reference"]
return self.base_donnees.contenu.find_one({"id": id_contenu})["auteur"] return self.base_donnees.contenu.find_one({"id": id_contenu})["auteur"]
## permet de récupérer tous les contenus en cours pour un auteur
# @param auteur le nom de l'auteur
def get_contenus_en_cours_auteur(self, auteur):
return self.base_donnees.encours.find({"auteur": auteur})
## récupérer la branche d'un contenu en cours ## récupérer la branche d'un contenu en cours
# @param idContenuEnCours l'id du contenu en cours de modification # @param idContenuEnCours l'id du contenu en cours de modification
def get_contenu_en_cours(self, id_contenu_en_cours): def get_contenu_en_cours(self, id_contenu_en_cours):
......
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