Commit 568b0c25 authored by Jérémie Passerat's avatar Jérémie Passerat

Version finale avant présentation du 07/05/21

parent 37c8db99
......@@ -28,10 +28,22 @@ from Utils import Utils
# 2. Installer les outils mentionnés ci dessus \n
# 3. Modifier le chemin présent à la ligne 21 du fichier Utils.py (et le remplacer par le chemin ou vous avez cloné le dépôt git) \n
# 4. Lancer Main.py, soit directement à la main, soit via un IDE configuré pour ça (environnement virtual utilisable) \n
Menu()
#Menu()
Utils.initialise_mongo()
contenus_autres = Utils.get_contenus("Auteur 1", False)
for elt in contenus_autres:
print("id : ", elt["id"], "nom :", elt["fichier"], " - v", elt["versionEnCours"]["numero"], " - du",
elt["versionEnCours"]["date"])
print (" -------------------------------------------- ")
contenus = Utils.get_contenus("Auteur 1", True)
for elt in contenus:
print("id : ", elt["id"], "nom :", elt["fichier"], " - v", elt["versionEnCours"]["numero"], " - du",
elt["versionEnCours"]["date"])
# Utils.initialise_mongo()
# Utils.tout_peter()
# Utils.creer_auteur_si_besoin()
# Utils.ajouter_contenu("Contenu1", "Auteur 1")
......
......@@ -141,6 +141,7 @@ class Menu:
if action == 'c':
os.system('clear')
print("Bonjour ", self.auteur_en_cours)
print("Vous consultez le contenu ", id)
Utils.changer_version(id, 0, "master")
if Utils.get_version_courante(id) != 1:
print("Je choisis la version que je veux : (entre 1 et", Utils.get_version_courante(id), ")")
......@@ -150,7 +151,7 @@ class Menu:
Utils.changer_version(id, choix)
else:
version_courante = int(Utils.get_version_courante(id))
Utils.changer_version(version_courante, id)
Utils.changer_version(id, version_courante)
print("Voici le détail de votre contenu n°", id)
Utils.consulter_un_contenu(id, self.auteur_en_cours)
# Utils.affichage(Utils.get_chemin_du_contenu(id))
......@@ -197,7 +198,7 @@ class Menu:
def afficher_contenus(self, contenu):
for elt in contenu:
print("nom :", elt["fichier"], " - v", elt["versionEnCours"]["numero"], " - du",
print("id : ", elt["id"], "nom :", elt["fichier"], " - v", elt["versionEnCours"]["numero"], " - du",
elt["versionEnCours"]["date"])
def modifier_contenu(self, id_contenu):
......@@ -345,7 +346,7 @@ class Menu:
self.valider_modification(id)
print("La demande de validation du contenu a été effectuée")
# Si le contenu validé est d'origine personnelle on peut supprimer le en cours (sinon on le conserve)
if not Utils.is_tiers_auteur(self.auteur_en_cours, id):
if not Utils.is_tiers_auteur(self.auteur_en_cours, id) or Utils.is_anonyme(id):
Utils.supprimer_contenu_en_cours(int(id))
print("Appuyer sur q pour revenir en arriere : ")
......@@ -374,7 +375,10 @@ class Menu:
for elt in contenu:
print("id Modif :", elt["idContenuEC"], "auteur original :", elt["auteur"], " - id Original :",
elt["reference"],
"version original", elt["version"], " date modif ", elt["date"])
"version original", elt["version"], " date modif ", elt["date"], end='')
if Utils.is_en_cours_demande(elt["idContenuEC"], self.auteur_en_cours):
print("(demande de publication en cours sur ce contenu)")
#print("\n")
## Menu des contenus en banque
......@@ -450,7 +454,7 @@ class Menu:
idContenu = Utils.get_id_contenu_associe_a_un_en_cours(idContenuEnCours)
branche = Utils.get_branche_contenu_en_cours(idContenuEnCours)
if auteur == self.auteur_en_cours:
if auteur == self.auteur_en_cours or Utils.is_anonyme(idContenu):
chemin = Utils.get_chemin_du_contenu(idContenu)
Utils.maj_contenu(chemin, idContenu, branche)
else:
......@@ -644,7 +648,7 @@ class Menu:
if pub["etat"] == "accepté":
print("Votre publication a été acceptée. Le contenu tiers correspondant a été mis à jours")
Utils.supprimer_publication(pub["id"])
#Utils.supprimer_contenu_en_cours(Utils.get_id_contenu_en_cours_associe_a_une_publication(pub['id']))
# Utils.supprimer_contenu_en_cours(Utils.get_id_contenu_en_cours_associe_a_une_publication(pub['id']))
if pub["etat"] == "refus":
print("Actions possibles : ")
print("n : creer un nouveau contenu a partir de celui ci")
......@@ -652,10 +656,10 @@ class Menu:
print("c : (non disponible) conserver le contenu en l'état")
print("q : remettre ce choix à plus tard")
choix = input()
print ("Le choix que je fais : ", choix)
print("Le choix que je fais : ", choix)
if choix == 'n':
id_en_cours = Utils.get_id_contenu_en_cours_associe_a_une_publication(id_pub)
print ("L'id du contenu en cours est : ", id_en_cours)
print("L'id du contenu en cours est : ", id_en_cours)
contenu_associe = Utils.get_id_contenu_associe_a_un_en_cours(id_en_cours)
chemin = Utils.get_chemin_du_contenu(contenu_associe)
......@@ -682,6 +686,46 @@ class Menu:
input()
self.menu_des_actions()
## listing de toutes les mises a jour possibles pour les tiers d'un auteur
# @param auteur l'auteur en cours
def liste_maj_tiers(self, auteur):
# on cherche toutes les versions en cours dans les tiers et on compare avec celles de la banque
# Trouver un moyen de sauvegarder le fait qu'une maj ait été refusée.
tiers = Utils.get_contenus_tiers(auteur)
for (id, version) in tiers:
versionCourante = Utils.get_version_courante(id["contenu"])
if version["version"] < versionCourante:
if not Utils.is_maj_refusee(auteur, id["contenu"], versionCourante):
print("Contenu : ", id["contenu"], " version actuelle : ", version["version"], "version maj : ",
versionCourante)
print("Mise à jour possible")
print(
"Appuyer sur c pour consulter le détail de la mise à jour du contenu")
choix = input()
if choix == 'c':
Utils.changer_version(id["contenu"], 0, "master")
Utils.changer_version(id["contenu"], Utils.get_version_courante(id["contenu"]))
print("Détail de la maj disponible pour le contenu : ")
Utils.consulter_un_contenu(id["contenu"], self.auteur_en_cours)
print(
"Appuyer sur o pour accepter cette maj, sur n pour la refuser ou sur q pour revenir au menu des actions : ")
if choix == 'o':
Utils.maj_tiers(id["contenu"], versionCourante, auteur)
print("Mise à jour effectuée")
print("appuyez sur q pour revenir au menu des actions")
input()
self.menu_des_actions()
elif choix == 'n':
Utils.maj_tiers(id["contenu"], versionCourante, auteur, True)
print("Mise à jour refusée")
print("appuyez sur q pour revenir au menu des actions")
input()
self.menu_des_actions()
else:
self.menu_des_actions()
'''
## Importer un fichier
......
......@@ -74,7 +74,7 @@ class Utils:
if max_id is None:
max_id = 0
print("nomFichier : ", Utils.chemin + "dossier" + nomFichier + "/")
#print("nomFichier : ", Utils.chemin + "dossier" + nomFichier + "/")
cheminFichier = Utils.chemin + "dossier" + nomFichier + "/"
......@@ -83,7 +83,7 @@ class Utils:
os.system("cp '" + Utils.chemin + nomFichier + "' '" + cheminFichier + nomFichier + "'")
commit = UtilsGit.commit(cheminFichier, nomFichier, "Version 1")
print("commit : ", commit)
#print("commit : ", commit)
Utils.statdb.contenu.insert_one(
{"id": max_id + 1, "auteur": auteur, "note": randrange(0, 10, 1),
......@@ -106,8 +106,14 @@ class Utils:
if panier:
return Utils.statdb.contenu.find({"auteur": auteur})
else:
tiers_auteur = Utils.get_contenus_tiers(auteur)
return Utils.statdb.contenu.find({"auteur": {"$ne": auteur}} and {"id": {"$nin": tiers_auteur}})
contenus_tiers = Utils.get_contenus_tiers(auteur)
tiers_auteur = list()
for tier in contenus_tiers:
tiers_auteur.append(tier[0]["contenu"])
#return Utils.statdb.contenu.find({"auteur": {"$ne": auteur}} or {"id": {"$nin": tiers_auteur}})
#return Utils.statdb.contenu.find({"auteur": {"$ne": auteur}})
# print ("tiers de l'auteur : ", tiers_auteur)
return Utils.statdb.contenu.find({"$and" : [{"auteur": {"$ne": auteur}}, {"id": {"$nin": tiers_auteur}}]})
## Consultation de tous les contenus, sans distinction
# (utile temporairement pour la création d'évaluations)
......@@ -154,7 +160,7 @@ class Utils:
# @param idContenu l'identifiant du contenu
@staticmethod
def is_anonyme(idContenu):
print("Is anonyme : ", Utils.statdb.contenu.find_one({"id": idContenu})["auteur"])
#print("Is anonyme : ", Utils.statdb.contenu.find_one({"id": idContenu})["auteur"])
return Utils.statdb.contenu.find_one({"id": idContenu})["auteur"] == "Aucun"
## Récupérer un contenu à partir de son identifiant et sa version
......@@ -229,7 +235,7 @@ class Utils:
element = Utils.statdb.encours.find().sort("idContenuEC", -1).limit(1)
for elt in element:
print("id : ", elt)
#print("id : ", elt)
return int(elt["idContenuEC"])
## Récupérer l'id maximal (pour les demandes de publication)
......@@ -241,7 +247,7 @@ class Utils:
element = Utils.statdb.demandesPub.find().sort("id", -1).limit(1)
for elt in element:
print("id : ", elt)
#print("id : ", elt)
return int(elt["id"])
## Récupérer les tiers d'un utilisateur
......@@ -336,7 +342,7 @@ class Utils:
@staticmethod
def modification_fichier(chemin, idContenu, auteur, modifPremiere=True):
print("Le chemin du fichier est : ", chemin)
#print("Le chemin du fichier est : ", chemin)
# on récupère la fin du fichier (la version)
fin = Utils.affichage(chemin)
......@@ -348,14 +354,14 @@ class Utils:
repertoire = chemin[:chemin.rfind("/") + 1]
nomFichier = chemin[chemin.rfind("/") + 1:]
print("nomFichier :", nomFichier)
print("chemin :", chemin)
#print("nomFichier :", nomFichier)
#print("chemin :", chemin)
# exit(0)
if modifPremiere:
# on créée une nouvelle branche et on va dedans
nomBranche = "version" + str(version + 1)
print("Je veux la branche", nomBranche)
#print("Je veux la branche", nomBranche)
UtilsGit.embranchement(repertoire, nomBranche)
UtilsGit.changerVersionBranche(repertoire, nomBranche)
# si on est pas en "modifPremiere" on est déja dans la bonne branche.
......@@ -444,7 +450,7 @@ class Utils:
@staticmethod
def get_id_contenu_associe_a_un_en_cours(idContenuEnCours):
print("L'id en cours que j'ai est", idContenuEnCours, " - ", type(idContenuEnCours))
#print("L'id en cours que j'ai est", idContenuEnCours, " - ", type(idContenuEnCours))
return Utils.statdb.encours.find_one({"idContenuEC": int(idContenuEnCours)})["reference"]
@staticmethod
......@@ -454,7 +460,7 @@ class Utils:
@staticmethod
def get_id_contenu_en_cours_associe_a_une_publication(idDdePublication):
print("L'id en cours que j'ai est", idDdePublication, " - ", type(idDdePublication))
#print("L'id en cours que j'ai est", idDdePublication, " - ", type(idDdePublication))
return Utils.statdb.demandesPub.find_one({"id": int(idDdePublication)})["idContenuEnCours"]
## récupérer le chemin d'un fichier associé à un contenu
......@@ -521,7 +527,7 @@ class Utils:
## creer un contenu à partir d'un contenu en cours
@staticmethod
def creer_nouveau_contenu(chemin, auteurEnCours, idContenuEnCours):
print("chemin : ", chemin)
#print("chemin : ", chemin)
# hard codé pour l'exemple, sera adaptatif dans le futur
max_id = 3
......@@ -530,9 +536,9 @@ class Utils:
cheminFichier = Utils.chemin + dossierFichier
nomFichier = chemin[chemin.rfind("/") + 1:]
print("Chemin fichier : ", cheminFichier)
print("Dossier Fichier : ", dossierFichier)
print("NomFichier :", nomFichier)
#print("Chemin fichier : ", cheminFichier)
#print("Dossier Fichier : ", dossierFichier)
#print("NomFichier :", nomFichier)
Path(cheminFichier).mkdir(parents=True, exist_ok=True)
os.system("cp " + chemin + " " + cheminFichier)
os.system("mv " + cheminFichier + nomFichier + " " + cheminFichier + "Contenu" + str(max_id))
......@@ -591,6 +597,8 @@ class Utils:
def get_commit_pour_une_version(idContenu, version):
print("Je veux récupérer le commit associé à la version ", version, "pour le contenu ", idContenu)
if version == Utils.get_version_courante(idContenu):
courante = Utils.statdb.contenu.find_one({"id": idContenu})["versionEnCours"]
return courante["commit"]
......@@ -622,29 +630,6 @@ class Utils:
Utils.statdb.demandesPub.update_one({"id": int(idPublication)}, {"$set": {"etat": "refus"}})
# Utils.statdb.demandesPub.update_one({"id": 1}, {"$set": {"etat": "refus"}})
## listing de toutes les mises a jour possibles pour les tiers d'un auteur
# @param auteur l'auteur en cours
@staticmethod
def liste_maj_tiers(auteur):
# on cherche toutes les versions en cours dans les tiers et on compare avec celles de la banque
# Trouver un moyen de sauvegarder le fait qu'une maj ait été refusée.
tiers = Utils.get_contenus_tiers(auteur)
for (id, version) in tiers:
versionCourante = Utils.get_version_courante(id["contenu"])
if version["version"] < versionCourante:
if not Utils.is_maj_refusee(auteur, id["contenu"], versionCourante):
print("Contenu : ", id["contenu"], " version actuelle : ", version["version"], "version maj : ",
versionCourante)
print("Mise à jour possible")
print("Voulez vous la faire (O / N)")
choix = input()
if choix == 'O':
Utils.maj_tiers(id["contenu"], versionCourante, auteur)
print("Mise à jour effectuée")
else:
Utils.maj_tiers(id["contenu"], versionCourante, auteur, True)
print("Mise à jour refusée")
## mettre à jour un favori
# @param idContenu l'id du favori
# @param versionContenu la version du favori
......@@ -674,11 +659,10 @@ class Utils:
# @param versionMaj la version de la mise à jour potentielle
@staticmethod
def is_maj_refusee(auteur, idContenu, versionMaj):
print("print")
compteur = Utils.statdb.utilisateur.find({"nom": auteur} and
{"majRejetees": {"$elemMatch": {"$elemMatch": {"contenu": idContenu,
"version": versionMaj}}}}).count() != 0
print("Compteur : ", compteur)
#print("Compteur : ", compteur)
return compteur
## Fonction globale de gestion de la recherche sur contenu
......@@ -771,3 +755,9 @@ class Utils:
@staticmethod
def get_auteur_demande_publication(idPub):
return Utils.statdb.demandesPub.find_one({"id": idPub})["auteurDemande"]
## Fonction qui permet de savoir si un contenu en cours à fait l'objet d'une demande de publication
# @param idEnCours l'id du contenu en cours
@staticmethod
def is_en_cours_demande(idEnCours, auteur):
return Utils.statdb.demandesPub.find({"id": idEnCours} and {"auteurDemande": auteur}).count() != 0
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