Commit ec4d1b6b authored by Jérémie Passerat's avatar Jérémie Passerat

Suppression d'un contenu en cours favori lorsque qu'il est 'forké'

parent 5bcc6504
......@@ -56,3 +56,4 @@ Menu()
#from UtilsGit import UtilsGit
#UtilsGit.changerVersionCommit("/home/passerat/Stage/Squelette/dossierContenu1", "master")
#print (Utils.isFavoriDeAuteur("Auteur 2", 1))
\ No newline at end of file
from Utils import Utils
import os
## Classe Menu
# Affichage principal de l'application du squelette
# Toutes les interactions utilisateur sont effectuées ici
......@@ -30,17 +29,19 @@ class Menu:
print("3 : Auteur 3")
print("Votre choix : ")
choix = (input())
if choix == 'p':
Utils.toutPeter()
self.menuDeBase()
if choix.isdigit():
choix = Utils.switchAuteur(int(choix))
if choix != "Auteur inconnu":
auteur = Utils.switchAuteur(int(choix))
if auteur != "Auteur inconnu":
if Utils.presenceUtilisateur(choix):
self.auteurEnCours = choix
if Utils.presenceUtilisateur(auteur):
self.auteurEnCours = auteur
self.menuDesActions()
else:
print("Mal")
## Menu affiché une fois un compte valide sélectionné
......@@ -64,7 +65,6 @@ class Menu:
if choix.isdigit():
self.switchActions(int(choix))
## Permet de récupérer l'action désirée par l'utilisateur
def switchActions(self, argument):
......@@ -259,7 +259,7 @@ class Menu:
# on charge la fonction de "suppression" d'un contenu en fonction de la saisie de l'utilisateur
if choix.isdigit():
print("Le contenu choisi a ", int(choix), "favoris liés")
if Utils.sumContenuEnFavori(int(choix)) > 0:
if Utils.existeEnFavori(int(choix)):
Utils.supprimerContenu(int(choix))
self.consulterPanier()
else:
......@@ -291,10 +291,10 @@ class Menu:
print("Le contenu choisi a ", int(choix), "favoris liés. Sa version associée est : ", favoris[int(choix)])
Utils.supprimerFavori(int(choix), self.auteurEnCours, favoris[int(choix)])
print("Le favori ", int(choix), " a été supprimé")
print("nombre : ", Utils.sumContenuEnFavori(int(choix)))
print("nombre : ", Utils.existeEnFavori(int(choix)))
print("anonyme : ", Utils.isAnonyme(int(choix)))
if Utils.sumContenuEnFavori(int(choix)) == 0 and Utils.isAnonyme(int(choix)):
if Utils.existeEnFavori(int(choix)) and Utils.isAnonyme(int(choix)):
Utils.aneantirContenu(int(choix))
print("Le contenu ", int(choix), " a été définitivement supprimé")
......@@ -417,19 +417,18 @@ class Menu:
print("action :", action)
print("action c :", action == 'c')
idContenu = Utils.getIdContenuAssocieAUnEnCours(int(id))
print ("id contenu associé : ", idContenu)
print("id contenu associé : ", idContenu)
# affiche le contenu courant du fichier
if action == 'c':
print("je suis dans action c")
Utils.changerVersion(idContenu, 0, Utils.getBrancheContenuEnCours(idContenu))
#exit(0)
# exit(0)
Utils.affichage(Utils.getCheminDuContenu(idContenu))
#print("Uoi")
# print("Uoi")
elif action == 'm':
Utils.changerVersion(idContenu, 0, Utils.getBrancheContenuEnCours(idContenu))
......@@ -439,11 +438,18 @@ class Menu:
Utils.supprimerContenuEnCours(int(id))
elif action == 'v':
self.validerModification(int(id))
Utils.supprimerContenuEnCours(int(id))
elif action == 'n':
chemin = Utils.getCheminDuContenu(Utils.getIdContenuAssocieAUnEnCours(int(id)))
contenu_associe = Utils.getIdContenuAssocieAUnEnCours(int(id))
chemin = Utils.getCheminDuContenu(contenu_associe)
Utils.creerNouveauContenu(chemin,
self.auteurEnCours, id)
self.auteurEnCours, id)
Utils.supprimerContenuEnCours(int(id))
if Utils.isFavoriDeAuteur(self.auteurEnCours, contenu_associe):
versionFavori = Utils.getVersionFavoriById(contenu_associe, self.auteurEnCours)
Utils.supprimerFavori(contenu_associe, self.auteurEnCours, versionFavori)
self.consulterPanier()
elif action == 'q':
self.menuDesActions()
......@@ -464,4 +470,4 @@ class Menu:
else:
print("Modification indirecte -> demande de publication")
print("Je demande à l'auteur ", auteur, "de valider ma demande de proposition")
#self.consulterEnCours()
# supprimer favori
......@@ -79,7 +79,7 @@ class Utils:
os.system("cp " + Utils.chemin + nomFichier + " " + cheminFichier + nomFichier)
commit = UtilsGit.commit(cheminFichier, nomFichier, "Version 1")
print ("commit : ", commit)
print("commit : ", commit)
Utils.statdb.contenu.insert_one(
{"id": max_id + 1, "auteur": auteur, "note": randrange(0, 10, 1),
......@@ -91,7 +91,6 @@ class Utils:
"tags": {"1": "tag1", "2": "tag1", "3": "tag1", "4": "tag1", "5": "tag1"}})
print("Le contenu a bien été ajouté pour l'utilisateur ", auteur)
## Consultation de tous les contenus publics :
# Si panier est égal à True, on sort les contenus de l'auteur
# Si panier est égal à False, on sort toutes les questions sauf celles de l'auteur
......@@ -254,7 +253,7 @@ class Utils:
# @param auteur l'utilisateur désirant modifier la question
# @param isEnCours Vrai si modification d'un contenu en cours
@staticmethod
def modifierContenu(idContenu, auteur, enCours = False):
def modifierContenu(idContenu, auteur, enCours=False):
# le chemin du fichier restera tjrs le même
contenu = Utils.statdb.contenu.find_one({"id": int(idContenu)})
......@@ -289,12 +288,12 @@ class Utils:
ecart = 2
else:
ecart = 1
repertoire = chemin[:chemin.rfind("/")+1]
nomFichier = chemin[chemin.rfind("/")+1:]
repertoire = chemin[:chemin.rfind("/") + 1]
nomFichier = chemin[chemin.rfind("/") + 1:]
print ("nomFichier :", nomFichier)
print ("chemin :", chemin)
#exit(0)
print("nomFichier :", nomFichier)
print("chemin :", chemin)
# exit(0)
if modifPremiere:
# on créée une nouvelle branche et on va dedans
......@@ -306,16 +305,16 @@ class Utils:
# 2. on remplace le dernier caractère du fichier en l'incrémentant de 1
with open(chemin, "r+") as fichier:
#pos = fichier.tell()
#pos = pos - 1
# pos = fichier.tell()
# pos = pos - 1
fichier.seek(0, 2)
# seek to end of file; f.seek(0, os.SEEK_END) is legal
fichier.seek(fichier.tell() - ecart, 0)
fichier.truncate()
fichier.write(str(version + 1))
#fichier.seek(0, 2)
#print("pront:", fichier.read())
# fichier.seek(0, 2)
# print("pront:", fichier.read())
fichier.close()
Utils.affichage(chemin)
UtilsGit.commit(repertoire, nomFichier, "modification")
......@@ -331,7 +330,7 @@ class Utils:
## Mettre à jour un contenu (branche principale)
@staticmethod
def majContenu(chemin, idContenu,nomBranche):
def majContenu(chemin, idContenu, nomBranche):
repertoire = chemin[:chemin.rfind("/") + 1]
fin = Utils.affichage(chemin)
......@@ -347,20 +346,31 @@ class Utils:
"$set": {"versionEnCours": {"numero": version, "date": datetime.now().strftime("%d/%m/%y"),
"popularite": 0, "commit": idCommit}}})
## Supprimer une évaluation (définitif)
# @param idEval l'id de l'évaluation à supprimer
@staticmethod
def supprimerEvaluation(idEval):
Utils.statdb.evaluation.delete_one({"idEval": idEval})
## Fonction pour savoir combien de favoris actifs d'un contenu existent
## Fonction pour savoir si un contenu est favori chez qqun
# @param idContenu
@staticmethod
def sumContenuEnFavori(idContenu):
def existeEnFavori(idContenu):
return Utils.statdb.utilisateur.find(
{"favoris": {"$elemMatch": {"$elemMatch": {"contenu": idContenu}}}}).count()
{"favoris": {"$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
# @param idContenu
@staticmethod
def getVersionFavoriById(idContenu, auteur):
favoris = (Utils.statdb.utilisateur.find_one({"nom": auteur})["favoris"])
print(type(favoris))
for i in range(len(favoris)):
fav = favoris[i]
if int(fav[0]["contenu"]) == idContenu:
return int(fav[1]["version"])
else:
return 0
## Suppression définitive d'un contenu
@staticmethod
......@@ -430,7 +440,7 @@ class Utils:
@staticmethod
def getBrancheContenuEnCours(idContenuEnCours):
# id_contenu = Utils.getIdContenuAssocieAUnEnCours(idContenuEnCours)
# id_contenu = Utils.getIdContenuAssocieAUnEnCours(idContenuEnCours)
return Utils.statdb.encours.find_one({"idContenuEC": idContenuEnCours})["branche"]
## A NE JAMAIS UTILISER SANS REFLECHIR
......@@ -449,22 +459,22 @@ class Utils:
## creer un contenu à partir d'un contenu en cours
@staticmethod
def creerNouveauContenu(chemin, auteurEnCours, idContenuEnCours):
print ("chemin : ", chemin)
print("chemin : ", chemin)
# hard codé pour l'exemple, sera adaptatif dans le futur
max_id = 3
dossierFichier = "dossierContenu" + str(max_id) + "/"
cheminFichier = Utils.chemin + dossierFichier
nomFichier = chemin[chemin.rfind("/") + 1:]
nomFichier = chemin[chemin.rfind("/") + 1:]
print("Chemin fichier : ", cheminFichier)
print ("Dossier Fichier : ", dossierFichier)
print ("NomFichier :", nomFichier)
print("Dossier Fichier : ", dossierFichier)
print("NomFichier :", nomFichier)
Path(cheminFichier).mkdir(parents=True, exist_ok=True)
os.system("cp " + chemin + " " + cheminFichier)
os.system("mv " + cheminFichier + nomFichier + " " + cheminFichier + "Contenu" + str(max_id))
#exit(0)
os.system("cp " + chemin + " " + cheminFichier)
os.system("mv " + cheminFichier + nomFichier + " " + cheminFichier + "Contenu" + str(max_id))
# exit(0)
commit = UtilsGit.commit(cheminFichier, "Contenu" + str(max_id), "Version 1")
Utils.statdb.contenu.insert_one(
......@@ -478,3 +488,9 @@ class Utils:
print("Le contenu a bien été ajouté pour l'utilisateur ", auteurEnCours)
Utils.supprimerContenuEnCours(idContenuEnCours)
## fonction qui permet de savoir si un contenu fait partie des favoris d'un auteur
# On fraude un peu en utilisant getVersionFavoriById -> si la sortie est à 0 ben le contenu n'est pas un favori
@staticmethod
def isFavoriDeAuteur(auteur, idContenu):
return Utils.getVersionFavoriById(idContenu, auteur) != 0
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment