Commit 248a1674 authored by Jérémie Passerat's avatar Jérémie Passerat

Correction erreur menu maj et mise en place de la 'duplication' de fichier pour la consultation

parent b7c07746
...@@ -30,5 +30,9 @@ from Utils import Utils ...@@ -30,5 +30,9 @@ from Utils import Utils
# 4. Lancer Main.py, soit directement à la main, soit via un IDE configuré pour ça (environnement virtual utilisable) \n # 4. Lancer Main.py, soit directement à la main, soit via un IDE configuré pour ça (environnement virtual utilisable) \n
Menu() Menu()
# Utils.initialiseMongo()
# Utils.getContenuFichiers() # Utils.initialise_mongo()
# Utils.tout_peter()
# Utils.creer_auteur_si_besoin()
# Utils.ajouter_contenu("Contenu1", "Auteur 1")
# Utils.detruire_fichier_tmp(1, "Auteur 1")
...@@ -16,9 +16,9 @@ class Menu: ...@@ -16,9 +16,9 @@ class Menu:
def __init__(self): def __init__(self):
# obligatoire à faire au début # obligatoire à faire au début
Utils.initialiseMongo() Utils.initialise_mongo()
# si les auteurs n'existent pas on les créée # si les auteurs n'existent pas on les créée
Utils.creerAuteurSiBesoin() Utils.creer_auteur_si_besoin()
self.menu_de_base() self.menu_de_base()
## 1er menu affiché et proposé à l'utilisateur ## 1er menu affiché et proposé à l'utilisateur
...@@ -35,13 +35,13 @@ class Menu: ...@@ -35,13 +35,13 @@ class Menu:
choix = (input()) choix = (input())
if choix == 'p': if choix == 'p':
Utils.toutPeter() Utils.tout_peter()
self.menu_de_base() self.menu_de_base()
if choix.isdigit(): if choix.isdigit():
auteur = Utils.switchAuteur(int(choix)) auteur = Utils.switch_auteur(int(choix))
if auteur != "Auteur inconnu": if auteur != "Auteur inconnu":
if Utils.presenceUtilisateur(auteur): if Utils.presence_utilisateur(auteur):
self.auteur_en_cours = auteur self.auteur_en_cours = auteur
self.menu_des_actions() self.menu_des_actions()
else: else:
...@@ -98,7 +98,7 @@ class Menu: ...@@ -98,7 +98,7 @@ class Menu:
os.system('clear') os.system('clear')
print("Bonjour ", self.auteur_en_cours) print("Bonjour ", self.auteur_en_cours)
print("Menu des contenus personnels :") print("Menu des contenus personnels :")
questions = Utils.consulterContenu(self.auteur_en_cours, True) questions = Utils.get_contenus(self.auteur_en_cours, True)
print(f"Voici les contenus que vous avez {str(questions.count())} : ") print(f"Voici les contenus que vous avez {str(questions.count())} : ")
print("Actions disponibles : ") print("Actions disponibles : ")
print("n : Ajouter un contenu") print("n : Ajouter un contenu")
...@@ -106,7 +106,7 @@ class Menu: ...@@ -106,7 +106,7 @@ class Menu:
if questions.count() > 0: if questions.count() > 0:
self.afficher_contenus(questions) self.afficher_contenus(questions)
print("c : consulter le détail d'un contenu") print("c : consulter le détail d'un contenu")
print("m : modifier un contenu") #print("m : modifier un contenu")
print("s : supprimer un contenu") print("s : supprimer un contenu")
print("Pour manipuler un contenu, Saisir le numero du contenu puis l'action désirée (par ex : 1c)") print("Pour manipuler un contenu, Saisir le numero du contenu puis l'action désirée (par ex : 1c)")
...@@ -122,7 +122,7 @@ class Menu: ...@@ -122,7 +122,7 @@ class Menu:
if choix == 'q': if choix == 'q':
self.menu_contenus_personnels() self.menu_contenus_personnels()
elif choix.isdigit() and 1 <= int(choix) <= 2: elif choix.isdigit() and 1 <= int(choix) <= 2:
Utils.ajouterContenu("Contenu" + str(choix), self.auteur_en_cours) Utils.ajouter_contenu("Contenu" + str(choix), self.auteur_en_cours)
print("Le contenu ", choix, " a été ajouté dans vos contenus personnels") print("Le contenu ", choix, " a été ajouté dans vos contenus personnels")
sleep(1) sleep(1)
self.menu_contenus_personnels() self.menu_contenus_personnels()
...@@ -136,18 +136,34 @@ class Menu: ...@@ -136,18 +136,34 @@ class Menu:
id = int(choix[:len(choix) - 1]) id = int(choix[:len(choix) - 1])
action = choix[len(choix) - 1:] action = choix[len(choix) - 1:]
if action == 'c': if action == 'c':
print("Voici le contenu de votre contenu n°", id) os.system('clear')
Utils.affichage(Utils.getCheminDuContenu(id)) print("Bonjour ", self.auteur_en_cours)
print("Voici le détail de votre contenu n°", id)
print("Appuyer sur q pour revenir en arrière : ") Utils.consulter_un_contenu(id, self.auteur_en_cours)
input() #Utils.affichage(Utils.get_chemin_du_contenu(id))
self.menu_contenus_personnels()
elif action == 'm': print("Appuyez sur m pour modifier le fichier ou sur q pour quitter")
self.modifierContenu(id) choix = input()
print("Modification ouverte sur ce contenu") if choix == 'q':
print("Appuyer sur q pour revenir en arrière : ") Utils.detruire_fichier_tmp(id, self.auteur_en_cours)
input() self.menu_contenus_personnels()
self.menu_contenus_en_cours() elif choix == 'm':
self.modifier_contenu(id)
print("Modification ouverte sur ce contenu")
print("Appuyer sur q pour revenir en arrière : ")
input()
self.menu_contenus_en_cours()
else:
print("Choix non disponible, appuyer sur q pour revenir en arrière : ")
input()
self.menu_contenus_personnels()
# elif action == 'm':
# self.modifier_contenu(id)
# print("Modification ouverte sur ce contenu")
# print("Appuyer sur q pour revenir en arrière : ")
# input()
# self.menu_contenus_en_cours()
elif action == 's': elif action == 's':
if Utils.existe_en_tiers(id): if Utils.existe_en_tiers(id):
Utils.renier_contenu(id) Utils.renier_contenu(id)
...@@ -171,13 +187,13 @@ class Menu: ...@@ -171,13 +187,13 @@ class Menu:
print("nom :", elt["fichier"], " - v", elt["versionEnCours"]["numero"], " - du", print("nom :", elt["fichier"], " - v", elt["versionEnCours"]["numero"], " - du",
elt["versionEnCours"]["date"]) elt["versionEnCours"]["date"])
def modifierContenu(self, id_contenu): def modifier_contenu(self, id_contenu):
os.system('clear') os.system('clear')
print("Bonjour ", self.auteur_en_cours) print("Bonjour ", self.auteur_en_cours)
print("Vous avez choisi de modifier le contenu ", id_contenu) print("Vous avez choisi de modifier le contenu ", id_contenu)
Utils.modifierContenu(id_contenu, self.auteur_en_cours) Utils.modifier_contenu(id_contenu, self.auteur_en_cours)
print( print(
"Un contenu en cours a été créé, appuyer sur c pour accéder aux contenus en cours ou q pour revenir au menu des actions") "Un contenu en cours a été créé, appuyer sur c pour accéder aux contenus en cours ou q pour revenir au menu des actions")
choix = input() choix = input()
...@@ -199,11 +215,10 @@ class Menu: ...@@ -199,11 +215,10 @@ class Menu:
if len(Utils.get_contenus_tiers(self.auteur_en_cours)): if len(Utils.get_contenus_tiers(self.auteur_en_cours)):
for (id, version) in Utils.get_contenus_tiers(self.auteur_en_cours): for (id, version) in Utils.get_contenus_tiers(self.auteur_en_cours):
self.afficher_contenus_tiers( self.afficher_contenus_tiers(
Utils.getContenuavecIdEtVersion(int(id['contenu']), int(version['version'])), Utils.get_contenu_avec_id_et_version(int(id['contenu']), int(version['version'])),
int(version['version'])) int(version['version']))
print("c : consulter le détail d'un tiers") print("c : consulter le détail d'un tiers")
print("m : modifier un tiers")
print("s : supprimer un tiers") print("s : supprimer un tiers")
print("Pour manipuler un contenu, Saisir le numero du contenu puis l'action désirée (par ex : 1c)") print("Pour manipuler un contenu, Saisir le numero du contenu puis l'action désirée (par ex : 1c)")
choix = input() choix = input()
...@@ -213,21 +228,32 @@ class Menu: ...@@ -213,21 +228,32 @@ class Menu:
id = int(choix[:len(choix) - 1]) id = int(choix[:len(choix) - 1])
action = choix[len(choix) - 1:] action = choix[len(choix) - 1:]
if action == 'c': if action == 'c':
print("Voici le contenu de votre contenu n°", id) os.system('clear')
Utils.affichage(Utils.getCheminDuContenu(id)) print("Bonjour ", self.auteur_en_cours)
version_tiers = Utils.get_version_tiers_avec_id(id, self.auteur_en_cours)
print("Appuyer sur q pour revenir en arrière : ") print("Voici le détail de votre tiers n°", id, "dans sa version ", version_tiers)
input() Utils.changer_version(id, version_tiers)
self.menu_contenus_tiers() Utils.consulter_un_contenu(id, self.auteur_en_cours)
elif action == 'm': # Utils.affichage(Utils.get_chemin_du_contenu(id))
self.modifierContenu(id)
print("Modification ouverte sur ce tiers") print("Appuyez sur m pour modifier le fichier ou sur q pour quitter")
print("Appuyer sur q pour revenir en arrière : ") choix = input()
input() if choix == 'q':
self.menu_contenus_en_cours() Utils.detruire_fichier_tmp(id, self.auteur_en_cours)
self.menu_contenus_personnels()
elif choix == 'm':
self.modifier_contenu(id)
print("Modification ouverte sur ce tiers")
print("Appuyer sur q pour revenir en arrière : ")
input()
self.menu_contenus_en_cours()
else:
print("Choix non disponible, appuyer sur q pour revenir en arrière : ")
input()
self.menu_contenus_personnels()
elif action == 's': elif action == 's':
Utils.supprimer_tiers(id, self.auteur_en_cours, Utils.supprimer_tiers(id, self.auteur_en_cours,
Utils.getVersionFavoriById(id, self.auteur_en_cours)) Utils.get_version_tiers_avec_id(id, self.auteur_en_cours))
print("Contenu Tiers supprimé") print("Contenu Tiers supprimé")
print("Appuyer sur q pour revenir en arrière : ") print("Appuyer sur q pour revenir en arrière : ")
input() input()
...@@ -273,36 +299,40 @@ class Menu: ...@@ -273,36 +299,40 @@ class Menu:
id = int(choix[:len(choix) - 1]) id = int(choix[:len(choix) - 1])
action = choix[len(choix) - 1:] action = choix[len(choix) - 1:]
if action == 'c': if action == 'c':
Utils.changerVersion(id, 0, Utils.getBrancheContenuEnCours(id)) Utils.changer_version(id, 0, Utils.get_branche_contenu_en_cours(id))
Utils.affichage(Utils.getCheminDuContenu(id)) Utils.consulter_un_contenu(id, self.auteur_en_cours)
print("Appuyer sur q pour revenir en arrière : ") print("Appuyez sur m pour modifier le fichier ou sur q pour quitter")
input() choix = input()
self.menu_contenus_en_cours() if choix == 'q':
elif action == 'm': self.menu_contenus_en_cours()
Utils.changerVersion(id, 0, Utils.getBrancheContenuEnCours(id)) elif choix == 'm':
Utils.modifierContenu(id, self.auteur_en_cours, True) Utils.modifier_contenu(id, self.auteur_en_cours, True)
Utils.affichage(Utils.getCheminDuContenu(id)) print("Appuyer sur q pour revenir en arrière : ")
print("Appuyer sur q pour revenir en arrière : ") input()
input() self.menu_contenus_en_cours()
self.menu_contenus_en_cours() else:
print("Action inconnue, Appuyer sur q pour revenir en arrière : ")
input()
self.menu_contenus_en_cours()
elif action == 's': elif action == 's':
Utils.supprimerContenuEnCours(int(id)) Utils.supprimer_contenu_en_cours(int(id))
print("Appuyer sur q pour revenir en arrière : ") print("Appuyer sur q pour revenir en arrière : ")
input() input()
self.menu_contenus_en_cours() self.menu_contenus_en_cours()
elif action == 'v': elif action == 'v':
self.valider_modification(int(id)) self.valider_modification(int(id))
Utils.supprimerContenuEnCours(int(id)) Utils.supprimer_contenu_en_cours(int(id))
print ("La demande de validation du contenu a été effectuée")
print("Appuyer sur q pour revenir en arrière : ") print("Appuyer sur q pour revenir en arrière : ")
input() input()
self.menu_contenus_en_cours() self.menu_contenus_en_cours()
elif action == 'n': elif action == 'n':
print ("Is favori :", Utils.is_favori_auteur(self.auteur_en_cours, id)) print ("Is favori :", Utils.is_tiers_auteur(self.auteur_en_cours, id))
if not Utils.is_favori_auteur(self.auteur_en_cours, id): if not Utils.is_tiers_auteur(self.auteur_en_cours, id):
contenu_associe = Utils.getIdContenuAssocieAUnEnCours(int(id)) contenu_associe = Utils.get_id_contenu_associe_a_un_en_cours(int(id))
chemin = Utils.getCheminDuContenu(contenu_associe) chemin = Utils.get_chemin_du_contenu(contenu_associe)
Utils.creerNouveauContenu(chemin, Utils.creer_nouveau_contenu(chemin,
self.auteur_en_cours, id) self.auteur_en_cours, id)
else: else:
print("Vous n'avez pas le droit de faire directement cette action sur un contenu tiers") print("Vous n'avez pas le droit de faire directement cette action sur un contenu tiers")
print("Appuyer sur q pour revenir en arrière : ") print("Appuyer sur q pour revenir en arrière : ")
...@@ -328,7 +358,7 @@ class Menu: ...@@ -328,7 +358,7 @@ class Menu:
print("Bonjour ", self.auteur_en_cours) print("Bonjour ", self.auteur_en_cours)
print( print(
f"Il y a {len(Utils.get_contenus_tiers(self.auteur_en_cours))} contenus présents en banque (excepteption des votres): ") f"Il y a {len(Utils.get_contenus_tiers(self.auteur_en_cours))} contenus présents en banque (excepteption des votres): ")
questions = Utils.consulterContenu(self.auteur_en_cours, False) questions = Utils.get_contenus(self.auteur_en_cours, False)
print("La banque possède actuellement", questions.count(), " contenu(s)") print("La banque possède actuellement", questions.count(), " contenu(s)")
print("Actions disponibles : ") print("Actions disponibles : ")
print("q : revenir au menu des actions") print("q : revenir au menu des actions")
...@@ -346,10 +376,11 @@ class Menu: ...@@ -346,10 +376,11 @@ class Menu:
id = int(choix[:len(choix) - 1]) id = int(choix[:len(choix) - 1])
action = choix[len(choix) - 1:] action = choix[len(choix) - 1:]
if action == 'c': if action == 'c':
Utils.changerVersion(id, 0, Utils.getBrancheContenuEnCours(id)) Utils.changer_version(id, 0, Utils.get_branche_contenu_en_cours(id))
Utils.affichage(Utils.getCheminDuContenu(id)) Utils.consulter_un_contenu(id, self.auteur_en_cours)
print("Appuyer sur q pour revenir en arrière : ") print("Appuyer sur q pour revenir en arrière : ")
input() input()
Utils.detruire_fichier_tmp(id, self.auteur_en_cours)
self.menu_contenus_banque() self.menu_contenus_banque()
elif action == 't': elif action == 't':
Utils.mettre_contenu_en_tiers(id, self.auteur_en_cours) Utils.mettre_contenu_en_tiers(id, self.auteur_en_cours)
...@@ -372,16 +403,16 @@ class Menu: ...@@ -372,16 +403,16 @@ class Menu:
def valider_modification(self, idContenuEnCours): def valider_modification(self, idContenuEnCours):
# on récupère l'auteur et l'id du contenu "de base" associé à la modif # on récupère l'auteur et l'id du contenu "de base" associé à la modif
auteur = Utils.getAuteurContenuEnCours(idContenuEnCours) auteur = Utils.get_auteur_contenu_en_cours(idContenuEnCours)
idContenu = Utils.getIdContenuAssocieAUnEnCours(idContenuEnCours) idContenu = Utils.get_id_contenu_associe_a_un_en_cours(idContenuEnCours)
branche = Utils.getBrancheContenuEnCours(idContenuEnCours) branche = Utils.get_branche_contenu_en_cours(idContenuEnCours)
if auteur == self.auteur_en_cours: if auteur == self.auteur_en_cours:
chemin = Utils.getCheminDuContenu(idContenu) chemin = Utils.get_chemin_du_contenu(idContenu)
Utils.majContenu(chemin, idContenu, branche) Utils.maj_contenu(chemin, idContenu, branche)
else: else:
Utils.demandePublication(idContenu, idContenuEnCours, self.auteur_en_cours, auteur) Utils.demande_publication(idContenu, idContenuEnCours, self.auteur_en_cours, auteur)
## Fonction globale de gestion des évaluations ## Fonction globale de gestion des évaluations
def gestion_des_evaluations(self): def gestion_des_evaluations(self):
...@@ -417,7 +448,7 @@ class Menu: ...@@ -417,7 +448,7 @@ class Menu:
input() input()
self.gestion_des_evaluations() self.gestion_des_evaluations()
elif action == 's': elif action == 's':
Utils.supprimerEvaluation(id) Utils.supprimer_evaluation(id)
print("Evaluation supprimée") print("Evaluation supprimée")
print("Appuyer sur q pour revenir en arrière : ") print("Appuyer sur q pour revenir en arrière : ")
input() input()
...@@ -439,10 +470,10 @@ class Menu: ...@@ -439,10 +470,10 @@ class Menu:
print("Bonjour ", self.auteur_en_cours) print("Bonjour ", self.auteur_en_cours)
# on charge tous les contenus présents # on charge tous les contenus présents
questions = Utils.consulterTousLesContenu() questions = Utils.get_tous_les_contenus()
if questions.count() > 0: if questions.count() > 0:
self.afficher_contenus_banque(questions) self.afficher_contenus_banque(questions)
print("Nombre de contenus à ajouter : (entre 1 et ", Utils.getMaxIdContenus(), print("Nombre de contenus à ajouter : (entre 1 et ", Utils.get_max_id_contenus(),
"), q pour revenir en arrière") "), q pour revenir en arrière")
choix = (input()) choix = (input())
questions = list() questions = list()
...@@ -454,7 +485,7 @@ class Menu: ...@@ -454,7 +485,7 @@ class Menu:
for i in range(int(choix)): for i in range(int(choix)):
print("Contenu ", i + 1, ", donner l'id du contenu :") print("Contenu ", i + 1, ", donner l'id du contenu :")
questions.append(int(input())) questions.append(int(input()))
Utils.creerEvaluation(questions, self.auteur_en_cours) Utils.creer_evaluation(questions, self.auteur_en_cours)
## Fonction de gestion des mises à jour ## Fonction de gestion des mises à jour
def menu_de_maj(self): def menu_de_maj(self):
...@@ -468,6 +499,7 @@ class Menu: ...@@ -468,6 +499,7 @@ class Menu:
if choix == 'q': if choix == 'q':
self.menu_des_actions() self.menu_des_actions()
if choix == 'd': if choix == 'd':
os.system('clear')
print("Vous aurez, ici, les maj possibles de contenu perso et de contenu tiers") print("Vous aurez, ici, les maj possibles de contenu perso et de contenu tiers")
print("Actions disponibles : ") print("Actions disponibles : ")
print("q : revenir au menu des mises à jour") print("q : revenir au menu des mises à jour")
...@@ -478,50 +510,60 @@ class Menu: ...@@ -478,50 +510,60 @@ class Menu:
self.menu_de_maj() self.menu_de_maj()
elif choix == 'p': elif choix == 'p':
# mise à jour de contenus personnels # mise à jour de contenus personnels
publications = Utils.getDemandesPub(self.auteur_en_cours, False) os.system('clear')
for pub in publications: publications = Utils.get_demandes_pub(self.auteur_en_cours, False)
etat = pub["etat"] print ("Vous avez ", publications.count(), "mises à jour disponibles")
# pour raison de simplicité, les demandes de publication refusées sont invisibles (dans un futur proche elle seront visibles mais non interactives) if publications.count() > 0:
if etat != "refus": for pub in publications:
print("Auteur qui fait la demande : ", pub["auteurDemande"], "idDemandePublication : ", etat = pub["etat"]
pub["id"], "date : ", pub["date"]) # pour raison de simplicité, les demandes de publication refusées sont invisibles (dans un futur proche elle seront visibles mais non interactives)
print("Actions possibles : ") if etat != "refus":
print("c : consulter la demande de publication") print("Auteur qui fait la demande : ", pub["auteurDemande"], "idDemandePublication : ",
print("o : accepter la demande de publication") pub["id"], "date : ", pub["date"])
print("n : refuser la demande de publication") print("Actions possibles : ")
print("q : revenir en arriere") print("c : consulter la demande de publication")
print("Entrer l'id du contenu, puis une lettre d'action (ou directement q pour quitter)") print("o : accepter la demande de publication")
print("n : refuser la demande de publication")
choix = (input()) print("q : revenir en arriere")
if choix == 'q': print("Entrer l'id du contenu, puis une lettre d'action (ou directement q pour quitter)")
self.menu_de_maj()
elif len(choix) > 1: choix = (input())
id = int(choix[:len(choix) - 1]) if choix == 'q':
action = choix[len(choix) - 1:]
if action == 'o' or action == 'n':
id = choix[0:len(choix) - 1]
choix = choix[len(choix) - 1:]
Utils.gererDemandePub(id, action)
if choix == 'o':
decision = "acceptée"
else:
decision = "refusée"
print("La publication a été", decision)
print("Appuyer sur q pour revenir en arrière : ")
input()
self.menu_de_maj()
elif action == 'c':
Utils.changerVersion(id, 0, Utils.getBrancheContenuEnCours(id))
print("Voici le contenu associé à la demande de publication : ")
Utils.affichage(Utils.getCheminDuContenu(Utils.getIdContenuAssocieAUnEnCours(id)))
print("Appuyer sur q pour revenir en arrière : ")
input()
self.menu_de_maj()
else:
print("Action inconnue, Appuyer sur q pour revenir en arrière : ")
input()
self.menu_de_maj() self.menu_de_maj()
elif len(choix) > 1:
id = int(choix[:len(choix) - 1])
action = choix[len(choix) - 1:]
if action == 'o' or action == 'n':
id = choix[0:len(choix) - 1]
choix = choix[len(choix) - 1:]
Utils.gerer_demande_pub(id, action)
if choix == 'o':
decision = "acceptée"
else:
decision = "refusée"
print("La publication a été", decision)
print("Appuyer sur q pour revenir en arrière : ")
input()
self.menu_de_maj()
elif action == 'c':
Utils.changer_version(id, 0, Utils.get_branche_contenu_en_cours(id))
print("Voici le contenu associé à la demande de publication : ")
branche_contenu_en_cours = Utils.get_branche_contenu_en_cours(id)
Utils.changer_version(Utils.get_id_contenu_associe_a_un_en_cours(id), 0, branche_contenu_en_cours)
Utils.consulter_un_contenu(id, self.auteur_en_cours)
print("Appuyer sur q pour revenir en arrière : ")
input()
Utils.detruire_fichier_tmp(id, self.auteur_en_cours)
self.menu_de_maj()
else:
print("Action inconnue, Appuyer sur q pour revenir en arrière : ")
input()
self.menu_de_maj()
else:
print("Appuyer sur q pour revenir en arrière : ")
input()
self.menu_de_maj()
elif choix == 't': elif choix == 't':
# mise à jour de contenus favoris # mise à jour de contenus favoris
...@@ -532,9 +574,10 @@ class Menu: ...@@ -532,9 +574,10 @@ class Menu:
nbre_favoris = len(Utils.get_contenus_tiers(self.auteur_en_cours)) nbre_favoris = len(Utils.get_contenus_tiers(self.auteur_en_cours))
print("L'auteur possède ", nbre_favoris, " favoris") print("L'auteur possède ", nbre_favoris, " favoris")
if nbre_favoris > 0: if nbre_favoris > 0:
Utils.listeMajFavoris(self.auteur_en_cours) Utils.liste_maj_tiers(self.auteur_en_cours)
print("Appuyez sur q pour revenir en arriere")
print("Vous n'avez aucun favori, appuyez sur q pour revenir en arriere") else :
print("Vous n'avez aucun favori possédant une mise à jour, appuyez sur q pour revenir en arriere")
input() input()
self.menu_de_maj() self.menu_de_maj()
...@@ -544,8 +587,9 @@ class Menu: ...@@ -544,8 +587,9 @@ class Menu:
self.menu_de_maj() self.menu_de_maj()
if choix == 'p': if choix == 'p':
print("Vous aurez, ici, les suites des demandes de publication des en_cours") os.system('clear')
publications = Utils.getDemandesPub(self.auteur_en_cours, True) publications = Utils.get_demandes_pub(self.auteur_en_cours, True)
print("Vous avez", publications.count(), " demandes de publication en cours")
for pub in publications: for pub in publications:
id_pub = pub["id"] id_pub = pub["id"]
print("auteur d'origine :", pub["auteurContenu"], "idDemandePublication : ", pub["id"], "date : ", print("auteur d'origine :", pub["auteurContenu"], "idDemandePublication : ", pub["id"], "date : ",
...@@ -558,20 +602,20 @@ class Menu: ...@@ -558,20 +602,20 @@ class Menu:
print("q : remettre ce choix à plus tard") print("q : remettre ce choix à plus tard")
choix = input() choix = input()
if choix == 'n': if choix == 'n':
id_en_cours = Utils.getIdContenuEnCoursAssocieAUnePublication(id_pub) id_en_cours = Utils.get_id_contenu_en_cours_associe_a_une_publication(id_pub)
contenu_associe = Utils.getIdContenuAssocieAUnEnCours(id_en_cours) contenu_associe = Utils.get_id_contenu_associe_a_un_en_cours(id_en_cours)
chemin = Utils.getCheminDuContenu(contenu_associe) chemin = Utils.get_chemin_du_contenu(contenu_associe)
Utils.creerNouveauContenu(chemin, Utils.creer_nouveau_contenu(chemin,
self.auteur_en_cours, id_pub) self.auteur_en_cours, id_pub)
if Utils.is_favori_auteur(self.auteur_en_cours, contenu_associe): if Utils.is_tiers_auteur(self.auteur_en_cours, contenu_associe):
versionFavori = Utils.getVersionFavoriById(contenu_associe, self.auteur_en_cours) versionFavori = Utils.get_version_tiers_avec_id(contenu_associe, self.auteur_en_cours)
Utils.supprimer_tiers(contenu_associe, self.auteur_en_cours, versionFavori) Utils.supprimer_tiers(contenu_associe, self.auteur_en_cours, versionFavori)
print("Vous venez de créer un nouveau contenu") print("Vous venez de créer un nouveau contenu")
sleep(2) sleep(2)
self.menu_contenus_personnels() self.menu_contenus_personnels()
elif choix == 's': elif choix == 's':
Utils.supprimerContenuEnCours(Utils.getIdContenuEnCoursAssocieAUnePublication(pub["id"])) Utils.supprimer_contenu_en_cours(Utils.get_id_contenu_en_cours_associe_a_une_publication(pub["id"]))
elif choix == 'q': elif choix == 'q':
self.menu_de_maj() self.menu_de_maj()
print("Appuyer sur q pour revenir en arrière : ") print("Appuyer sur q pour revenir en arrière : ")
......
...@@ -25,7 +25,7 @@ class Utils: ...@@ -25,7 +25,7 @@ class Utils:
## Filtrage de la saisie utilisateur pour le choix d'un auteur ## Filtrage de la saisie utilisateur pour le choix d'un auteur
# @param Le numéro d'auteur choisi # @param Le numéro d'auteur choisi
@staticmethod @staticmethod
def switchAuteur(argument): def switch_auteur(argument):
switcher = { switcher = {
1: "Auteur 1", 1: "Auteur 1",
2: "Auteur 2", 2: "Auteur 2",
...@@ -40,7 +40,7 @@ class Utils: ...@@ -40,7 +40,7 @@ class Utils:
# maj -> update_one, update_many and replace_one # maj -> update_one, update_many and replace_one
# suppression -> delete_one and delete_many # suppression -> delete_one and delete_many
@staticmethod @staticmethod
def initialiseMongo(): def initialise_mongo():
client = MongoClient('localhost', 27017) client = MongoClient('localhost', 27017)
## extraction d'une base de données. Si elle n'existe pas, elle esst créée ## extraction d'une base de données. Si elle n'existe pas, elle esst créée
...@@ -49,15 +49,15 @@ class Utils: ...@@ -49,15 +49,15 @@ class Utils:
## Création d'utilisateur ## Création d'utilisateur
# @param nomUtilisateur Le nom de l'utilisateur # @param nomUtilisateur Le nom de l'utilisateur
@staticmethod @staticmethod
def ajouterUtilisateur(nomUtilisateur): def ajouter_utilisateur(nomUtilisateur):
Utils.statdb.utilisateur.insert_one( Utils.statdb.utilisateur.insert_one(
{"nom": nomUtilisateur, "note": randrange(0, 10, 1), "favoris": []}) {"nom": nomUtilisateur, "note": randrange(0, 10, 1), "tiers": []})
## Vérification de la présence d'un utilisateur en base ## Vérification de la présence d'un utilisateur en base
# @param nomUtilisateurLe nom de l'utilisateur # @param nomUtilisateurLe nom de l'utilisateur
# @return True si Utilisateur présent, False sinon # @return True si Utilisateur présent, False sinon
@staticmethod @staticmethod
def presenceUtilisateur(nomUtilisateur): def presence_utilisateur(nomUtilisateur):
# print("Je suis dans présence utilisateur pour ", nomUtilisateur) # print("Je suis dans présence utilisateur pour ", nomUtilisateur)
nmbre = Utils.statdb.utilisateur.find({"nom": nomUtilisateur}) nmbre = Utils.statdb.utilisateur.find({"nom": nomUtilisateur})
# print("Et j'en ai trouvé : ", nmbre.count()) # print("Et j'en ai trouvé : ", nmbre.count())
...@@ -68,9 +68,9 @@ class Utils: ...@@ -68,9 +68,9 @@ class Utils:
# @param nomFichier le nom du fichier importé # @param nomFichier le nom du fichier importé
# @param auteur l'auteur qui importe le fichier # @param auteur l'auteur qui importe le fichier
@staticmethod @staticmethod
def ajouterContenu(nomFichier, auteur): def ajouter_contenu(nomFichier, auteur):
max_id = Utils.getMaxIdContenus() max_id = Utils.get_max_id_contenus()
if max_id is None: if max_id is None:
max_id = 0 max_id = 0
...@@ -91,7 +91,7 @@ class Utils: ...@@ -91,7 +91,7 @@ class Utils:
"versionEnCours": {"numero": 1, "date": datetime.now().strftime("%d/%m/%y"), "versionEnCours": {"numero": 1, "date": datetime.now().strftime("%d/%m/%y"),
"popularite": 0, "commit": commit}, "popularite": 0, "commit": commit},
"tags_banque_fixes": ["tag1", "tag2", "tag3", "tag4", "tag5"], "tags_banque_fixes": ["tag1", "tag2", "tag3", "tag4", "tag5"],
"tags_banque_libres": ["tagl1", "tagl2", "tagl3", "tagl4", "tagl5"]}) "tags_banque_libres": ["tagl1", "tagl2", "tagl3", "tagl4", "tagl5"], "type": " ", "source": " "})
print("Le contenu a bien été ajouté pour l'utilisateur ", auteur) print("Le contenu a bien été ajouté pour l'utilisateur ", auteur)
...@@ -102,7 +102,7 @@ class Utils: ...@@ -102,7 +102,7 @@ class Utils:
# @return les contenus de l'auteur ou tous les autres # @return les contenus de l'auteur ou tous les autres
@staticmethod @staticmethod
def consulterContenu(auteur, panier=False): def get_contenus(auteur, panier=False):
if panier: if panier:
return Utils.statdb.contenu.find({"auteur": auteur}) return Utils.statdb.contenu.find({"auteur": auteur})
else: else:
...@@ -114,7 +114,7 @@ class Utils: ...@@ -114,7 +114,7 @@ class Utils:
# @return tous les contenus présents # @return tous les contenus présents
@staticmethod @staticmethod
def consulterTousLesContenu(): def get_tous_les_contenus():
return Utils.statdb.contenu.find() return Utils.statdb.contenu.find()
## Suppression d'un contenu (dissociation avec son auteur) ## Suppression d'un contenu (dissociation avec son auteur)
...@@ -139,7 +139,8 @@ class Utils: ...@@ -139,7 +139,8 @@ class Utils:
def mettre_contenu_en_tiers(idContenu, auteur): def mettre_contenu_en_tiers(idContenu, auteur):
# print("Le contenu est dans la version ", Utils.getVersionContenuavecId(idContenu)) # print("Le contenu est dans la version ", Utils.getVersionContenuavecId(idContenu))
Utils.statdb.utilisateur.update({"nom": auteur}, { Utils.statdb.utilisateur.update({"nom": auteur}, {
"$push": {"favoris": [{"contenu": int(idContenu)}, {"version": Utils.getVersionContenuavecId(idContenu)}]}}) "$push": {
"tiers": [{"contenu": int(idContenu)}, {"version": Utils.get_version_contenu_avec_id(idContenu)}]}})
## Permet de dissocier un contenu du panier d'un auteur tiers ## Permet de dissocier un contenu du panier d'un auteur tiers
# Si cet auteur était le seul à posséder une question "anonyme", elle est supprimée # Si cet auteur était le seul à posséder une question "anonyme", elle est supprimée
...@@ -147,12 +148,12 @@ class Utils: ...@@ -147,12 +148,12 @@ class Utils:
@staticmethod @staticmethod
def supprimer_tiers(idContenu, auteur, version): def supprimer_tiers(idContenu, auteur, version):
Utils.statdb.utilisateur.update({"nom": auteur}, Utils.statdb.utilisateur.update({"nom": auteur},
{"$pull": {"favoris": [{"contenu": idContenu}, {"version": version}]}}) {"$pull": {"tiers": [{"contenu": idContenu}, {"version": version}]}})
## Permet de savoir si un contenu possède un auteur légitime ## Permet de savoir si un contenu possède un auteur légitime
# @param idContenu l'identifiant du contenu # @param idContenu l'identifiant du contenu
@staticmethod @staticmethod
def isAnonyme(idContenu): 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" return Utils.statdb.contenu.find_one({"id": idContenu})["auteur"] == "Aucun"
...@@ -162,10 +163,10 @@ class Utils: ...@@ -162,10 +163,10 @@ class Utils:
# @return Le contenu lié à l'id # @return Le contenu lié à l'id
@staticmethod @staticmethod
def getContenuavecIdEtVersion(idContenu, version): def get_contenu_avec_id_et_version(idContenu, version):
# a décommenter quand git sera actif # a décommenter quand git sera actif
Utils.changerVersion(idContenu, version, "") Utils.changer_version(idContenu, version, "")
return Utils.statdb.contenu.find_one({"id": idContenu}) return Utils.statdb.contenu.find_one({"id": idContenu})
# return Utils.statdb.contenu.find_one({"$and": [ # return Utils.statdb.contenu.find_one({"$and": [
# {"id": idContenu}, # {"id": idContenu},
...@@ -176,14 +177,14 @@ class Utils: ...@@ -176,14 +177,14 @@ class Utils:
## récupérer la version courante d'un contenu ## récupérer la version courante d'un contenu
# @param idContenu l'id du contenu concerné # @param idContenu l'id du contenu concerné
@staticmethod @staticmethod
def getVersionCourante(idContenu): def get_version_courante(idContenu):
return Utils.statdb.contenu.find_one({"id": idContenu})["versionEnCours"]["numero"] return Utils.statdb.contenu.find_one({"id": idContenu})["versionEnCours"]["numero"]
## Récupérer un contenu à partir de son identifiant ## Récupérer un contenu à partir de son identifiant
# @param idContenu l'id associé au contenu # @param idContenu l'id associé au contenu
# @return Le contenu lié à l'id # @return Le contenu lié à l'id
@staticmethod @staticmethod
def getContenuavecId(idContenu): def get_contenu_avec_Id(idContenu):
# Id unique donc find_one utilisable # Id unique donc find_one utilisable
return Utils.statdb.contenu.find_one({"id": idContenu}) return Utils.statdb.contenu.find_one({"id": idContenu})
...@@ -191,15 +192,15 @@ class Utils: ...@@ -191,15 +192,15 @@ class Utils:
# @param idContenu l'id associé au contenu # @param idContenu l'id associé au contenu
# @return La version en cours du contenu lié à l'id # @return La version en cours du contenu lié à l'id
@staticmethod @staticmethod
def getVersionContenuavecId(idContenu): def get_version_contenu_avec_id(idContenu):
# print("Je veux le contenu : ", int(idContenu)) # print("Je veux le contenu : ", int(idContenu))
return int(Utils.getContenuavecId(int(idContenu))["versionEnCours"]["numero"]) return int(Utils.get_contenu_avec_Id(int(idContenu))["versionEnCours"]["numero"])
## Récupérer l'id maximal (pour les contenus) ## Récupérer l'id maximal (pour les contenus)
# permet de s'assurer que les id de contenu soient uniques # permet de s'assurer que les id de contenu soient uniques
@staticmethod @staticmethod
def getMaxIdContenus(): def get_max_id_contenus():
## 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 = Utils.statdb.contenu.find().sort("id", -1).limit(1) element = Utils.statdb.contenu.find().sort("id", -1).limit(1)
...@@ -211,7 +212,7 @@ class Utils: ...@@ -211,7 +212,7 @@ class Utils:
# permet de s'assurer que les id de contenu soient uniques # permet de s'assurer que les id de contenu soient uniques
@staticmethod @staticmethod
def getMaxIdEvaluations(): def get_max_id_evaluations():
## 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 = Utils.statdb.evaluation.find().sort("idEval", -1).limit(1) element = Utils.statdb.evaluation.find().sort("idEval", -1).limit(1)
...@@ -223,7 +224,7 @@ class Utils: ...@@ -223,7 +224,7 @@ class Utils:
# permet de s'assurer que les id de contenu soient uniques # permet de s'assurer que les id de contenu soient uniques
@staticmethod @staticmethod
def getMaxIdContenusEnCours(): def get_max_id_contenus_en_cours():
## 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 = Utils.statdb.encours.find().sort("idContenuEC", -1).limit(1) element = Utils.statdb.encours.find().sort("idContenuEC", -1).limit(1)
...@@ -235,7 +236,7 @@ class Utils: ...@@ -235,7 +236,7 @@ class Utils:
# permet de s'assurer que les id de demande de publication soient uniques # permet de s'assurer que les id de demande de publication soient uniques
@staticmethod @staticmethod
def getMaxIdDemandesDePublication(): def get_max_id_demandes_de_publication():
## 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 = Utils.statdb.demandesPub.find().sort("id", -1).limit(1) element = Utils.statdb.demandesPub.find().sort("id", -1).limit(1)
...@@ -243,25 +244,23 @@ class Utils: ...@@ -243,25 +244,23 @@ class Utils:
print("id : ", elt) print("id : ", elt)
return int(elt["id"]) return int(elt["id"])
## Récupérer les favoris d'un utilisateur ## Récupérer les tiers d'un utilisateur
# @param auteur le nom de l'utilisateur # @param auteur le nom de l'utilisateur
# @return les favoris de l'utilisateur 'auteur' # @return les tiers de l'utilisateur 'auteur'
@staticmethod @staticmethod
def get_contenus_tiers(auteur): def get_contenus_tiers(auteur):
return Utils.statdb.utilisateur.find_one({"nom": auteur})["favoris"] return Utils.statdb.utilisateur.find_one({"nom": auteur})["tiers"]
## Créer une évaluation ## Créer une évaluation
# @param contenus les numeros des contenus associés à l'évaluation # @param contenus les numeros des contenus associés à l'évaluation
# @auteur l'auteur qui créée l'évaluation # @auteur l'auteur qui créée l'évaluation
@staticmethod @staticmethod
def creerEvaluation(contenus, auteur): def creer_evaluation(contenus, auteur):
# création de l'évaluation # création de l'évaluation
max_id_eval = Utils.getMaxIdEvaluations() max_id_eval = Utils.get_max_id_evaluations()
if max_id_eval is None: if max_id_eval is None:
max_id_eval = 0 max_id_eval = 0
...@@ -277,26 +276,26 @@ class Utils: ...@@ -277,26 +276,26 @@ class Utils:
# @return les évaluations de l'auteur # @return les évaluations de l'auteur
@staticmethod @staticmethod
def get_evaluations(auteur, id = 0): def get_evaluations(auteur, id=0):
if id == 0: if id == 0:
return Utils.statdb.evaluation.find({"auteur": auteur}) return Utils.statdb.evaluation.find({"auteur": auteur})
else: else:
return Utils.statdb.evaluation.find({"auteur": auteur} and {"idEval" : id}) return Utils.statdb.evaluation.find({"auteur": auteur} and {"idEval": id})
## Modifier un contenu ## Modifier un contenu
# @param idContenu contenu à modifier # @param idContenu contenu à modifier
# @param auteur l'utilisateur désirant modifier la question # @param auteur l'utilisateur désirant modifier la question
# @param isEnCours Vrai si modification d'un contenu en cours # @param isEnCours Vrai si modification d'un contenu en cours
@staticmethod @staticmethod
def modifierContenu(idContenu, auteur, enCours=False): def modifier_contenu(idContenu, auteur, enCours=False):
# le chemin du fichier restera tjrs le même # le chemin du fichier restera tjrs le même
contenu = Utils.statdb.contenu.find_one({"id": int(idContenu)}) contenu = Utils.statdb.contenu.find_one({"id": int(idContenu)})
Utils.modification_fichier(Utils.chemin + contenu["fichier"], idContenu, auteur, not enCours)
Utils.modification(Utils.chemin + contenu["fichier"], idContenu, auteur, not enCours)
@staticmethod @staticmethod
## affichage d'un contenu de fichier ## affichage d'un contenu de fichier
# @param chemin le fichier à afficher
def affichage(chemin): def affichage(chemin):
with open(chemin, "r") as fichier: with open(chemin, "r") as fichier:
texte = fichier.read() texte = fichier.read()
...@@ -305,6 +304,29 @@ class Utils: ...@@ -305,6 +304,29 @@ class Utils:
print("Le fichier (v", int(texte[-1]), ") : " + texte) print("Le fichier (v", int(texte[-1]), ") : " + texte)
return texte return texte
@staticmethod
## consulter un contenu
# @param id l'id du contenu à consulter
# @param auteur l'auteur désirant consulter le contenu
def consulter_un_contenu(id, auteur):
# Créer un répertoire au nom de l'auteur (ou l'utiliser si il existe déja)
auteur = auteur.lower().replace(" ", "_")
repertoire_auteur = Utils.chemin + auteur + "/"
Path(repertoire_auteur).mkdir(parents=True, exist_ok=True)
# Copier le fichier lié au contenu dans ce répertoire
chemin = Utils.get_chemin_du_contenu(id)
nom_fichier = chemin[chemin.rfind("/") + 1:]
os.system("cp '" + chemin + "' '" + repertoire_auteur + nom_fichier + "'")
Utils.affichage(chemin)
## détruire un fichier temporaire
@staticmethod
def detruire_fichier_tmp(id, auteur):
auteur = auteur.lower().replace(" ", "_") + "/"
chemin = Utils.get_chemin_du_contenu(id)
nom_fichier = chemin[chemin.rfind("/") + 1:]
os.system("rm '" + Utils.chemin + auteur + nom_fichier + "'")
## modification (directe ici) d'un fichier ## modification (directe ici) d'un fichier
# @param chemin chemin d'acces au contenu # @param chemin chemin d'acces au contenu
# @param id id du contenu # @param id id du contenu
...@@ -312,7 +334,7 @@ class Utils: ...@@ -312,7 +334,7 @@ class Utils:
# @param modifPremiere permet de déterminer si on est sur une premiere modification du contenu ou si on remodifie un contenu en cours # @param modifPremiere permet de déterminer si on est sur une premiere modification du contenu ou si on remodifie un contenu en cours
@staticmethod @staticmethod
def modification(chemin, idContenu, auteur, modifPremiere=True): def modification_fichier(chemin, idContenu, auteur, modifPremiere=True):
print("Le chemin du fichier est : ", chemin) print("Le chemin du fichier est : ", chemin)
...@@ -356,7 +378,7 @@ class Utils: ...@@ -356,7 +378,7 @@ class Utils:
# si on est dans le cas d'une modification 1ere d'un contenu, on l'entre en bd (sinon il y est déja) # si on est dans le cas d'une modification 1ere d'un contenu, on l'entre en bd (sinon il y est déja)
if modifPremiere: if modifPremiere:
max_id_encours = Utils.getMaxIdContenusEnCours() max_id_encours = Utils.get_max_id_contenus_en_cours()
if max_id_encours is None: if max_id_encours is None:
max_id_encours = 0 max_id_encours = 0
Utils.statdb.encours.insert_one( Utils.statdb.encours.insert_one(
...@@ -365,7 +387,7 @@ class Utils: ...@@ -365,7 +387,7 @@ class Utils:
## Mettre à jour un contenu (branche principale) ## Mettre à jour un contenu (branche principale)
@staticmethod @staticmethod
def majContenu(chemin, idContenu, nomBranche): def maj_contenu(chemin, idContenu, nomBranche):
repertoire = chemin[:chemin.rfind("/") + 1] repertoire = chemin[:chemin.rfind("/") + 1]
fin = Utils.affichage(chemin) fin = Utils.affichage(chemin)
...@@ -384,7 +406,7 @@ class Utils: ...@@ -384,7 +406,7 @@ class Utils:
## Supprimer une évaluation (définitif) ## Supprimer une évaluation (définitif)
# @param idEval l'id de l'évaluation à supprimer # @param idEval l'id de l'évaluation à supprimer
@staticmethod @staticmethod
def supprimerEvaluation(idEval): def supprimer_evaluation(idEval):
Utils.statdb.evaluation.delete_one({"idEval": idEval}) Utils.statdb.evaluation.delete_one({"idEval": idEval})
## Fonction pour savoir si un contenu est favori chez qqun ## Fonction pour savoir si un contenu est favori chez qqun
...@@ -392,22 +414,22 @@ class Utils: ...@@ -392,22 +414,22 @@ class Utils:
@staticmethod @staticmethod
def existe_en_tiers(idContenu): def existe_en_tiers(idContenu):
return Utils.statdb.utilisateur.find( return Utils.statdb.utilisateur.find(
{"favoris": {"$elemMatch": {"$elemMatch": {"contenu": idContenu}}}}).count() != 0 {"tiers": {"$elemMatch": {"$elemMatch": {"contenu": idContenu}}}}).count() != 0
## On entre l'id d'un contenu favori pour un auteur, on veut récupérer en sortie la version associée ## On entre l'id d'un contenu favori pour un auteur, on veut récupérer en sortie la version associée
# @param idContenu # @param idContenu
@staticmethod @staticmethod
def getVersionFavoriById(idContenu, auteur): def get_version_tiers_avec_id(idContenu, auteur):
favoris = (Utils.statdb.utilisateur.find_one({"nom": auteur})["favoris"]) tiers = (Utils.statdb.utilisateur.find_one({"nom": auteur})["tiers"])
for i in range(len(favoris)): for i in range(len(tiers)):
fav = favoris[i] tmp = tiers[i]
if int(fav[0]["contenu"]) == idContenu: if int(tmp[0]["contenu"]) == idContenu:
return int(fav[1]["version"]) return int(tmp[1]["version"])
return 0 return 0
## Suppression définitive d'un contenu ## Suppression définitive d'un contenu
@staticmethod @staticmethod
def aneantirContenu(idContenu): def aneantir_contenu(idContenu):
Utils.statdb.contenu.delete_one({"id": idContenu}) Utils.statdb.contenu.delete_one({"id": idContenu})
## permet de récupérer tous les contenus en cours pour un auteur ## permet de récupérer tous les contenus en cours pour un auteur
...@@ -421,17 +443,17 @@ class Utils: ...@@ -421,17 +443,17 @@ class Utils:
# @param idContenuEnCours l'id du contenu en cours de modification # @param idContenuEnCours l'id du contenu en cours de modification
@staticmethod @staticmethod
def getIdContenuAssocieAUnEnCours(idContenuEnCours): 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"] return Utils.statdb.encours.find_one({"idContenuEC": int(idContenuEnCours)})["reference"]
@staticmethod @staticmethod
def getIdContenuAssocieAUnePublication(idDdePublication): def get_id_contenu_associe_a_une_publication(idDdePublication):
# 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.demandesPub.find_one({"id": int(idDdePublication)})["idContenu"] return Utils.statdb.demandesPub.find_one({"id": int(idDdePublication)})["idContenu"]
@staticmethod @staticmethod
def getIdContenuEnCoursAssocieAUnePublication(idDdePublication): 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"] return Utils.statdb.demandesPub.find_one({"id": int(idDdePublication)})["idContenuEnCours"]
...@@ -439,7 +461,7 @@ class Utils: ...@@ -439,7 +461,7 @@ class Utils:
# @param idContenu l'id du contenu # @param idContenu l'id du contenu
@staticmethod @staticmethod
def getCheminDuContenu(idContenu): def get_chemin_du_contenu(idContenu):
return Utils.chemin + Utils.statdb.contenu.find_one({"id": idContenu})["fichier"] return Utils.chemin + Utils.statdb.contenu.find_one({"id": idContenu})["fichier"]
## permet de changer de version pour un contenu (modification de la branche / du commit en fonction de la situation) ## permet de changer de version pour un contenu (modification de la branche / du commit en fonction de la situation)
...@@ -447,17 +469,17 @@ class Utils: ...@@ -447,17 +469,17 @@ class Utils:
# @param version la version du contenu désirée # @param version la version du contenu désirée
# @param nomBranche changement direct de branche -> utile pour naviguer parmi les versions "en cours" # @param nomBranche changement direct de branche -> utile pour naviguer parmi les versions "en cours"
@staticmethod @staticmethod
def changerVersion(idContenu, version, nomBranche=""): def changer_version(idContenu, version, nomBranche=""):
# si la version courante est la 1 on a pas besoin de faire la suite # si la version courante est la 1 on a pas besoin de faire la suite
if Utils.getVersionCourante(idContenu) != 1: if Utils.get_version_courante(idContenu) != 1:
# on recupere le chemin du fichier associé au contenu (dans les 2 cas) # on recupere le chemin du fichier associé au contenu (dans les 2 cas)
chemin = Utils.getCheminDuContenu(idContenu) chemin = Utils.get_chemin_du_contenu(idContenu)
repertoire = chemin[:chemin.rfind("/") + 1] repertoire = chemin[:chemin.rfind("/") + 1]
if version != 0: if version != 0:
# on change le repertoire récupéré ci dessus dans la bonne version (si on travaille avec une version) # on change le repertoire récupéré ci dessus dans la bonne version (si on travaille avec une version)
idCommit = Utils.getCommitPourUneVersion(idContenu, version) idCommit = Utils.get_commit_pour_une_version(idContenu, version)
UtilsGit.changerVersionCommit(repertoire, idCommit) UtilsGit.changerVersionCommit(repertoire, idCommit)
else: else:
UtilsGit.changerVersionBranche(repertoire, nomBranche) UtilsGit.changerVersionBranche(repertoire, nomBranche)
...@@ -465,41 +487,42 @@ class Utils: ...@@ -465,41 +487,42 @@ class Utils:
## supprimer un contenu en cours ## supprimer un contenu en cours
# @param idContenuEnCours id du contenu a supprimer # @param idContenuEnCours id du contenu a supprimer
@staticmethod @staticmethod
def supprimerContenuEnCours(idContenuEnCours): def supprimer_contenu_en_cours(idContenuEnCours):
Utils.statdb.encours.delete_one({"idContenuEC": idContenuEnCours}) Utils.statdb.encours.delete_one({"idContenuEC": idContenuEnCours})
## récupérer l'auteur initial d'un contenu en cours (peut être l'auteur effectuant la modification ou non) ## récupérer l'auteur initial d'un contenu en cours (peut être l'auteur effectuant la modification ou non)
# @param idContenuEnCours l'id du contenu en cours de modification # @param idContenuEnCours l'id du contenu en cours de modification
@staticmethod @staticmethod
def getAuteurContenuEnCours(idContenuEnCours): def get_auteur_contenu_en_cours(idContenuEnCours):
id_contenu = Utils.getIdContenuAssocieAUnEnCours(idContenuEnCours) id_contenu = Utils.get_id_contenu_associe_a_un_en_cours(idContenuEnCours)
return Utils.statdb.contenu.find_one({"id": id_contenu})["auteur"] return Utils.statdb.contenu.find_one({"id": id_contenu})["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
@staticmethod @staticmethod
def getBrancheContenuEnCours(idContenuEnCours): def get_branche_contenu_en_cours(idContenuEnCours):
# id_contenu = Utils.getIdContenuAssocieAUnEnCours(idContenuEnCours) # id_contenu = Utils.getIdContenuAssocieAUnEnCours(idContenuEnCours)
return Utils.statdb.encours.find_one({"idContenuEC": idContenuEnCours})["branche"] return Utils.statdb.encours.find_one({"idContenuEC": idContenuEnCours})["branche"]
## A NE JAMAIS UTILISER SANS REFLECHIR ## A NE JAMAIS UTILISER SANS REFLECHIR
# Suppression integrale de la base de données & recreation des 3 auteurs # Suppression integrale de la base de données & recreation des 3 auteurs
@staticmethod @staticmethod
def toutPeter(): def tout_peter():
Utils.statdb.contenu.delete_many({}) Utils.statdb.contenu.delete_many({})
Utils.statdb.utilisateur.delete_many({}) Utils.statdb.utilisateur.delete_many({})
Utils.statdb.evaluation.delete_many({}) Utils.statdb.evaluation.delete_many({})
Utils.statdb.encours.delete_many({}) Utils.statdb.encours.delete_many({})
Utils.statdb.demandesPub.delete_many({}) Utils.statdb.demandesPub.delete_many({})
os.system("rm -rf dossierContenu*/") os.system("rm -rf dossierContenu*/")
Utils.ajouterUtilisateur("Auteur 1") os.system("rm -rf auteur_*/")
Utils.ajouterUtilisateur("Auteur 2") Utils.ajouter_utilisateur("Auteur 1")
Utils.ajouterUtilisateur("Auteur 3") Utils.ajouter_utilisateur("Auteur 2")
Utils.ajouter_utilisateur("Auteur 3")
## creer un contenu à partir d'un contenu en cours ## creer un contenu à partir d'un contenu en cours
@staticmethod @staticmethod
def creerNouveauContenu(chemin, auteurEnCours, idContenuEnCours): def creer_nouveau_contenu(chemin, auteurEnCours, idContenuEnCours):
print("chemin : ", chemin) print("chemin : ", chemin)
# hard codé pour l'exemple, sera adaptatif dans le futur # hard codé pour l'exemple, sera adaptatif dans le futur
...@@ -528,13 +551,13 @@ class Utils: ...@@ -528,13 +551,13 @@ class Utils:
"tags": {"1": "tag1", "2": "tag1", "3": "tag1", "4": "tag1", "5": "tag1"}}) "tags": {"1": "tag1", "2": "tag1", "3": "tag1", "4": "tag1", "5": "tag1"}})
print("Le contenu a bien été ajouté pour l'utilisateur ", auteurEnCours) print("Le contenu a bien été ajouté pour l'utilisateur ", auteurEnCours)
Utils.supprimerContenuEnCours(idContenuEnCours) Utils.supprimer_contenu_en_cours(idContenuEnCours)
## fonction qui permet de savoir si un contenu fait partie des favoris d'un auteur ## fonction qui permet de savoir si un contenu fait partie des tiers d'un auteur
# On fraude un peu en utilisant getVersionFavoriById -> si la sortie est à 0 ben le contenu n'est pas un favori # On fraude un peu en utilisant getVersionFavoriById -> si la sortie est à 0 ben le contenu n'est pas un favori
@staticmethod @staticmethod
def is_favori_auteur(auteur, idContenu): def is_tiers_auteur(auteur, idContenu):
return Utils.getVersionFavoriById(idContenu, auteur) != 0 return Utils.get_version_tiers_avec_id(idContenu, auteur) != 0
## créer une demande de Publication à l'auteur d'origine ## créer une demande de Publication à l'auteur d'origine
# @param idContenuEnCours la modification à soumettre # @param idContenuEnCours la modification à soumettre
...@@ -543,8 +566,8 @@ class Utils: ...@@ -543,8 +566,8 @@ class Utils:
# @param auteur l'auteur du contenu d'origine # @param auteur l'auteur du contenu d'origine
# ATTENTION, IL FAUDRA SUREMENT INSERER UN ID POUR PLUS DE FACILITE A MANIPULER # ATTENTION, IL FAUDRA SUREMENT INSERER UN ID POUR PLUS DE FACILITE A MANIPULER
@staticmethod @staticmethod
def demandePublication(idContenu, idContenuEnCours, auteurEnCours, auteur): def demande_publication(idContenu, idContenuEnCours, auteurEnCours, auteur):
max_id = Utils.getMaxIdDemandesDePublication() max_id = Utils.get_max_id_demandes_de_publication()
if max_id is None: if max_id is None:
max_id = 0 max_id = 0
Utils.statdb.demandesPub.insert_one( Utils.statdb.demandesPub.insert_one(
...@@ -556,7 +579,7 @@ class Utils: ...@@ -556,7 +579,7 @@ class Utils:
# @param auteur l'auteur concerné # @param auteur l'auteur concerné
# @param emises si true -> publications envoyées, si False, demandes recues # @param emises si true -> publications envoyées, si False, demandes recues
@staticmethod @staticmethod
def getDemandesPub(auteur, emises=True): def get_demandes_pub(auteur, emises=True):
if emises: if emises:
return Utils.statdb.demandesPub.find({"auteurDemande": auteur}) return Utils.statdb.demandesPub.find({"auteurDemande": auteur})
else: else:
...@@ -566,7 +589,7 @@ class Utils: ...@@ -566,7 +589,7 @@ class Utils:
# @param idContenu l'id du contenu manipulé # @param idContenu l'id du contenu manipulé
# @param version le numéro de version désiré # @param version le numéro de version désiré
@staticmethod @staticmethod
def getCommitPourUneVersion(idContenu, version): def get_commit_pour_une_version(idContenu, version):
print("Je veux récupérer le commit associé à la version ", version, "pour le contenu ", idContenu) print("Je veux récupérer le commit associé à la version ", version, "pour le contenu ", idContenu)
historique = Utils.statdb.contenu.find_one({"id": idContenu})["historique"] historique = Utils.statdb.contenu.find_one({"id": idContenu})["historique"]
for elt in historique: for elt in historique:
...@@ -578,15 +601,15 @@ class Utils: ...@@ -578,15 +601,15 @@ class Utils:
# @param idPublication la publication concernée # @param idPublication la publication concernée
# @param reponse la reponse donnée (0 / N) # @param reponse la reponse donnée (0 / N)
@staticmethod @staticmethod
def gererDemandePub(idPublication, reponse): def gerer_demande_pub(idPublication, reponse):
if reponse == 'O': if reponse == 'O':
print("Publication acceptée") print("Publication acceptée")
id_en_cours = Utils.getIdContenuEnCoursAssocieAUnePublication(idPublication) id_en_cours = Utils.get_id_contenu_en_cours_associe_a_une_publication(idPublication)
branche = Utils.getBrancheContenuEnCours(id_en_cours) branche = Utils.get_branche_contenu_en_cours(id_en_cours)
idContenu = Utils.getIdContenuAssocieAUnePublication(idPublication) idContenu = Utils.get_id_contenu_associe_a_une_publication(idPublication)
chemin = Utils.getCheminDuContenu(idContenu) chemin = Utils.get_chemin_du_contenu(idContenu)
Utils.majContenu(chemin, idContenu, branche) Utils.maj_contenu(chemin, idContenu, branche)
Utils.supprimerContenuEnCours(id_en_cours) Utils.supprimer_contenu_en_cours(id_en_cours)
Utils.statdb.demandesPub.delete_one({"id": int(idPublication)}) Utils.statdb.demandesPub.delete_one({"id": int(idPublication)})
else: else:
print("Publication refusée ", idPublication) print("Publication refusée ", idPublication)
...@@ -595,25 +618,25 @@ class Utils: ...@@ -595,25 +618,25 @@ class Utils:
Utils.statdb.demandesPub.update_one({"id": int(idPublication)}, {"$set": {"etat": "refus"}}) Utils.statdb.demandesPub.update_one({"id": int(idPublication)}, {"$set": {"etat": "refus"}})
# Utils.statdb.demandesPub.update_one({"id": 1}, {"$set": {"etat": "refus"}}) # Utils.statdb.demandesPub.update_one({"id": 1}, {"$set": {"etat": "refus"}})
## listing de toutes les mises a jour possibles pour les favoris d'un auteur ## listing de toutes les mises a jour possibles pour les tiers d'un auteur
# @param auteur l'auteur en cours # @param auteur l'auteur en cours
@staticmethod @staticmethod
def listeMajFavoris(auteur): def liste_maj_tiers(auteur):
# on cherche toutes les versions en cours dans les favoris et on compare avec celles de la banque # 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. # Trouver un moyen de sauvegarder le fait qu'une maj ait été refusée.
favoris = Utils.get_contenus_tiers(auteur) tiers = Utils.get_contenus_tiers(auteur)
for (id, version) in favoris: for (id, version) in tiers:
versionCourante = Utils.getVersionCourante(id["contenu"]) versionCourante = Utils.get_version_courante(id["contenu"])
if version["version"] < versionCourante: if version["version"] < versionCourante:
# Utils.isMajRefusee(auteur, id["contenu"], versionCourante) # Utils.isMajRefusee(auteur, id["contenu"], versionCourante)
if not Utils.isMajRefusee(auteur, id["contenu"], versionCourante): if not Utils.is_maj_refusee(auteur, id["contenu"], versionCourante):
print("Mise à jour possible") print("Mise à jour possible")
print("Voulez vous la faire (O / N)") print("Voulez vous la faire (O / N)")
choix = input() choix = input()
if choix == 'O': if choix == 'O':
Utils.majFavori(id["contenu"], versionCourante, auteur) Utils.maj_tiers(id["contenu"], versionCourante, auteur)
else: else:
Utils.majFavori(id["contenu"], versionCourante, auteur, True) Utils.maj_tiers(id["contenu"], versionCourante, auteur, True)
else: else:
pass pass
...@@ -622,18 +645,18 @@ class Utils: ...@@ -622,18 +645,18 @@ class Utils:
# @param versionContenu la version du favori # @param versionContenu la version du favori
# @param auteur l'auteur concerné # @param auteur l'auteur concerné
# @param refuse True = maj acceptée, False = maj refusée # @param refuse True = maj acceptée, False = maj refusée
def majFavori(idFavori, idNouvelleVersion, auteur, refuse=False): def maj_tiers(idFavori, idNouvelleVersion, auteur, refuse=False):
if not refuse: if not refuse:
# on vire le précédent # on vire le précédent
Utils.statdb.utilisateur.update({"nom": auteur}, Utils.statdb.utilisateur.update({"nom": auteur},
{"$pull": { {"$pull": {
"favoris": [{"contenu": idFavori}, "tiers": [{"contenu": idFavori},
{"version": idNouvelleVersion - 1}]}}) {"version": idNouvelleVersion - 1}]}})
# et on ajoute la version maj # et on ajoute la version maj
Utils.statdb.utilisateur.update({"nom": auteur}, Utils.statdb.utilisateur.update({"nom": auteur},
{"$push": { {"$push": {
"favoris": [{"contenu": idFavori}, {"version": idNouvelleVersion}]}}) "tiers": [{"contenu": idFavori}, {"version": idNouvelleVersion}]}})
else: else:
Utils.statdb.utilisateur.update({"nom": auteur}, Utils.statdb.utilisateur.update({"nom": auteur},
{"$push": { {"$push": {
...@@ -644,7 +667,7 @@ class Utils: ...@@ -644,7 +667,7 @@ class Utils:
# @param idContenu l'id du favori # @param idContenu l'id du favori
# @param versionMaj la version de la mise à jour potentielle # @param versionMaj la version de la mise à jour potentielle
@staticmethod @staticmethod
def isMajRefusee(auteur, idContenu, versionMaj): def is_maj_refusee(auteur, idContenu, versionMaj):
print("print") print("print")
compteur = Utils.statdb.utilisateur.find({"nom": auteur} and compteur = Utils.statdb.utilisateur.find({"nom": auteur} and
{"majRejetees": {"$elemMatch": {"$elemMatch": {"contenu": idContenu, {"majRejetees": {"$elemMatch": {"$elemMatch": {"contenu": idContenu,
...@@ -656,10 +679,10 @@ class Utils: ...@@ -656,10 +679,10 @@ class Utils:
# Très basique pour le moment elle permettra des recherches plus complexes prochainement # Très basique pour le moment elle permettra des recherches plus complexes prochainement
@staticmethod @staticmethod
def rechercheSurContenu(action, texteRecherche): def recherche_sur_contenu(action, texteRecherche):
if action == 1: if action == 1:
print("Recherche pour l'auteur ", texteRecherche) print("Recherche pour l'auteur ", texteRecherche)
if Utils.presenceUtilisateur(texteRecherche): if Utils.presence_utilisateur(texteRecherche):
print("J'ai", Utils.statdb.contenu.find({"auteur": texteRecherche}).count(), print("J'ai", Utils.statdb.contenu.find({"auteur": texteRecherche}).count(),
"contenu(s) pour cet auteur") "contenu(s) pour cet auteur")
else: else:
...@@ -685,7 +708,7 @@ class Utils: ...@@ -685,7 +708,7 @@ class Utils:
from nltk.tokenize import word_tokenize from nltk.tokenize import word_tokenize
## Fonction test permettant de récupérer le contenu des fichiers ## Fonction test permettant de récupérer le contenu des fichiers
@staticmethod @staticmethod
def getContenuFichiers(): def get_contenu_fichiers():
fichier1 = "Contenu1" fichier1 = "Contenu1"
fichier2 = "Contenu2" fichier2 = "Contenu2"
...@@ -724,9 +747,9 @@ class Utils: ...@@ -724,9 +747,9 @@ class Utils:
## Fonction permettant de détecter si les auteurs sont créés, et les créer si besoin ## Fonction permettant de détecter si les auteurs sont créés, et les créer si besoin
# (exclusive squelette) # (exclusive squelette)
@staticmethod @staticmethod
def creerAuteurSiBesoin(): def creer_auteur_si_besoin():
nmbreAuteurs = Utils.statdb.utilisateur.find({}).count() nmbreAuteurs = Utils.statdb.utilisateur.find({}).count()
if not nmbreAuteurs: if not nmbreAuteurs:
Utils.ajouterUtilisateur("Auteur 1") Utils.ajouter_utilisateur("Auteur 1")
Utils.ajouterUtilisateur("Auteur 2") Utils.ajouter_utilisateur("Auteur 2")
Utils.ajouterUtilisateur("Auteur 3") Utils.ajouter_utilisateur("Auteur 3")
Bonjour, je suis un contenu 1 dans sa version 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