Changement de version directe ok

parent 3e6c9936
__pycache__/
venv/
.idea/
dossierContenu*/
Bonjour, je suis un contenu 1 dans sa version 52
\ No newline at end of file
Bonjour, je suis un contenu 1 dans sa version 1
Bonjour, je suis un contenu 2 dans sa version 12
\ No newline at end of file
Bonjour, je suis un contenu 2 dans sa version 1
......@@ -52,3 +52,7 @@ Menu()
#print(Utils.getMaxIdEvaluations())
#print(Utils.getMaxIdContenusEnCours())
#print (Utils.getIdContenuAssocieAUnEnCours(1))
#from UtilsGit import UtilsGit
#UtilsGit.changerVersionCommit("/home/passerat/Stage/Squelette/dossierContenu1", "master")
......@@ -5,6 +5,7 @@ import os
## Classe Menu
# Affichage principal de l'application du squelette
# Toutes les interactions utilisateur sont effectuées ici
from UtilsGit import UtilsGit
class Menu:
......@@ -32,13 +33,14 @@ class Menu:
if choix == 'p':
Utils.toutPeter()
self.menuDeBase()
choix = Utils.switchAuteur(int(choix))
if choix.isdigit():
choix = Utils.switchAuteur(int(choix))
if choix != "Auteur inconnu":
if choix != "Auteur inconnu":
if Utils.presenceUtilisateur(choix):
self.auteurEnCours = choix
self.menuDesActions()
if Utils.presenceUtilisateur(choix):
self.auteurEnCours = choix
self.menuDesActions()
## Menu affiché une fois un compte valide sélectionné
......@@ -132,8 +134,6 @@ class Menu:
self.afficherContenus(questions)
# 1. On charge les contenus "mis en favori" de la banque
# print("Contenus mis en favori par l'auteur ", self.auteurEnCours, " : ",
# len(Utils.getFavoris(self.auteurEnCours)))
print(f"Contenus mis en favori par l'auteur {self.auteurEnCours} : {len(Utils.getFavoris(self.auteurEnCours))}")
if len(Utils.getFavoris(self.auteurEnCours)):
......@@ -183,11 +183,6 @@ class Menu:
print("nom :", elt["fichier"], " - v", elt["versionEnCours"]["numero"], " - du",
elt["versionEnCours"]["date"])
"""
La deuxième est pour les contenus de la banque. Certains champs supplémentaires apparaissent
(On verra + tard si une mutualisation de code est jouable)
"""
## Fonction d'affichage des contenus 'banque'
def afficherContenusBanque(self, contenu):
......@@ -419,34 +414,54 @@ class Menu:
action = choix[len(choix) - 1:]
print("id :", id)
print("id type :", type(id))
print("action :", action)
print("action c :", action == 'c')
idContenu = Utils.getIdContenuAssocieAUnEnCours(int(id))
print ("id contenu associé : ", idContenu)
# affiche le contenu courant du fichier
if action == 'c':
Utils.changerVersion(int(id), self.auteurEnCours, "version")
print(Utils.getIdContenuAssocieAUnEnCours(int(id)))
Utils.affichage(Utils.getFichierContenu(Utils.getIdContenuAssocieAUnEnCours(int(id))))
print("je suis dans action c")
Utils.changerVersion(idContenu, 0, Utils.getBrancheContenuEnCours(idContenu))
#exit(0)
Utils.affichage(Utils.getCheminDuContenu(idContenu))
#print("Uoi")
elif action == 'm':
Utils.changerVersion(int(id), self.auteurEnCours, "version")
Utils.modifierContenu(Utils.getIdContenuAssocieAUnEnCours(int(id)), self.auteurEnCours, True)
Utils.affichage(Utils.getFichierContenu(Utils.getIdContenuAssocieAUnEnCours(int(id))))
Utils.changerVersion(idContenu, 0, Utils.getBrancheContenuEnCours(idContenu))
Utils.modifierContenu(idContenu, self.auteurEnCours, True)
Utils.affichage(Utils.getCheminDuContenu(idContenu))
elif action == 's':
Utils.supprimerContenuEnCours(int(id))
elif action == 'v':
self.validerModification(int(id))
elif action == 'n':
Utils.ajouterContenu(Utils.getFichierContenu(Utils.getIdContenuAssocieAUnEnCours(int(id))),
self.auteurEnCours)
chemin = Utils.getCheminDuContenu(Utils.getIdContenuAssocieAUnEnCours(int(id)))
Utils.creerNouveauContenu(chemin,
self.auteurEnCours, id)
self.consulterPanier()
elif action == 'q':
self.menuDesActions()
## changement de version d'un contenu OU demande de publication à l'auteur d'origine
def validerModification(self, idContenuEnCours):
# on récupère l'auteur et l'id du contenu "de base" associé à la modif
auteur = Utils.getAuteurContenuEnCours(idContenuEnCours)
idContenu = Utils.getIdContenuAssocieAUnEnCours(idContenuEnCours)
branche = Utils.getBrancheContenuEnCours(idContenuEnCours)
if auteur == self.auteurEnCours:
print("Modification directe d'un auteur")
chemin = Utils.getCheminDuContenu(idContenu)
Utils.majContenu(chemin, idContenu, branche)
else:
print("Modification indirecte -> demande de publication")
print("Je demande à l'auteur ", auteur, "de valider ma demande de proposition")
#self.consulterEnCours()
This diff is collapsed.
......@@ -12,29 +12,28 @@ class UtilsGit:
texte = texte.strip()
return int(texte[-1]) + 1
## commit d'un fichier (branche principale)
# @param cheminFichier le chemin du fichier
# @param texteCommit le texte associé au commit
# @return le hash du commit
@staticmethod
def commit(cheminFichier, texteCommit):
def commit(cheminFichier, nomFichier, texteCommit):
repo = Repo.init(cheminFichier)
print("le richier à add est : ", cheminFichier)
# Il faudra faire une extraction du nom du fichier a partir du chemin
repo.index.add([cheminFichier])
repo.index.add([nomFichier])
repo.index.commit(texteCommit)
return repo.head.object.hexsha
## commit d'un fichier (branche principale)
# @param cheminFichier le chemin du fichier
# @param texteCommit le texte associé au commit
# @return le hash du commit
@staticmethod
def embranchement(cheminFichier, nomBranche):
# a voir pour améliorer le Repo.init à chaque fois
repo = Repo.init(cheminFichier)
repo.create_head(nomBranche, 'HEAD')
......@@ -45,21 +44,35 @@ class UtilsGit:
@staticmethod
def changerVersionCommit(chemin, commit):
repo = Repo.init(chemin)
repo.head.reference = repo.commit(commit)
repo.head.reset(index=True, working_tree=True)
# repo.head.reference = repo.commit(commit)
# repo.head.reset(index=True, working_tree=True)
repo.git.checkout("c785462dfd454045798baedb11d1674837733962")
## changer la version actuelle (avec une base branche):
# @param chemin chemin du repertoire git
# @param nombranche branche contenant la branche avec le contenu désiré
@staticmethod
def changerVersionBranche(chemin, branche):
# print("On a parcouru le chemin : ", chemin, " sur la branche :", branche)
repo = Repo.init(chemin)
repo.head.reference = branche
repo.head.reset(index=True, working_tree=True)
repo.git.checkout(branche)
# repo.head.reset(index=True, working_tree=True)
## valider une nouvelle version courante d'un contenu - Un peu plus compliqué à faire.
# @param chemin chemin du repertoire git
# @param nombranche branche contenant le contenu temporaire à repasser en principal
@staticmethod
def mergeVersion(chemin, nombranche):
pass
# "objectif : fusionner main et en_cours"
repo = Repo.init(chemin)
master = repo.branches['master']
enCours = repo.branches[nombranche]
# merge des deux branches
base = repo.merge_base(enCours, master)
repo.index.merge_tree(master, base=base)
# on commit le merge
repo.index.commit('Mise à jour de la branche principale',
parent_commits=(enCours.commit, master.commit))
return repo.head.object.hexsha
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