Commit 709a9c4f authored by Jérémie Passerat's avatar Jérémie Passerat

Suppression d'un import erroné dans Utils

parent bec2f386
......@@ -3,8 +3,9 @@ import http
from distutils import util
import flask
import pytest
from bson import json_util, ObjectId
from flask import Flask, request, jsonify, Blueprint
from flask import Flask, request, jsonify, Blueprint, make_response
from pymongo import MongoClient
from config.utils import Utils
......@@ -20,6 +21,11 @@ from flask import Flask
from flask_cors import CORS, cross_origin
from flask_restx import Api, Resource, Namespace, namespace
from flask_jwt_extended import create_access_token
from flask_jwt_extended import get_jwt_identity
from flask_jwt_extended import jwt_required
from flask_jwt_extended import JWTManager
app = Flask(__name__)
cors = CORS(app)
app.config['CORS_HEADERS'] = 'Content-Type'
......@@ -34,6 +40,9 @@ client = MongoClient('localhost', 27017)
base_donnees = client.squelette
app.config["JWT_SECRET_KEY"] = "l'ordinateur-c'est-magique" # Change this!
jwt = JWTManager(app)
## *********************************************************************************************************************
## Entrées spécifique pour swagger
blueprint = Blueprint('api', __name__)
......@@ -66,9 +75,15 @@ 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")
## vérification qu'un utilisateur est enrengistré dans la base
def get(self):
return str(utilisateur_dao.presence_utilisateur(request.args.get("login"))), 200
if utilisateur_dao.presence_utilisateur(request.args.get("login")):
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
@users.route('/changePassword')
......@@ -77,6 +92,7 @@ class ChangerMdp(Resource):
@users.response(200, "Mot de Passe changé")
@users.response(409, 'Erreur changement mot de passe')
## changement du mot de passe d'un utilisateur
@jwt_required()
def patch(self):
pass
......@@ -86,6 +102,7 @@ class ChangerMdp(Resource):
class RecupererTousLesUtilisateurs(Resource):
@users.response(200, "Utilisateurs récupérés")
## récupération de tous les utilisateurs en base
@jwt_required()
def get(self):
return json.loads(json.dumps(list(utilisateur_dao.get_all_utilisateurs()), default=json_util.default)), 200
......@@ -104,6 +121,7 @@ contenus = api.namespace('contenus', description='Entrées liées à la gestion
class AjouterContenu(Resource):
@contenus.response(201, "Contenu créé")
## ajouter un nouveau contenu
@jwt_required()
def post(self):
auteur = request.json["auteur"]
contenu_a_ecrire = request.json["contenu_a_ecrire"]
......@@ -120,6 +138,7 @@ class AjouterContenu(Resource):
class AjouterTiers(Resource):
@contenus.response(201, "Tiers créé")
## ajouter un nouveau contenu tiers pour un auteur
@jwt_required()
def patch(self):
id_tiers = json.loads(request.json["id_tiers"])
contenu_dao.creer_tiers(request.json["auteur"], id_tiers["$oid"], request.json["version"])
......@@ -132,6 +151,7 @@ class AjouterTiers(Resource):
class GetContenuParId(Resource):
@contenus.response(200, "Contenu récupéré")
## récupérer un contenu via son id
@jwt_required()
def get(self, id):
return json.loads(json.dumps(list(contenu_dao.get_contenu_par_id(int(id))), default=json_util.default)), 200
......@@ -144,6 +164,7 @@ class GetContenuParId(Resource):
class GetContenuPanier(Resource):
@contenus.response(200, "Panier récupéré")
## récupérer le contenu du panier d'un auteur
@jwt_required()
def get(self, auteur):
auteur = auteur.replace("_", " ")
return json.loads(
......@@ -157,6 +178,7 @@ class GetContenuPanier(Resource):
class GetContenuBanque(Resource):
@contenus.response(200, "Banque récupérée")
## récupérer le contenu de la banque pour un auteur
@jwt_required()
def get(self, auteur):
auteur = auteur.replace("_", " ")
return json.loads(json.dumps(list(contenu_dao.get_contenus_non_auteur(auteur)),
......@@ -168,6 +190,7 @@ class GetContenuBanque(Resource):
class SupprimerPerso(Resource):
@contenus.response(200, "Contenu supprimé")
## supprimer un contenu
@jwt_required()
def delete(self, id_perso):
id_perso = json.loads(id_perso)
contenu_dao.supprimer_contenu(id_perso["$oid"])
......@@ -181,6 +204,7 @@ class SupprimerPerso(Resource):
class supprimer_tiers(Resource):
@contenus.response(200, "Tiers supprimé")
## supprimer un tiers pour un auteur
@jwt_required()
def delete(self):
id_tiers = json.loads(request.args.get("id_tiers"))
......@@ -197,6 +221,7 @@ class supprimer_tiers(Resource):
class creer_nouveau_contenu(Resource):
@contenus.response(201, "Nouveau contenu créé")
## créer un contenu à partir d'une demande de publication refusée
@jwt_required()
def post(self):
id_demande_pub = json.loads(request.json["id_demande_pub"])
contenu_dao.creer_nouveau_contenu(id_demande_pub["$oid"], request.json["auteur"])
......@@ -211,6 +236,7 @@ class creer_nouveau_contenu(Resource):
class maj_contenu(Resource):
@contenus.response(200, "Contenu maj")
## mettre à jour un contenu (en cours - le changement de version d'un contenu se fait via gerer_demande_pub)"
@jwt_required()
def patch(self):
id_contenu_en_cours = json.loads(request.json["id_contenu_en_cours"])
if request.json["auteur"] == "":
......@@ -229,6 +255,7 @@ class maj_contenu(Resource):
class gerer_demande_pub(Resource):
@contenus.response(200, "Réponse à la publication gérée")
## gerer la reponse à une demande de publication
@jwt_required()
def patch(self):
id_publication = json.loads(request.json["id_publication"])
print("Je suis l'id de la publication : ", id_publication["$oid"])
......@@ -241,6 +268,7 @@ class gerer_demande_pub(Resource):
class get_tous_les_contenus(Resource):
@contenus.response(200, "Tous les contenus récupérés")
## récupérer tous les contenus
@jwt_required()
def get(self):
return json.loads(json.dumps(list(contenu_dao.get_tous_les_contenus()), default=json_util.default)), 200
......@@ -251,6 +279,7 @@ class get_tous_les_contenus(Resource):
class get_tags_contenu(Resource):
@contenus.response(200, "Tags récupérés")
## 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"])),
......@@ -262,6 +291,7 @@ class get_tags_contenu(Resource):
class is_contenu_anonyme(Resource):
@contenus.response(200, "Résultat pour savoir si le contenu est anonyme ou non")
## Résultat pour savoir si le contenu est anonyme ou non
@jwt_required()
def get(self, id_contenu):
return str(contenu_dao.is_anonyme(id_contenu)), 200
......@@ -271,6 +301,7 @@ class is_contenu_anonyme(Resource):
class is_maj_tiers_disponible(Resource):
@contenus.response(200, "Résultat pour savoir si des mises à jours tiers sont disponibles")
## Résultat pour savoir si des mises à jours tiers sont disponibles
@jwt_required()
def get(self, auteur):
return str(contenu_dao.is_tiers_maj(auteur)), 200
......@@ -280,6 +311,7 @@ class is_maj_tiers_disponible(Resource):
class liste_maj_tiers(Resource):
@contenus.response(200, "Liste des Maj Tiers récupérée")
## Liste des Maj Tiers récupérée
@jwt_required()
def get(self, auteur):
return json.loads(json.dumps(contenu_dao.liste_tiers_maj(auteur), default=json_util.default)), 200
......@@ -293,6 +325,7 @@ class liste_maj_tiers(Resource):
class gerer_maj_tiers(Resource):
@contenus.response(200, "Maj du tiers gérée")
## gérer la réponse à une maj tiers
@jwt_required()
def patch(self):
id_tiers = json.loads(request.json["id_tiers"])
......@@ -313,6 +346,7 @@ class gerer_maj_tiers(Resource):
class get_texte_contenu(Resource):
@contenus.response(200, "Texte du contenu changé pour la version en cours")
## récupérer le texte de la version en cours du contenu
@jwt_required()
def get(self, id_json):
id_contenu = json.loads(id_json)
return Utils().recuperer_contenu_fichier(id_contenu["$oid"]), 200
......@@ -326,6 +360,7 @@ class get_texte_contenu(Resource):
class get_texte_version_contenu(Resource):
@contenus.response(200, "Texte du contenu récupéré pour la version renseignée")
## récupérer le texte d'une version donnée du contenu
@jwt_required()
def get(self, id_json, version):
id_contenu = json.loads(id_json)
return Utils().recuperer_contenu_version_fichier(id_contenu["$oid"], version), 200
......@@ -337,6 +372,7 @@ class get_texte_version_contenu(Resource):
class changer_texte_contenu(Resource):
@contenus.response(200, "Texte du contenu changé")
## changer le texte d'un contenu (maj de la version en cours)
@jwt_required()
def patch(self, id_contenu):
if len(id_contenu) % 12 == 0:
id_contenu = ObjectId(id_contenu)
......@@ -359,6 +395,7 @@ en_cours = api.namespace('en_cours', description='Entrées liées à la gestion
class GetTexteContenuEnCours(Resource):
@en_cours.response(200, "Texte du contenu en cours récupéré")
## récupérer le texte d'un contenu en cours
@jwt_required()
def get(self, id_en_cours):
if len(id_en_cours) % 12 == 0:
......@@ -375,6 +412,7 @@ class GetTexteContenuEnCours(Resource):
class GetContenuEnCours(Resource):
@en_cours.response(200, "Contenu en cours récupéré")
## récupérer un contenu en cours via son id
@jwt_required()
def get(self, id_en_cours):
return json.loads(
json.dumps(list(en_cours_dao.get_contenu_en_cours_via_id(id_en_cours)), default=json_util.default)), 200
......@@ -385,6 +423,7 @@ class GetContenuEnCours(Resource):
class GetAuteurOtigineContenuEnCours(Resource):
@en_cours.response(200, "Auteur du contenu en cours récupéré")
## récupérer l'auteur d'origine d'un contenu en cours
@jwt_required()
def get(self, id_en_cours):
return json.loads(
json.dumps(list(en_cours_dao.get_auteur_origine_contenu_en_cours(id_en_cours)),
......@@ -397,6 +436,7 @@ class GetAuteurOtigineContenuEnCours(Resource):
class IsContenuDemandePublication(Resource):
@en_cours.response(200, "Résultat pour savoir si le contenu en cours a fait l'objet d'une demande de publication")
## le contenu en cours à t'il fait l'objet d'une demande de publication par l'auteur renseigné ?
@jwt_required()
def get(self, id_en_cours, auteur):
return str(en_cours_dao.is_en_cours_demande(id_en_cours, auteur)), 200
......@@ -406,6 +446,7 @@ class IsContenuDemandePublication(Resource):
class SupprimerEnCoursParId(Resource):
@en_cours.response(200, "Contenu en cours supprimé")
## supprimer un contenu en cours
@jwt_required()
def delete(self, id_en_cours):
id_contenu = json.loads(id_en_cours)
en_cours_dao.supprimer_contenu_en_cours_via_id(id_contenu["$oid"])
......@@ -421,6 +462,7 @@ class SupprimerEnCoursParId(Resource):
class CreerEnCours(Resource):
@en_cours.response(200, "Contenu en cours créé")
## créer un contenu en cours
@jwt_required()
def post(self):
id_contenu = json.loads(request.json["id_contenu"])
en_cours_dao.creer_en_cours(request.json['auteur'], id_contenu["$oid"], request.json['version'],
......@@ -436,6 +478,7 @@ class CreerEnCours(Resource):
class CreerEnCoursRefuse(Resource):
@en_cours.response(201, "Contenu en cours mis à jour au statut de refusé")
## créer un contenu en cours refusé, consécutivement à une demande de publication refusée
@jwt_required()
def patch(self):
id_contenu_en_cours = json.loads(request.json["id_contenu_en_cours"])
......@@ -458,6 +501,7 @@ demande_pub = api.namespace('demande_pub', description='Entrées liées à la ge
class demande_de_publication(Resource):
@demande_pub.response(201, "Demande de publication créée")
## créer une demande de publication
@jwt_required()
def post(self):
id_contenu = json.loads(request.json["id_contenu"])
id_contenu_en_cours = json.loads(request.json["id_contenu_en_cours"])
......@@ -474,6 +518,7 @@ class demande_de_publication(Resource):
class get_demandes_pub(Resource):
@demande_pub.response(200, "Demande de publication récupérées pour l'auteur renseigné")
## récupérer les demandes de publication pour un auteur, proposées ou recues
@jwt_required()
def get(self, auteur, emise):
return json.loads(json.dumps(list(demande_pub_Dao.get_demandes_pub(auteur, distutils.util.strtobool(emise))),
default=json_util.default))
......@@ -484,6 +529,7 @@ class get_demandes_pub(Resource):
class supprimer_demande_pub(Resource):
@demande_pub.response(200, "Demande de publication supprimée")
## supprimer une demande de publication
@jwt_required()
def delete(self, id_publication):
id_publication = json.loads(id_publication)
......@@ -504,6 +550,7 @@ evaluations = api.namespace('evaluations', description='Entrées liées à la ge
class creer_evaluation(Resource):
@evaluations.response(201, "Evaluation créée")
## créer une évaluation
@jwt_required()
def post(self):
evaluation_dao.creer_evaluation(request.args.get('contenus'), request.args.get('auteur'))
return "evaluation créée", 201
......@@ -514,6 +561,7 @@ class creer_evaluation(Resource):
class get_evaluation(Resource):
@evaluations.response(200, "Evaluation récupérée")
## récupérer une évaluation d'un auteur via son id
@jwt_required()
def get(self, auteur, id_evaluation):
return json.loads(
json.dumps(list(evaluation_dao.get_evaluations(auteur, id_evaluation)), default=json_util.default)), 200
......@@ -524,6 +572,7 @@ class get_evaluation(Resource):
class get_all_evaluations(Resource):
@evaluations.response(200, "Toutes les évaluations récupérées")
## récupérer toutes les évaluations d'un auteur
@jwt_required()
def get(self, auteur):
return json.loads(json.dumps(list(evaluation_dao.get_evaluations(auteur, 0)), default=json_util.default)), 200
......@@ -533,6 +582,7 @@ class get_all_evaluations(Resource):
class supprimer_evaluation(Resource):
@evaluations.response(200, "Evaluation supprimée")
## supprimer une évaluation
@jwt_required()
def delete(self, id_evaluation):
evaluation_dao.supprimer_evaluation(id_evaluation)
return "Evaluation supprimée", 200
......
from flask import Flask
from flask_pymongo import PyMongo
from config.gitUtils import GitUtils
app = Flask(__name__)
app.config["MONGO_URI"] = "mongodb://localhost:27017/squelette"
mongo = PyMongo(app)
## Fonctions 'générales', principalement de manipulation des fichiers
class Utils:
## Fonction permettant de changer la version
......
......@@ -100,5 +100,5 @@ var classjinja2_1_1compiler_1_1_code_generator =
[ "optimized", "classjinja2_1_1compiler_1_1_code_generator.html#a5ab6474ed31a2311422a69823d8dd8c4", null ],
[ "optimizer", "classjinja2_1_1compiler_1_1_code_generator.html#a6e7f6ae6228957cb12294e2ffbc0fbc8", null ],
[ "stream", "classjinja2_1_1compiler_1_1_code_generator.html#ae489866f8220882799d2786ca0690e5b", null ],
[ "tests", "classjinja2_1_1compiler_1_1_code_generator.html#aa58c6e40436bbb090294218b7d758a15", null ]
[ "test", "classjinja2_1_1compiler_1_1_code_generator.html#aa58c6e40436bbb090294218b7d758a15", null ]
];
\ No newline at end of file
......@@ -16,7 +16,7 @@ from modele.encours_dao import EncoursDao
class ContenuDao:
client = MongoClient('localhost', 27017)
chemin = "/home/passerat/Stage/flaskProject/contenus/"
chemin = "/home/OpenQuizz/Flask/contenus/"
gitUtils = GitUtils()
## extraction d'une base de données. Si elle n'existe pas, elle esst créée
......
import pytest
import os
import pytest
from app import app
from flask import url_for
@pytest.fixture
def client():
app.config['TESTING'] = True
app.config['SERVER_NAME'] = 'TEST'
client = app.test_client()
with app.app_context():
pass
app.app_context().push()
yield client
def test_multiplication():
assert 4 == 2 * 2
def test_index(client):
rv = client.get('/')
assert rv.status_code == 404
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