Commit 59c7797c authored by Jérémie Passerat's avatar Jérémie Passerat

Fin cycle complet xml reponse courte

parent 0c12fa95
...@@ -4,6 +4,7 @@ import random ...@@ -4,6 +4,7 @@ import random
import string import string
from datetime import datetime, timezone, timedelta from datetime import datetime, timezone, timedelta
from distutils import util from distutils import util
from io import BytesIO
from bson import json_util, ObjectId from bson import json_util, ObjectId
from flask import Flask from flask import Flask
...@@ -80,11 +81,11 @@ def my_invalid_token_callback(expired_token): ...@@ -80,11 +81,11 @@ def my_invalid_token_callback(expired_token):
@app.after_request @app.after_request
def refresh_expiring_jwts(response): def refresh_expiring_jwts(response):
try: try:
print(get_jwt())
return response return response
except (RuntimeError, KeyError): except (RuntimeError, KeyError):
return response return response
## ********************************************************************************************************************* ## *********************************************************************************************************************
## Fonction pour recharger le token d'accès ## Fonction pour recharger le token d'accès
...@@ -92,7 +93,6 @@ def refresh_expiring_jwts(response): ...@@ -92,7 +93,6 @@ def refresh_expiring_jwts(response):
@jwt_required(refresh=True) @jwt_required(refresh=True)
def refresh(): def refresh():
identity = get_jwt_identity() identity = get_jwt_identity()
print("identity : " + identity)
access_token = create_access_token(identity=identity) access_token = create_access_token(identity=identity)
return jsonify(access_token=access_token) return jsonify(access_token=access_token)
...@@ -235,7 +235,8 @@ class UploaderContenu(Resource): ...@@ -235,7 +235,8 @@ class UploaderContenu(Resource):
@jwt_required() @jwt_required()
def post(self, auteur): def post(self, auteur):
file = request.files['file'] file = request.files['file']
contenu_dao.importer_contenu(auteur, file) tags = request.args.get('tags')
contenu_dao.importer_contenu(auteur, file, tags)
return json.loads(json.dumps((contenu_dao.get_contenu_par_id(contenu_dao.id_dernier_contenu_ajoute())), return json.loads(json.dumps((contenu_dao.get_contenu_par_id(contenu_dao.id_dernier_contenu_ajoute())),
default=json_util.default)), 201 default=json_util.default)), 201
...@@ -304,11 +305,6 @@ class GetContenuPanier(Resource): ...@@ -304,11 +305,6 @@ class GetContenuPanier(Resource):
## récupérer le contenu du panier d'un auteur ## récupérer le contenu du panier d'un auteur
@jwt_required() @jwt_required()
def get(self, auteur): def get(self, auteur):
exp_timestamp = get_jwt()["exp"]
now = datetime.now(timezone.utc)
target_timestamp = datetime.timestamp(now + timedelta(minutes=30))
print("tuttutututu : ", datetime.fromtimestamp(exp_timestamp - target_timestamp))
auteur = auteur.replace("_", " ") auteur = auteur.replace("_", " ")
return json.loads( return json.loads(
json.dumps(contenu_dao.get_contenus(auteur, request.args.get("perso"), request.args.get("tiers"), json.dumps(contenu_dao.get_contenus(auteur, request.args.get("perso"), request.args.get("tiers"),
...@@ -492,7 +488,6 @@ class associer_tag_libre(Resource): ...@@ -492,7 +488,6 @@ class associer_tag_libre(Resource):
## associer un tag libre à un contenu ## associer un tag libre à un contenu
@jwt_required() @jwt_required()
def patch(self): def patch(self):
print("Couzin")
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", 201 return "tag associe", 201
...@@ -689,10 +684,19 @@ class modifier_xml(Resource): ...@@ -689,10 +684,19 @@ class modifier_xml(Resource):
def patch(self): def patch(self):
id_contenu = json.loads(request.json['id_contenu']) id_contenu = json.loads(request.json['id_contenu'])
elements_contenu = json.loads(request.json['elements_contenu']) elements_contenu = json.loads(request.json['elements_contenu'])
print("elements_contenu : ", elements_contenu)
ContenuDao().modifier_xml_moodle(id_contenu["$oid"], elements_contenu) return ContenuDao().modifier_xml_moodle(id_contenu["$oid"], elements_contenu).decode("utf-8"), 200
return "contenu modifié", 200
@contenus.route("/exporterContenuXml/<id_contenu>")
@contenus.doc(params={'id_contenu': "L'id du contenu à modifier"})
@contenus.doc(description='exporter un xml moodle (contenu tiers ou perso)')
class modifier_xml(Resource):
@contenus.response(200, "contenu exporté")
def get(self, id_contenu):
id_contenu = json.loads(id_contenu)
chemin = ContenuDao().get_chemin_du_contenu(id_contenu["$oid"])
return send_file(chemin)
en_cours = api.namespace('en_cours', description='Entrées liées à la gestion des contenus en cours') en_cours = api.namespace('en_cours', description='Entrées liées à la gestion des contenus en cours')
...@@ -701,6 +705,18 @@ en_cours = api.namespace('en_cours', description='Entrées liées à la gestion ...@@ -701,6 +705,18 @@ en_cours = api.namespace('en_cours', description='Entrées liées à la gestion
## ********************************************************************************************************************* ## *********************************************************************************************************************
## Entrées liées à la gestion des contenus en cours ## Entrées liées à la gestion des contenus en cours
@en_cours.route("/exporterContenuXmlEnCours/<id_contenu>")
@en_cours.doc(params={'id_contenu': "L'id du contenu à modifier"})
@en_cours.doc(description='exporter un xml moodle (contenu tiers ou perso)')
class modifier_xml(Resource):
@en_cours.response(200, "contenu exporté")
def get(self, id_contenu):
id_contenu = json.loads(id_contenu)
chemin = EncoursDao().get_chemin_contenu_en_cours(id_contenu["$oid"])
return send_file(chemin)
@en_cours.route("/getTexteContenuEnCours/<id_en_cours>") @en_cours.route("/getTexteContenuEnCours/<id_en_cours>")
@en_cours.doc(description="récupérer le texte d'un contenu en cours") @en_cours.doc(description="récupérer le texte d'un contenu en cours")
class GetTexteContenuEnCours(Resource): class GetTexteContenuEnCours(Resource):
...@@ -729,6 +745,31 @@ class GetContenuEnCours(Resource): ...@@ -729,6 +745,31 @@ class GetContenuEnCours(Resource):
json.dumps(list(en_cours_dao.get_contenu_en_cours_via_id(id_en_cours)), default=json_util.default)), 200 json.dumps(list(en_cours_dao.get_contenu_en_cours_via_id(id_en_cours)), default=json_util.default)), 200
@en_cours.route("/modifierXMLEnCours")
@en_cours.doc(params={'id_contenu': "L'id du contenu en cours à modifier"})
@en_cours.doc(params={'elements_contenu': "Le détail du contenu"})
@en_cours.doc(desciption="modifier un xml moodle")
class modifier_xml(Resource):
@en_cours.response(200, "contenu en cours modifié")
def patch(self):
id_contenu = json.loads(request.json['id_contenu'])
elements_contenu = json.loads(request.json['elements_contenu'])
xml_modifie = ContenuDao().modifier_xml_moodle(id_contenu["$oid"], elements_contenu, True)
return xml_modifie.decode("utf-8"), 200
@en_cours.route("/parserContenuEnCours/<id_contenu_ec>")
@en_cours.doc(params={'id_contenu_ec': "L(id du contenu en cours à parser"})
@en_cours.doc(desciption="lire le xml du document pour en récupérer les données")
class parser_contenu_xml(Resource):
@en_cours.response(200, "contenu parsé")
@jwt_required()
def get(self, id_contenu_ec):
id_contenu_ec = json.loads(id_contenu_ec)
return ContenuDao().previsualiser_xml_moodle(id_contenu_ec["$oid"], True), 200
@en_cours.route("/getAuteurOrigineEnCours/<id_en_cours>") @en_cours.route("/getAuteurOrigineEnCours/<id_en_cours>")
@en_cours.doc(description="récupérer l'auteur d'origine d'un contenu en cours") @en_cours.doc(description="récupérer l'auteur d'origine d'un contenu en cours")
class GetAuteurOtigineContenuEnCours(Resource): class GetAuteurOtigineContenuEnCours(Resource):
...@@ -765,7 +806,7 @@ class SupprimerEnCoursParId(Resource): ...@@ -765,7 +806,7 @@ class SupprimerEnCoursParId(Resource):
@en_cours.route("/newEnCours") @en_cours.route("/newEnCours")
@en_cours.doc(params={'id_contenu': "l'id du contenu d'origine"}) @en_cours.doc(params={'contenu': "le contenu d'origine"})
@en_cours.doc(params={'auteur': "l'auteur du contenu en cours"}) @en_cours.doc(params={'auteur': "l'auteur du contenu en cours"})
@en_cours.doc(params={'version': "la version du contenu modifié pour créé l'en cours "}) @en_cours.doc(params={'version': "la version du contenu modifié pour créé l'en cours "})
@en_cours.doc(params={'provenance': "la provenance du contenu en cours (perso ou tiers)"}) @en_cours.doc(params={'provenance': "la provenance du contenu en cours (perso ou tiers)"})
...@@ -775,9 +816,9 @@ class CreerEnCours(Resource): ...@@ -775,9 +816,9 @@ class CreerEnCours(Resource):
## créer un contenu en cours ## créer un contenu en cours
@jwt_required() @jwt_required()
def post(self): def post(self):
id_contenu = json.loads(request.json["id_contenu"]) contenu = json.loads(request.json["contenu"])
en_cours_dao.creer_en_cours(request.json['auteur'], id_contenu["$oid"], request.json['version'],
request.json['provenance']) en_cours_dao.creer_en_cours(request.json['auteur'], request.json['provenance'], contenu, request.json['titre'])
return json.loads(json.dumps(en_cours_dao.get_contenu_en_cours_via_id(en_cours_dao.recuperer_dernier_id()), return json.loads(json.dumps(en_cours_dao.get_contenu_en_cours_via_id(en_cours_dao.recuperer_dernier_id()),
default=json_util.default)), 201 default=json_util.default)), 201
...@@ -820,6 +861,7 @@ demande_pub = api.namespace('demande_pub', description='Entrées liées à la ge ...@@ -820,6 +861,7 @@ demande_pub = api.namespace('demande_pub', description='Entrées liées à la ge
@demande_pub.doc(params={'id_contenu_en_cours': "l'id du contenu en cours associé à la demande de publica"}) @demande_pub.doc(params={'id_contenu_en_cours': "l'id du contenu en cours associé à la demande de publica"})
@demande_pub.doc(params={'auteur_en_cours': "l''auteur de la demande de publica"}) @demande_pub.doc(params={'auteur_en_cours': "l''auteur de la demande de publica"})
@demande_pub.doc(params={'version': "la version 'effective' du contenu publié"}) @demande_pub.doc(params={'version': "la version 'effective' du contenu publié"})
@demande_pub.doc(params={'version': "la source du contenu publié"})
@demande_pub.doc(description="créer une demande de publication") @demande_pub.doc(description="créer une demande de publication")
class demande_de_publication(Resource): class demande_de_publication(Resource):
@demande_pub.response(201, "Demande de publication créée") @demande_pub.response(201, "Demande de publication créée")
...@@ -831,7 +873,8 @@ class demande_de_publication(Resource): ...@@ -831,7 +873,8 @@ class demande_de_publication(Resource):
auteur = en_cours_dao.get_auteur_origine_contenu_en_cours(id_contenu_en_cours["$oid"]) auteur = en_cours_dao.get_auteur_origine_contenu_en_cours(id_contenu_en_cours["$oid"])
demande_pub_Dao.creer_demande_publication(id_contenu["$oid"], id_contenu_en_cours["$oid"], demande_pub_Dao.creer_demande_publication(id_contenu["$oid"], id_contenu_en_cours["$oid"],
request.json['auteur_en_cours'], auteur, request.json["version"]) request.json['auteur_en_cours'], auteur, request.json["version"],
request.json["source"])
# return "Demande de publication créée", 201 # return "Demande de publication créée", 201
return json.loads(json.dumps((demande_pub_Dao.get_demande_pub_via_id(demande_pub_Dao.recuperer_dernier_id())), return json.loads(json.dumps((demande_pub_Dao.get_demande_pub_via_id(demande_pub_Dao.recuperer_dernier_id())),
......
...@@ -31,10 +31,13 @@ class Utils: ...@@ -31,10 +31,13 @@ class Utils:
from modele.contenu_dao import ContenuDao from modele.contenu_dao import ContenuDao
from modele.encours_dao import EncoursDao from modele.encours_dao import EncoursDao
if (en_cours): if (en_cours):
chemin = EncoursDao().get_chemin_contenu_en_cours(id_contenu) chemin = EncoursDao().get_chemin_contenu_en_cours(id_contenu)
else: else:
chemin = ContenuDao().get_chemin_du_contenu(id_contenu) chemin = ContenuDao().get_chemin_du_contenu(id_contenu)
with open(chemin, "r") as fichier: with open(chemin, "r") as fichier:
texte = fichier.read() texte = fichier.read()
...@@ -73,7 +76,6 @@ class Utils: ...@@ -73,7 +76,6 @@ class Utils:
from modele.encours_dao import EncoursDao from modele.encours_dao import EncoursDao
chemin_fichier = EncoursDao().get_chemin_contenu_en_cours(id_contenu) chemin_fichier = EncoursDao().get_chemin_contenu_en_cours(id_contenu)
#print("titre : " + titre)
EncoursDao().changer_titre(id_contenu, titre) EncoursDao().changer_titre(id_contenu, titre)
myFile = open(chemin_fichier, "w") myFile = open(chemin_fichier, "w")
# y ajouter le texte du contenu # y ajouter le texte du contenu
......
This diff is collapsed.
...@@ -18,14 +18,14 @@ class DemandePubDao: ...@@ -18,14 +18,14 @@ class DemandePubDao:
# @param idContenuEnCours l'id du contenu en cours # @param idContenuEnCours l'id du contenu en cours
# @param auteurEnCours l'auteur du contenu en cours # @param auteurEnCours l'auteur du contenu en cours
def creer_demande_publication(self, id_contenu, id_contenu_en_cours, auteur_en_cours, auteur, version_en_cours): def creer_demande_publication(self, id_contenu, id_contenu_en_cours, auteur_en_cours, auteur, version_en_cours, source):
self.base_donnees.demandesPub.insert_one( self.base_donnees.demandesPub.insert_one(
{"date": datetime.now().strftime("%d/%m/%y"), "auteurDemande": auteur_en_cours, {"date": datetime.now().strftime("%d/%m/%y"), "auteurDemande": auteur_en_cours,
"auteurContenu": auteur, "idContenu": ObjectId(id_contenu), "auteurContenu": auteur, "idContenu": ObjectId(id_contenu),
"titre": EncoursDao().get_titre_en_cours(id_contenu_en_cours), "titre": EncoursDao().get_titre_en_cours(id_contenu_en_cours),
"idContenuEnCours": ObjectId(id_contenu_en_cours), "version_en_cours": version_en_cours, "idContenuEnCours": ObjectId(id_contenu_en_cours), "version_en_cours": version_en_cours,
"etat": "enCours"}) "source": source, "etat": "enCours"})
self.base_donnees.encours.update_one({"_id": ObjectId(id_contenu_en_cours)}, {"$set": {"isPublie": "oui"}}) self.base_donnees.encours.update_one({"_id": ObjectId(id_contenu_en_cours)}, {"$set": {"isPublie": "oui"}})
......
import json
import os import os
from pathlib import Path from pathlib import Path
...@@ -69,42 +70,62 @@ class EncoursDao: ...@@ -69,42 +70,62 @@ class EncoursDao:
## création d'un contenu en cours ## création d'un contenu en cours
# @param auteur -> l'auteur du contenu en cours. # @param auteur -> l'auteur du contenu en cours.
# @param id_contenu -> l'id du contenu d'origine # @param contenu -> le contenu d'origine
# @param version la version du contenu d'origine # @param version la version du contenu d'origine
# @param provenance pour déterminer si le contenu d'origine est un tiers ou un perso # @param provenance pour déterminer si le contenu d'origine est un tiers ou un perso
def creer_en_cours(self, auteur, id_contenu, version, provenance): def creer_en_cours(self, auteur, provenance, contenu, titre):
from modele.contenu_dao import ContenuDao from modele.contenu_dao import ContenuDao
if ContenuDao().is_anonyme(id_contenu): if contenu["versionEnCours"]["nbreNotes"] == 0:
moyenne = 0
else:
moyenne = contenu["versionEnCours"]["note"] / contenu["versionEnCours"]["nbreNotes"]
# print("auteur : ", auteur)
# print("provenance : ", provenance)
# print("titre : ", titre)
# print("id : ", contenu["_id"]["$oid"])
# print("type id : ", type(contenu["_id"]["$oid"]))
# print("version : ", contenu["versionEnCours"]["numero"])
if ContenuDao().is_anonyme(contenu["_id"]["$oid"]):
self.base_donnees.encours.insert_one( self.base_donnees.encours.insert_one(
{"date": datetime.now().strftime("%d/%m/%y"), "fichier": "", "auteur": auteur, {"date": datetime.now().strftime("%d/%m/%y"), "fichier": "", "auteur": auteur,
"reference": ObjectId(id_contenu), "version": version, "origine": provenance, "anonyme": "oui"}) "reference": ObjectId(contenu["_id"]["$oid"]), "version": contenu["versionEnCours"]["numero"],
"origine": provenance, "tags_fixes": json.loads(contenu["tags_fixes"]),
"titre": titre, "type": contenu["type"], "source": contenu["source"], "moyenne": moyenne,
"anonyme": "oui"})
else: else:
self.base_donnees.encours.insert_one( self.base_donnees.encours.insert_one(
{"date": datetime.now().strftime("%d/%m/%y"), "fichier": "", "auteur": auteur, {"date": datetime.now().strftime("%d/%m/%y"), "fichier": "", "auteur": auteur,
"reference": ObjectId(id_contenu), "version": version, "origine": provenance}) "reference": ObjectId(contenu["_id"]["$oid"]), "version": contenu["versionEnCours"]["numero"],
"origine": provenance, "tags_fixes": json.loads(contenu["tags_fixes"]),
"titre": titre, "type": contenu["type"], "source": contenu["source"], "moyenne": moyenne})
id = self.recuperer_dernier_id() id = self.recuperer_dernier_id()
chemin_tags = '/'.join(json.loads(contenu["tags_fixes"])) + "/"
nom_fichier = (contenu["fichier"][contenu["fichier"].rfind("/") + 1:])
Path(self.chemin).mkdir(parents=True, exist_ok=True) chemin_fichier = self.chemin + chemin_tags + nom_fichier + "/"
Path(chemin_fichier).mkdir(0o777, parents=True, exist_ok=True)
myFile = open(self.chemin + id, "w") myFile = open(chemin_fichier + nom_fichier, "w")
# y ajouter le texte du contenu # y ajouter le texte du contenu
myFile.write(self.utils.recuperer_contenu_fichier(id_contenu)) myFile.write(self.utils.recuperer_contenu_fichier(contenu["_id"]["$oid"]))
myFile.close() myFile.close()
# mettre a jour le chemin du contenu # mettre a jour le chemin du contenu
self.base_donnees.encours.update_one({"_id": ObjectId(id)}, self.base_donnees.encours.update_one({"_id": ObjectId(id)},
{"$set": {"fichier": id}}) {"$set": {"fichier": chemin_tags + nom_fichier + "/" + nom_fichier}})
## Modification d'un titre d'un contenu en cours ## Modification d'un titre d'un contenu en cours
# @param id_en_cours l'id du contenu en cours # @param id_en_cours l'id du contenu en cours
# @param nouveau_titre le titre à changer # @param nouveau_titre le titre à changer
def changer_titre(self, id_en_cours, nouveau_titre): def changer_titre(self, id_en_cours, nouveau_titre):
# print("Je suis ici : " + nouveau_titre) # print("Je suis ici : " + nouveau_titre)
self.base_donnees.encours.update_one({"_id": ObjectId(id_en_cours)}, {"$set": {"titre": nouveau_titre}}) self.base_donnees.encours.update_one({"_id": ObjectId(id_en_cours)}, {"$set": {"titre": nouveau_titre}})
## Récupération d'un titre d'un contenu en cours ## Récupération d'un titre d'un contenu en cours
......
...@@ -14,9 +14,6 @@ class UtilisateurDao: ...@@ -14,9 +14,6 @@ class UtilisateurDao:
# @param motDePasse le mot de passe tapé # @param motDePasse le mot de passe tapé
# @return un booléen pour dire si l'utilisateur existe ou pas # @return un booléen pour dire si l'utilisateur existe ou pas
def presence_utilisateur(self, nomUtilisateur): def presence_utilisateur(self, nomUtilisateur):
# print("Je suis dans présence utilisateur pour ", nomUtilisateur)
# print("Et j'en ai trouvé : ", nmbre.count())
return self.base_donnees.utilisateur.count_documents({"nom": nomUtilisateur}) == 1 return self.base_donnees.utilisateur.count_documents({"nom": nomUtilisateur}) == 1
......
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