Commit 09259dcd authored by Jérémie Passerat's avatar Jérémie Passerat

Impossibilité de modifier une version historique

parent 568b0c25
...@@ -28,20 +28,11 @@ from Utils import Utils ...@@ -28,20 +28,11 @@ from Utils import Utils
# 2. Installer les outils mentionnés ci dessus \n # 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 # 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 # 4. Lancer Main.py, soit directement à la main, soit via un IDE configuré pour ça (environnement virtual utilisable) \n
#Menu() Menu()
Utils.initialise_mongo() #Utils.initialise_mongo()
contenus_autres = Utils.get_contenus("Auteur 1", False) #Utils.get_contenus_panier("Auteur 1")
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.tout_peter() # Utils.tout_peter()
......
...@@ -13,7 +13,6 @@ class Menu: ...@@ -13,7 +13,6 @@ class Menu:
auteur_en_cours = 0 auteur_en_cours = 0
## Constructeur, permet de lancer le 1er menu ## Constructeur, permet de lancer le 1er menu
def __init__(self): def __init__(self):
# obligatoire à faire au début # obligatoire à faire au début
Utils.initialise_mongo() Utils.initialise_mongo()
...@@ -34,6 +33,7 @@ class Menu: ...@@ -34,6 +33,7 @@ class Menu:
print("Votre choix : ") print("Votre choix : ")
choix = (input()) choix = (input())
# choix spécial (et masqué) permettant de réinitialiser le squelette
if choix == 'p': if choix == 'p':
Utils.tout_peter() Utils.tout_peter()
self.menu_de_base() self.menu_de_base()
...@@ -45,10 +45,11 @@ class Menu: ...@@ -45,10 +45,11 @@ class Menu:
self.auteur_en_cours = auteur self.auteur_en_cours = auteur
self.menu_des_actions() self.menu_des_actions()
else: else:
print("Mal") print("Erreur de saisie")
sleep(1)
self.menu_de_base()
## Menu affiché une fois un compte valide sélectionné ## Menu affiché une fois un compte valide sélectionné
def menu_des_actions(self): def menu_des_actions(self):
os.system('clear') os.system('clear')
print("Bonjour ", self.auteur_en_cours) print("Bonjour ", self.auteur_en_cours)
...@@ -73,7 +74,6 @@ class Menu: ...@@ -73,7 +74,6 @@ class Menu:
self.menu_des_actions() self.menu_des_actions()
## Permet de récupérer l'action désirée par l'utilisateur ## Permet de récupérer l'action désirée par l'utilisateur
def switch_actions(self, choix): def switch_actions(self, choix):
if 0 <= choix <= 3: if 0 <= choix <= 3:
if choix == 0: if choix == 0:
...@@ -114,7 +114,7 @@ class Menu: ...@@ -114,7 +114,7 @@ class Menu:
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()
# Choix de création de contenu
if choix == 'n': if choix == 'n':
print("Selectionner le fichier à charger") print("Selectionner le fichier à charger")
print("1 : Contenu1") print("1 : Contenu1")
...@@ -127,7 +127,7 @@ class Menu: ...@@ -127,7 +127,7 @@ class Menu:
elif choix.isdigit() and 1 <= int(choix) <= 2: elif choix.isdigit() and 1 <= int(choix) <= 2:
Utils.ajouter_contenu("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(2)
self.menu_contenus_personnels() self.menu_contenus_personnels()
else: else:
print("Choix non disponible, appuyer sur q pour revenir en arrière : ") print("Choix non disponible, appuyer sur q pour revenir en arrière : ")
...@@ -138,14 +138,16 @@ class Menu: ...@@ -138,14 +138,16 @@ class Menu:
if len(choix) > 1: if len(choix) > 1:
id = int(choix[:len(choix) - 1]) id = int(choix[:len(choix) - 1])
action = choix[len(choix) - 1:] action = choix[len(choix) - 1:]
# Choix de consultation de contenu
if action == 'c': if action == 'c':
os.system('clear') os.system('clear')
print("Bonjour ", self.auteur_en_cours) print("Bonjour ", self.auteur_en_cours)
print("Vous consultez le contenu ", id) print("Vous consultez le contenu ", id)
Utils.changer_version(id, 0, "master") Utils.changer_version(id, 0, "master")
version_choisie = Utils.get_version_courante(id)
if Utils.get_version_courante(id) != 1: if Utils.get_version_courante(id) != 1:
print("Je choisis la version que je veux : (entre 1 et", Utils.get_version_courante(id), ")") print("Je choisis la version que je veux : (entre 1 et", Utils.get_version_courante(id), ")")
choix = int(input()) version_choisie = int(input())
print("Je veux charger la version ", choix) print("Je veux charger la version ", choix)
# commitVersion = Utils.getCommitPourUneVersion(choix, contenu) # commitVersion = Utils.getCommitPourUneVersion(choix, contenu)
Utils.changer_version(id, choix) Utils.changer_version(id, choix)
...@@ -155,7 +157,12 @@ class Menu: ...@@ -155,7 +157,12 @@ class Menu:
print("Voici le détail de votre contenu n°", id) print("Voici le détail de votre contenu n°", id)
Utils.consulter_un_contenu(id, self.auteur_en_cours) Utils.consulter_un_contenu(id, self.auteur_en_cours)
# Utils.affichage(Utils.get_chemin_du_contenu(id)) # Utils.affichage(Utils.get_chemin_du_contenu(id))
if Utils.get_version_courante(id) != version_choisie:
print("Vous n'etes pas dans la version courante donc ne pouvez pas modifier le contenu")
print("Appuyez sur q pour quitter")
input()
self.menu_contenus_personnels()
else :
print("Appuyez sur m pour modifier le fichier ou sur q pour quitter") print("Appuyez sur m pour modifier le fichier ou sur q pour quitter")
choix = input() choix = input()
if choix == 'q': if choix == 'q':
...@@ -171,13 +178,7 @@ class Menu: ...@@ -171,13 +178,7 @@ class Menu:
print("Choix non disponible, appuyer sur q pour revenir en arrière : ") print("Choix non disponible, appuyer sur q pour revenir en arrière : ")
input() input()
self.menu_contenus_personnels() self.menu_contenus_personnels()
# Choix de suppression de contenu
# 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)
...@@ -188,7 +189,6 @@ class Menu: ...@@ -188,7 +189,6 @@ class Menu:
print("Appuyer sur q pour revenir en arrière : ") print("Appuyer sur q pour revenir en arrière : ")
input() input()
self.menu_contenus_personnels() self.menu_contenus_personnels()
else: else:
print("Action non disponible, appuyer sur q pour revenir au menu : ") print("Action non disponible, appuyer sur q pour revenir au menu : ")
input() input()
...@@ -201,6 +201,7 @@ class Menu: ...@@ -201,6 +201,7 @@ class Menu:
print("id : ", elt["id"], "nom :", elt["fichier"], " - v", elt["versionEnCours"]["numero"], " - du", print("id : ", elt["id"], "nom :", elt["fichier"], " - v", elt["versionEnCours"]["numero"], " - du",
elt["versionEnCours"]["date"]) elt["versionEnCours"]["date"])
## Modification d'un contenu (dans ce cas, on incrémente l'indice de fin de fichier)
def modifier_contenu(self, id_contenu): def modifier_contenu(self, id_contenu):
os.system('clear') os.system('clear')
...@@ -217,7 +218,6 @@ class Menu: ...@@ -217,7 +218,6 @@ class Menu:
self.menu_des_actions() self.menu_des_actions()
## Menu des contenus tiers ## Menu des contenus tiers
def menu_contenus_tiers(self): def menu_contenus_tiers(self):
os.system('clear') os.system('clear')
print("Bonjour ", self.auteur_en_cours) print("Bonjour ", self.auteur_en_cours)
...@@ -253,7 +253,12 @@ class Menu: ...@@ -253,7 +253,12 @@ class Menu:
Utils.changer_version(id, version_tiers) Utils.changer_version(id, version_tiers)
Utils.consulter_un_contenu(id, self.auteur_en_cours) Utils.consulter_un_contenu(id, self.auteur_en_cours)
# Utils.affichage(Utils.get_chemin_du_contenu(id)) # Utils.affichage(Utils.get_chemin_du_contenu(id))
if version_tiers != Utils.get_version_courante(id):
print("Vous n'etes pas dans la version courante donc ne pouvez pas modifier le contenu \r "
"Appuyez sur q pour quitter")
input()
self.menu_contenus_tiers()
else :
print("Appuyez sur m pour modifier le fichier ou sur q pour quitter") print("Appuyez sur m pour modifier le fichier ou sur q pour quitter")
choix = input() choix = input()
if choix == 'q': if choix == 'q':
...@@ -284,13 +289,13 @@ class Menu: ...@@ -284,13 +289,13 @@ class Menu:
input() input()
self.menu_des_actions() self.menu_des_actions()
## Fonction d'affichage des contenus tiers
def afficher_contenus_tiers(self, contenu, version): def afficher_contenus_tiers(self, contenu, version):
print("id :", contenu["id"], "auteur :", contenu["auteur"], " - nom :", contenu["fichier"], " - v", print("id :", contenu["id"], "auteur :", contenu["auteur"], " - nom :", contenu["fichier"], " - v",
version, " - du", version, " - du",
contenu["versionEnCours"]["date"]) contenu["versionEnCours"]["date"])
## Menu des contenus en cours ## Menu des contenus en cours
def menu_contenus_en_cours(self): def menu_contenus_en_cours(self):
os.system('clear') os.system('clear')
print("Bonjour ", self.auteur_en_cours) print("Bonjour ", self.auteur_en_cours)
...@@ -378,10 +383,10 @@ class Menu: ...@@ -378,10 +383,10 @@ class Menu:
"version original", elt["version"], " date modif ", elt["date"], end='') "version original", elt["version"], " date modif ", elt["date"], end='')
if Utils.is_en_cours_demande(elt["idContenuEC"], self.auteur_en_cours): if Utils.is_en_cours_demande(elt["idContenuEC"], self.auteur_en_cours):
print("(demande de publication en cours sur ce contenu)") print("(demande de publication en cours sur ce contenu)")
#print("\n") else:
print("\r")
## Menu des contenus en banque ## Menu des contenus en banque
def menu_contenus_banque(self): def menu_contenus_banque(self):
os.system('clear') os.system('clear')
print("Bonjour ", self.auteur_en_cours) print("Bonjour ", self.auteur_en_cours)
...@@ -411,9 +416,10 @@ class Menu: ...@@ -411,9 +416,10 @@ class Menu:
action = choix[len(choix) - 1:] action = choix[len(choix) - 1:]
if action == 'c': if action == 'c':
Utils.changer_version(id, 0, "master") Utils.changer_version(id, 0, "master")
version_choisie = Utils.get_version_courante(id)
if Utils.get_version_courante(id) != 1: if Utils.get_version_courante(id) != 1:
print("Je choisis la version que je veux : (entre 1 et", Utils.get_version_courante(id), ")") print("Je choisis la version que je veux : (entre 1 et", Utils.get_version_courante(id), ")")
choix = int(input()) version_choisie = int(input())
print("Je veux charger la version ", choix) print("Je veux charger la version ", choix)
# commitVersion = Utils.getCommitPourUneVersion(choix, contenu) # commitVersion = Utils.getCommitPourUneVersion(choix, contenu)
Utils.changer_version(id, choix) Utils.changer_version(id, choix)
...@@ -422,7 +428,7 @@ class Menu: ...@@ -422,7 +428,7 @@ class Menu:
choix = input() choix = input()
Utils.detruire_fichier_tmp(id, self.auteur_en_cours) Utils.detruire_fichier_tmp(id, self.auteur_en_cours)
if choix == 't': if choix == 't':
Utils.mettre_contenu_en_tiers(id, self.auteur_en_cours) Utils.mettre_contenu_en_tiers(id, self.auteur_en_cours, version_choisie)
print("Le contenu ", id, 'est a présent disponible dans vos contenus tiers') print("Le contenu ", id, 'est a présent disponible dans vos contenus tiers')
print("Appuyer sur q pour aller aux contenus tiers : ") print("Appuyer sur q pour aller aux contenus tiers : ")
input() input()
...@@ -440,6 +446,7 @@ class Menu: ...@@ -440,6 +446,7 @@ class Menu:
input() input()
self.menu_des_actions() self.menu_des_actions()
## Fonction d'affichage des contenus en banque
def afficher_contenus_banque(self, contenu): def afficher_contenus_banque(self, contenu):
for elt in contenu: for elt in contenu:
...@@ -447,6 +454,7 @@ class Menu: ...@@ -447,6 +454,7 @@ class Menu:
elt["versionEnCours"]["numero"], " - du", elt["versionEnCours"]["numero"], " - du",
elt["versionEnCours"]["date"]) elt["versionEnCours"]["date"])
# Fonction de gestion d'une demande de validation d'un contenu en cours
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
...@@ -454,11 +462,12 @@ class Menu: ...@@ -454,11 +462,12 @@ class Menu:
idContenu = Utils.get_id_contenu_associe_a_un_en_cours(idContenuEnCours) idContenu = Utils.get_id_contenu_associe_a_un_en_cours(idContenuEnCours)
branche = Utils.get_branche_contenu_en_cours(idContenuEnCours) branche = Utils.get_branche_contenu_en_cours(idContenuEnCours)
# si modification d'un contenu personnel ou d'un contenu anonyme, elle est faite directement
if auteur == self.auteur_en_cours or Utils.is_anonyme(idContenu): if auteur == self.auteur_en_cours or Utils.is_anonyme(idContenu):
chemin = Utils.get_chemin_du_contenu(idContenu) chemin = Utils.get_chemin_du_contenu(idContenu)
Utils.maj_contenu(chemin, idContenu, branche) Utils.maj_contenu(chemin, idContenu, branche)
# Dans le cas contraire, on bascule vers une demande de publication de contenu
else: else:
Utils.demande_publication(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
...@@ -509,6 +518,7 @@ class Menu: ...@@ -509,6 +518,7 @@ class Menu:
input() input()
self.menu_contenus_en_cours() self.menu_contenus_en_cours()
# Fonction d'affichage des évaluations (identique à l'affichage du détail)
def afficher_evaluations(self, evaluations): def afficher_evaluations(self, evaluations):
for elt in evaluations: for elt in evaluations:
print("n°", elt["idEval"], " - date", elt["date"], " - contenus : ", end='') print("n°", elt["idEval"], " - date", elt["date"], " - contenus : ", end='')
...@@ -516,6 +526,7 @@ class Menu: ...@@ -516,6 +526,7 @@ class Menu:
print(i + 1, " ", end='') print(i + 1, " ", end='')
print("\r") print("\r")
# Création d'une évaluation
def creerEvaluation(self): def creerEvaluation(self):
os.system('clear') os.system('clear')
print("Bonjour ", self.auteur_en_cours) print("Bonjour ", self.auteur_en_cours)
...@@ -544,7 +555,7 @@ class Menu: ...@@ -544,7 +555,7 @@ class Menu:
print("Bonjour ", self.auteur_en_cours) print("Bonjour ", self.auteur_en_cours)
print("Actions disponibles : ") print("Actions disponibles : ")
print("q : revenir au menu des actions") print("q : revenir au menu des actions")
print("d : Consulter les mises à jour disponibles") print("d : Consulter les mises à jour recues")
print("p : Consulter les mises à jour proposées") print("p : Consulter les mises à jour proposées")
choix = (input()) choix = (input())
if choix == 'q': if choix == 'q':
......
...@@ -74,7 +74,7 @@ class Utils: ...@@ -74,7 +74,7 @@ class Utils:
if max_id is None: if max_id is None:
max_id = 0 max_id = 0
#print("nomFichier : ", Utils.chemin + "dossier" + nomFichier + "/") # print("nomFichier : ", Utils.chemin + "dossier" + nomFichier + "/")
cheminFichier = Utils.chemin + "dossier" + nomFichier + "/" cheminFichier = Utils.chemin + "dossier" + nomFichier + "/"
...@@ -83,7 +83,7 @@ class Utils: ...@@ -83,7 +83,7 @@ class Utils:
os.system("cp '" + Utils.chemin + nomFichier + "' '" + cheminFichier + nomFichier + "'") os.system("cp '" + Utils.chemin + nomFichier + "' '" + cheminFichier + nomFichier + "'")
commit = UtilsGit.commit(cheminFichier, nomFichier, "Version 1") commit = UtilsGit.commit(cheminFichier, nomFichier, "Version 1")
#print("commit : ", commit) # print("commit : ", commit)
Utils.statdb.contenu.insert_one( Utils.statdb.contenu.insert_one(
{"id": max_id + 1, "auteur": auteur, "note": randrange(0, 10, 1), {"id": max_id + 1, "auteur": auteur, "note": randrange(0, 10, 1),
...@@ -96,24 +96,40 @@ class Utils: ...@@ -96,24 +96,40 @@ class Utils:
print("Le contenu a bien été ajouté pour l'utilisateur ", auteur) print("Le contenu a bien été ajouté pour l'utilisateur ", auteur)
## Consultation de tous les contenus publics : ## Consultation de tous les contenus publics :
# Si panier est égal à True, on sort les contenus de l'auteur # @param auteur le nom de l'auteur
# Si panier est égal à False, on sort toutes les questions sauf celles de l'auteur (et ses tiers) # @ panier recherche dans les contenus persos ou non
# Si perso est égal à True, on sort les contenus perso de l'auteur
# Si perso est égal à False, on sort toutes les questions sauf celles de l'auteur (et ses tiers)
# (Nb: La problématique des contenus "en cours de modification" sera traitée ultérieurement) # (Nb: La problématique des contenus "en cours de modification" sera traitée ultérieurement)
# @return les contenus de l'auteur ou tous les autres # @return les contenus de l'auteur ou tous les autres
@staticmethod @staticmethod
def get_contenus(auteur, panier=False): def get_contenus(auteur, perso=False):
if panier: if perso:
return Utils.statdb.contenu.find({"auteur": auteur}) return Utils.statdb.contenu.find({"auteur": auteur})
else: else:
contenus_tiers = Utils.get_contenus_tiers(auteur) contenus_tiers = Utils.get_contenus_tiers(auteur)
tiers_auteur = list() tiers_auteur = list()
for tier in contenus_tiers: for tier in contenus_tiers:
tiers_auteur.append(tier[0]["contenu"]) 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}}) return Utils.statdb.contenu.find({"$and": [{"auteur": {"$ne": auteur}}, {"id": {"$nin": tiers_auteur}}]})
# print ("tiers de l'auteur : ", tiers_auteur)
return Utils.statdb.contenu.find({"$and" : [{"auteur": {"$ne": auteur}}, {"id": {"$nin": tiers_auteur}}]}) ## récupérer tous les contenus du "panier" de l'auteur
# @param auteur l'auteur concerné
@staticmethod
def get_contenus_panier(auteur):
contenus_perso = Utils.get_contenus(auteur)
id_tiers = Utils.get_contenus_tiers(auteur)
contenus_tiers = list()
for (id, version) in id_tiers:
contenus_tiers.append(
Utils.get_contenu_avec_id_et_version(int(id['contenu']), int(version['version'])))
contenus_en_cours = Utils.get_contenus_en_cours(auteur)
print(type(contenus_perso))
print(type(contenus_tiers))
print(type(contenus_en_cours))
## Consultation de tous les contenus, sans distinction ## Consultation de tous les contenus, sans distinction
# (utile temporairement pour la création d'évaluations) # (utile temporairement pour la création d'évaluations)
...@@ -142,11 +158,13 @@ class Utils: ...@@ -142,11 +158,13 @@ class Utils:
# @param auteur le nom de l'auteur qui désire un favori # @param auteur le nom de l'auteur qui désire un favori
@staticmethod @staticmethod
def mettre_contenu_en_tiers(idContenu, auteur): def mettre_contenu_en_tiers(idContenu, auteur, version=0):
# print("Le contenu est dans la version ", Utils.getVersionContenuavecId(idContenu)) # print("Le contenu est dans la version ", Utils.getVersionContenuavecId(idContenu))
if version == 0:
version = Utils.get_version_contenu_avec_id(idContenu)
Utils.statdb.utilisateur.update({"nom": auteur}, { Utils.statdb.utilisateur.update({"nom": auteur}, {
"$push": { "$push": {
"tiers": [{"contenu": int(idContenu)}, {"version": Utils.get_version_contenu_avec_id(idContenu)}]}}) "tiers": [{"contenu": int(idContenu)}, {"version": version}]}})
## 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
...@@ -160,7 +178,7 @@ class Utils: ...@@ -160,7 +178,7 @@ class Utils:
# @param idContenu l'identifiant du contenu # @param idContenu l'identifiant du contenu
@staticmethod @staticmethod
def is_anonyme(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"
## Récupérer un contenu à partir de son identifiant et sa version ## Récupérer un contenu à partir de son identifiant et sa version
...@@ -235,7 +253,7 @@ class Utils: ...@@ -235,7 +253,7 @@ class Utils:
element = Utils.statdb.encours.find().sort("idContenuEC", -1).limit(1) element = Utils.statdb.encours.find().sort("idContenuEC", -1).limit(1)
for elt in element: for elt in element:
#print("id : ", elt) # print("id : ", elt)
return int(elt["idContenuEC"]) return int(elt["idContenuEC"])
## Récupérer l'id maximal (pour les demandes de publication) ## Récupérer l'id maximal (pour les demandes de publication)
...@@ -247,7 +265,7 @@ class Utils: ...@@ -247,7 +265,7 @@ class Utils:
element = Utils.statdb.demandesPub.find().sort("id", -1).limit(1) element = Utils.statdb.demandesPub.find().sort("id", -1).limit(1)
for elt in element: for elt in element:
#print("id : ", elt) # print("id : ", elt)
return int(elt["id"]) return int(elt["id"])
## Récupérer les tiers d'un utilisateur ## Récupérer les tiers d'un utilisateur
...@@ -302,11 +320,12 @@ class Utils: ...@@ -302,11 +320,12 @@ class Utils:
@staticmethod @staticmethod
## affichage d'un contenu de fichier ## affichage d'un contenu de fichier
# @param chemin le fichier à afficher # @param chemin le fichier à afficher
def affichage(chemin): def affichage(chemin, get_chemin = False):
with open(chemin, "r") as fichier: with open(chemin, "r") as fichier:
texte = fichier.read() texte = fichier.read()
texte = texte.strip() texte = texte.strip()
if not get_chemin:
print("Le fichier (v", int(texte[-1]), ") : " + texte) print("Le fichier (v", int(texte[-1]), ") : " + texte)
return texte return texte
...@@ -342,10 +361,10 @@ class Utils: ...@@ -342,10 +361,10 @@ class Utils:
@staticmethod @staticmethod
def modification_fichier(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)
# on récupère la fin du fichier (la version) # on récupère la fin du fichier (la version)
fin = Utils.affichage(chemin) fin = Utils.affichage(chemin, True)
version = int(fin[-1]) version = int(fin[-1])
if version == 1: if version == 1:
ecart = 2 ecart = 2
...@@ -354,14 +373,14 @@ class Utils: ...@@ -354,14 +373,14 @@ class Utils:
repertoire = chemin[:chemin.rfind("/") + 1] repertoire = chemin[:chemin.rfind("/") + 1]
nomFichier = chemin[chemin.rfind("/") + 1:] nomFichier = chemin[chemin.rfind("/") + 1:]
#print("nomFichier :", nomFichier) # print("nomFichier :", nomFichier)
#print("chemin :", chemin) # print("chemin :", chemin)
# exit(0) # exit(0)
if modifPremiere: if modifPremiere:
# on créée une nouvelle branche et on va dedans # on créée une nouvelle branche et on va dedans
nomBranche = "version" + str(version + 1) nomBranche = "version" + str(version + 1)
#print("Je veux la branche", nomBranche) # print("Je veux la branche", nomBranche)
UtilsGit.embranchement(repertoire, nomBranche) UtilsGit.embranchement(repertoire, nomBranche)
UtilsGit.changerVersionBranche(repertoire, nomBranche) UtilsGit.changerVersionBranche(repertoire, nomBranche)
# si on est pas en "modifPremiere" on est déja dans la bonne branche. # si on est pas en "modifPremiere" on est déja dans la bonne branche.
...@@ -379,7 +398,7 @@ class Utils: ...@@ -379,7 +398,7 @@ class Utils:
# fichier.seek(0, 2) # fichier.seek(0, 2)
# print("pront:", fichier.read()) # print("pront:", fichier.read())
fichier.close() fichier.close()
Utils.affichage(chemin) #Utils.affichage(chemin)
UtilsGit.commit(repertoire, nomFichier, "modification") UtilsGit.commit(repertoire, nomFichier, "modification")
# 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)
...@@ -450,7 +469,7 @@ class Utils: ...@@ -450,7 +469,7 @@ class Utils:
@staticmethod @staticmethod
def get_id_contenu_associe_a_un_en_cours(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
...@@ -460,7 +479,7 @@ class Utils: ...@@ -460,7 +479,7 @@ class Utils:
@staticmethod @staticmethod
def get_id_contenu_en_cours_associe_a_une_publication(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"]
## récupérer le chemin d'un fichier associé à un contenu ## récupérer le chemin d'un fichier associé à un contenu
...@@ -527,7 +546,7 @@ class Utils: ...@@ -527,7 +546,7 @@ class Utils:
## creer un contenu à partir d'un contenu en cours ## creer un contenu à partir d'un contenu en cours
@staticmethod @staticmethod
def creer_nouveau_contenu(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
max_id = 3 max_id = 3
...@@ -536,9 +555,9 @@ class Utils: ...@@ -536,9 +555,9 @@ class Utils:
cheminFichier = Utils.chemin + dossierFichier cheminFichier = Utils.chemin + dossierFichier
nomFichier = chemin[chemin.rfind("/") + 1:] nomFichier = chemin[chemin.rfind("/") + 1:]
#print("Chemin fichier : ", cheminFichier) # print("Chemin fichier : ", cheminFichier)
#print("Dossier Fichier : ", dossierFichier) # print("Dossier Fichier : ", dossierFichier)
#print("NomFichier :", nomFichier) # print("NomFichier :", nomFichier)
Path(cheminFichier).mkdir(parents=True, exist_ok=True) Path(cheminFichier).mkdir(parents=True, exist_ok=True)
os.system("cp " + chemin + " " + cheminFichier) os.system("cp " + chemin + " " + cheminFichier)
os.system("mv " + cheminFichier + nomFichier + " " + cheminFichier + "Contenu" + str(max_id)) os.system("mv " + cheminFichier + nomFichier + " " + cheminFichier + "Contenu" + str(max_id))
...@@ -553,7 +572,6 @@ class Utils: ...@@ -553,7 +572,6 @@ class Utils:
"tags_fixes": {"1": "tag1", "2": "tag1", "3": "tag1", "4": "tag1", "tags_fixes": {"1": "tag1", "2": "tag1", "3": "tag1", "4": "tag1",
"5": "tag1"}, "5": "tag1"},
"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)
Utils.supprimer_contenu_en_cours(idContenuEnCours) Utils.supprimer_contenu_en_cours(idContenuEnCours)
...@@ -595,9 +613,7 @@ class Utils: ...@@ -595,9 +613,7 @@ class Utils:
# @param version le numéro de version désiré # @param version le numéro de version désiré
@staticmethod @staticmethod
def get_commit_pour_une_version(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)
if version == Utils.get_version_courante(idContenu): if version == Utils.get_version_courante(idContenu):
courante = Utils.statdb.contenu.find_one({"id": idContenu})["versionEnCours"] courante = Utils.statdb.contenu.find_one({"id": idContenu})["versionEnCours"]
...@@ -662,7 +678,7 @@ class Utils: ...@@ -662,7 +678,7 @@ class Utils:
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,
"version": versionMaj}}}}).count() != 0 "version": versionMaj}}}}).count() != 0
#print("Compteur : ", compteur) # print("Compteur : ", compteur)
return compteur return compteur
## Fonction globale de gestion de la recherche sur contenu ## Fonction globale de gestion de la recherche sur contenu
......
...@@ -20,8 +20,6 @@ class UtilsGit: ...@@ -20,8 +20,6 @@ class UtilsGit:
def commit(cheminFichier, nomFichier, texteCommit): def commit(cheminFichier, nomFichier, texteCommit):
repo = Repo.init(cheminFichier) repo = Repo.init(cheminFichier)
print("le richier à add est : ", cheminFichier)
# Il faudra faire une extraction du nom du fichier a partir du chemin # Il faudra faire une extraction du nom du fichier a partir du chemin
repo.index.add([nomFichier]) repo.index.add([nomFichier])
repo.index.commit(texteCommit) repo.index.commit(texteCommit)
......
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