Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
OpenQuizz
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
10
Issues
10
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Weber Rodolphe
OpenQuizz
Commits
5bcc6504
Commit
5bcc6504
authored
Apr 27, 2021
by
jeremie.passerat@free.fr
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Changement de version directe ok
parent
3e6c9936
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
162 additions
and
58 deletions
+162
-58
.gitignore
.gitignore
+1
-0
Contenu1
Contenu1
+1
-1
Contenu2
Contenu2
+1
-1
Main.py
Main.py
+4
-0
Menu.py
Menu.py
+36
-21
Utils.py
Utils.py
+96
-25
UtilsGit.py
UtilsGit.py
+23
-10
No files found.
.gitignore
View file @
5bcc6504
__pycache__/
__pycache__/
venv/
venv/
.idea/
.idea/
dossierContenu*/
Contenu1
View file @
5bcc6504
Bonjour, je suis un contenu 1 dans sa version 52
Bonjour, je suis un contenu 1 dans sa version 1
\ No newline at end of file
Contenu2
View file @
5bcc6504
Bonjour, je suis un contenu 2 dans sa version 12
Bonjour, je suis un contenu 2 dans sa version 1
\ No newline at end of file
Main.py
View file @
5bcc6504
...
@@ -52,3 +52,7 @@ Menu()
...
@@ -52,3 +52,7 @@ Menu()
#print(Utils.getMaxIdEvaluations())
#print(Utils.getMaxIdEvaluations())
#print(Utils.getMaxIdContenusEnCours())
#print(Utils.getMaxIdContenusEnCours())
#print (Utils.getIdContenuAssocieAUnEnCours(1))
#print (Utils.getIdContenuAssocieAUnEnCours(1))
#from UtilsGit import UtilsGit
#UtilsGit.changerVersionCommit("/home/passerat/Stage/Squelette/dossierContenu1", "master")
Menu.py
View file @
5bcc6504
...
@@ -5,6 +5,7 @@ import os
...
@@ -5,6 +5,7 @@ import os
## Classe Menu
## Classe Menu
# Affichage principal de l'application du squelette
# Affichage principal de l'application du squelette
# Toutes les interactions utilisateur sont effectuées ici
# Toutes les interactions utilisateur sont effectuées ici
from
UtilsGit
import
UtilsGit
class
Menu
:
class
Menu
:
...
@@ -32,13 +33,14 @@ class Menu:
...
@@ -32,13 +33,14 @@ class Menu:
if
choix
==
'p'
:
if
choix
==
'p'
:
Utils
.
toutPeter
()
Utils
.
toutPeter
()
self
.
menuDeBase
()
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
):
if
Utils
.
presenceUtilisateur
(
choix
):
self
.
auteurEnCours
=
choix
self
.
auteurEnCours
=
choix
self
.
menuDesActions
()
self
.
menuDesActions
()
## Menu affiché une fois un compte valide sélectionné
## Menu affiché une fois un compte valide sélectionné
...
@@ -132,8 +134,6 @@ class Menu:
...
@@ -132,8 +134,6 @@ class Menu:
self
.
afficherContenus
(
questions
)
self
.
afficherContenus
(
questions
)
# 1. On charge les contenus "mis en favori" de la banque
# 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))}"
)
print
(
f
"Contenus mis en favori par l'auteur {self.auteurEnCours} : {len(Utils.getFavoris(self.auteurEnCours))}"
)
if
len
(
Utils
.
getFavoris
(
self
.
auteurEnCours
)):
if
len
(
Utils
.
getFavoris
(
self
.
auteurEnCours
)):
...
@@ -183,11 +183,6 @@ class Menu:
...
@@ -183,11 +183,6 @@ 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"
])
"""
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'
## Fonction d'affichage des contenus 'banque'
def
afficherContenusBanque
(
self
,
contenu
):
def
afficherContenusBanque
(
self
,
contenu
):
...
@@ -419,34 +414,54 @@ class Menu:
...
@@ -419,34 +414,54 @@ class Menu:
action
=
choix
[
len
(
choix
)
-
1
:]
action
=
choix
[
len
(
choix
)
-
1
:]
print
(
"id :"
,
id
)
print
(
"id :"
,
id
)
print
(
"id type :"
,
type
(
id
))
print
(
"action :"
,
action
)
print
(
"action :"
,
action
)
print
(
"action c :"
,
action
==
'c'
)
idContenu
=
Utils
.
getIdContenuAssocieAUnEnCours
(
int
(
id
))
print
(
"id contenu associé : "
,
idContenu
)
# affiche le contenu courant du fichier
# affiche le contenu courant du fichier
if
action
==
'c'
:
if
action
==
'c'
:
Utils
.
changerVersion
(
int
(
id
),
self
.
auteurEnCours
,
"version"
)
print
(
"je suis dans action c"
)
print
(
Utils
.
getIdContenuAssocieAUnEnCours
(
int
(
id
)))
Utils
.
affichage
(
Utils
.
getFichierContenu
(
Utils
.
getIdContenuAssocieAUnEnCours
(
int
(
id
))))
Utils
.
changerVersion
(
idContenu
,
0
,
Utils
.
getBrancheContenuEnCours
(
idContenu
))
#exit(0)
Utils
.
affichage
(
Utils
.
getCheminDuContenu
(
idContenu
))
#print("Uoi")
elif
action
==
'm'
:
elif
action
==
'm'
:
Utils
.
changerVersion
(
i
nt
(
id
),
self
.
auteurEnCours
,
"version"
)
Utils
.
changerVersion
(
i
dContenu
,
0
,
Utils
.
getBrancheContenuEnCours
(
idContenu
)
)
Utils
.
modifierContenu
(
Utils
.
getIdContenuAssocieAUnEnCours
(
int
(
id
))
,
self
.
auteurEnCours
,
True
)
Utils
.
modifierContenu
(
idContenu
,
self
.
auteurEnCours
,
True
)
Utils
.
affichage
(
Utils
.
get
FichierContenu
(
Utils
.
getIdContenuAssocieAUnEnCours
(
int
(
id
))
))
Utils
.
affichage
(
Utils
.
get
CheminDuContenu
(
idContenu
))
elif
action
==
's'
:
elif
action
==
's'
:
Utils
.
supprimerContenuEnCours
(
int
(
id
))
Utils
.
supprimerContenuEnCours
(
int
(
id
))
elif
action
==
'v'
:
elif
action
==
'v'
:
self
.
validerModification
(
int
(
id
))
self
.
validerModification
(
int
(
id
))
elif
action
==
'n'
:
elif
action
==
'n'
:
Utils
.
ajouterContenu
(
Utils
.
getFichierContenu
(
Utils
.
getIdContenuAssocieAUnEnCours
(
int
(
id
))),
chemin
=
Utils
.
getCheminDuContenu
(
Utils
.
getIdContenuAssocieAUnEnCours
(
int
(
id
)))
self
.
auteurEnCours
)
Utils
.
creerNouveauContenu
(
chemin
,
self
.
auteurEnCours
,
id
)
self
.
consulterPanier
()
elif
action
==
'q'
:
elif
action
==
'q'
:
self
.
menuDesActions
()
self
.
menuDesActions
()
## changement de version d'un contenu OU demande de publication à l'auteur d'origine
## changement de version d'un contenu OU demande de publication à l'auteur d'origine
def
validerModification
(
self
,
idContenuEnCours
):
def
validerModification
(
self
,
idContenuEnCours
):
# on récupère l'auteur et l'id du contenu "de base" associé à la modif
auteur
=
Utils
.
getAuteurContenuEnCours
(
idContenuEnCours
)
auteur
=
Utils
.
getAuteurContenuEnCours
(
idContenuEnCours
)
idContenu
=
Utils
.
getIdContenuAssocieAUnEnCours
(
idContenuEnCours
)
branche
=
Utils
.
getBrancheContenuEnCours
(
idContenuEnCours
)
if
auteur
==
self
.
auteurEnCours
:
if
auteur
==
self
.
auteurEnCours
:
print
(
"Modification directe d'un auteur"
)
print
(
"Modification directe d'un auteur"
)
chemin
=
Utils
.
getCheminDuContenu
(
idContenu
)
Utils
.
majContenu
(
chemin
,
idContenu
,
branche
)
else
:
else
:
print
(
"Modification indirecte -> demande de publication"
)
print
(
"Modification indirecte -> demande de publication"
)
print
(
"Je demande à l'auteur "
,
auteur
,
"de valider ma demande de proposition"
)
#self.consulterEnCours()
#self.consulterEnCours()
Utils.py
View file @
5bcc6504
...
@@ -6,6 +6,7 @@ import os
...
@@ -6,6 +6,7 @@ import os
from
UtilsGit
import
UtilsGit
from
UtilsGit
import
UtilsGit
from
pathlib
import
Path
from
pathlib
import
Path
## Classe utils.
## Classe utils.
# Permet de stocker les fonctions utilitaires "transversales"
# Permet de stocker les fonctions utilitaires "transversales"
#
#
...
@@ -71,19 +72,26 @@ class Utils:
...
@@ -71,19 +72,26 @@ class Utils:
print
(
"nomFichier : "
,
Utils
.
chemin
+
"dossier"
+
nomFichier
+
"/"
)
print
(
"nomFichier : "
,
Utils
.
chemin
+
"dossier"
+
nomFichier
+
"/"
)
cheminFichier
=
Utils
.
chemin
+
"dossier"
+
nomFichier
+
"/"
# Un contenu doit être dans un répertoire isolé pour pouvoir le manipuler en versionnage
# Un contenu doit être dans un répertoire isolé pour pouvoir le manipuler en versionnage
Path
(
Utils
.
chemin
+
"dossier"
+
nomFichier
+
"/"
)
.
mkdir
(
parents
=
True
,
exist_ok
=
True
)
Path
(
cheminFichier
)
.
mkdir
(
parents
=
True
,
exist_ok
=
True
)
os
.
replace
(
Utils
.
chemin
+
nomFichier
,
Utils
.
chemin
+
nomFichier
+
"/"
+
nomFichier
)
os
.
system
(
"cp "
+
Utils
.
chemin
+
nomFichier
+
" "
+
cheminFichier
+
nomFichier
)
commit
=
UtilsGit
.
commit
(
cheminFichier
,
nomFichier
,
"Version 1"
)
print
(
"commit : "
,
commit
)
Utils
.
statdb
.
contenu
.
insert_one
(
Utils
.
statdb
.
contenu
.
insert_one
(
{
"id"
:
max_id
+
1
,
"auteur"
:
auteur
,
"note"
:
randrange
(
0
,
10
,
1
),
"fichier"
:
"dossier"
+
nomFichier
+
"/"
+
nomFichier
,
{
"id"
:
max_id
+
1
,
"auteur"
:
auteur
,
"note"
:
randrange
(
0
,
10
,
1
),
"fichier"
:
"dossier"
+
nomFichier
+
"/"
+
nomFichier
,
"versionEnCours"
:
{
"numero"
:
1
,
"date"
:
datetime
.
now
()
.
strftime
(
"
%
d/
%
m/
%
y"
),
"versionEnCours"
:
{
"numero"
:
1
,
"date"
:
datetime
.
now
()
.
strftime
(
"
%
d/
%
m/
%
y"
),
"popularite"
:
0
,
"
branche"
:
"master"
},
"popularite"
:
0
,
"
commit"
:
commit
},
"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 "
,
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
# 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
# Si panier est égal à False, on sort toutes les questions sauf celles de l'auteur
...
@@ -246,12 +254,12 @@ class Utils:
...
@@ -246,12 +254,12 @@ class Utils:
# @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
,
isEnCours
=
False
):
def
modifierContenu
(
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
(
Utils
.
chemin
+
contenu
[
"fichier"
],
idContenu
,
auteur
)
Utils
.
modification
(
Utils
.
chemin
+
contenu
[
"fichier"
],
idContenu
,
auteur
,
not
enCours
)
@
staticmethod
@
staticmethod
## affichage d'un contenu de fichier
## affichage d'un contenu de fichier
...
@@ -272,26 +280,45 @@ class Utils:
...
@@ -272,26 +280,45 @@ class Utils:
@
staticmethod
@
staticmethod
def
modification
(
chemin
,
idContenu
,
auteur
,
modifPremiere
=
True
):
def
modification
(
chemin
,
idContenu
,
auteur
,
modifPremiere
=
True
):
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
)
version
=
int
(
fin
[
-
1
])
version
=
int
(
fin
[
-
1
])
if
version
==
1
:
ecart
=
2
else
:
ecart
=
1
repertoire
=
chemin
[:
chemin
.
rfind
(
"/"
)
+
1
]
nomFichier
=
chemin
[
chemin
.
rfind
(
"/"
)
+
1
:]
print
(
"nomFichier :"
,
nomFichier
)
print
(
"chemin :"
,
chemin
)
#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
.
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.
# 2. on remplace le dernier caractère du fichier en l'incrémentant de 1
# 2. on remplace le dernier caractère du fichier en l'incrémentant de 1
with
open
(
chemin
,
"a"
)
as
fichier
:
with
open
(
chemin
,
"r+"
)
as
fichier
:
pos
=
fichier
.
tell
()
#pos = fichier.tell()
pos
=
pos
-
1
#pos = pos - 1
fichier
.
seek
(
pos
)
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
.
truncate
()
fichier
.
write
(
str
(
version
+
1
))
fichier
.
write
(
str
(
version
+
1
))
#fichier.seek(0, 2)
#print("pront:", fichier.read())
fichier
.
close
()
fichier
.
close
()
Utils
.
affichage
(
chemin
)
Utils
.
affichage
(
chemin
)
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)
if
modifPremiere
:
if
modifPremiere
:
...
@@ -300,25 +327,27 @@ class Utils:
...
@@ -300,25 +327,27 @@ class Utils:
max_id_encours
=
0
max_id_encours
=
0
Utils
.
statdb
.
encours
.
insert_one
(
Utils
.
statdb
.
encours
.
insert_one
(
{
"idContenuEC"
:
max_id_encours
+
1
,
"date"
:
datetime
.
now
()
.
strftime
(
"
%
d/
%
m/
%
y"
),
"auteur"
:
auteur
,
{
"idContenuEC"
:
max_id_encours
+
1
,
"date"
:
datetime
.
now
()
.
strftime
(
"
%
d/
%
m/
%
y"
),
"auteur"
:
auteur
,
"reference"
:
int
(
idContenu
),
"version"
:
version
,
"branche"
:
"sansObjet"
})
"reference"
:
int
(
idContenu
),
"version"
:
version
,
"branche"
:
nomBranche
})
# et on créée une nouvelle branche pour accueillir ce contenu en cours
## Mettre à jour un contenu (branche principale)
## Mettre à jour un contenu (branche principale)
@
staticmethod
@
staticmethod
def
majContenu
(
chemin
,
idContenu
,
nomBranche
):
def
majContenu
(
chemin
,
idContenu
,
nomBranche
):
repertoire
=
chemin
[:
chemin
.
rfind
(
"/"
)
+
1
]
fin
=
Utils
.
affichage
(
chemin
)
fin
=
Utils
.
affichage
(
chemin
)
version
=
int
(
fin
[
-
1
])
version
=
int
(
fin
[
-
1
])
# Mise à jour des métadonnées
version_en_cours
=
Utils
.
statdb
.
contenu
.
find_one
({
"id"
:
int
(
idContenu
)})[
"versionEnCours"
]
# Mise à jour du répertoire git
idCommit
=
UtilsGit
.
mergeVersion
(
repertoire
,
nomBranche
)
# Mise à jour des métadonnées - ok
version_en_cours
=
Utils
.
statdb
.
contenu
.
find_one
({
"id"
:
idContenu
})[
"versionEnCours"
]
Utils
.
statdb
.
contenu
.
update_one
({
"id"
:
int
(
idContenu
)},
{
"$push"
:
{
"historique"
:
version_en_cours
}})
Utils
.
statdb
.
contenu
.
update_one
({
"id"
:
int
(
idContenu
)},
{
"$push"
:
{
"historique"
:
version_en_cours
}})
Utils
.
statdb
.
contenu
.
update_one
({
"id"
:
int
(
idContenu
)},
{
Utils
.
statdb
.
contenu
.
update_one
({
"id"
:
int
(
idContenu
)},
{
"$set"
:
{
"versionEnCours"
:
{
"numero"
:
version
+
1
,
"date"
:
datetime
.
now
()
.
strftime
(
"
%
d/
%
m/
%
y"
),
"$set"
:
{
"versionEnCours"
:
{
"numero"
:
version
,
"date"
:
datetime
.
now
()
.
strftime
(
"
%
d/
%
m/
%
y"
),
"popularite"
:
0
,
"branche"
:
"master"
}}})
"popularite"
:
0
,
"commit"
:
idCommit
}}})
# Mise à jour du répertoire git
UtilsGit
.
mergeVersion
(
chemin
,
nomBranche
)
## 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
...
@@ -357,7 +386,7 @@ class Utils:
...
@@ -357,7 +386,7 @@ class Utils:
# @param idContenu l'id du contenu
# @param idContenu l'id du contenu
@
staticmethod
@
staticmethod
def
get
Fichier
Contenu
(
idContenu
):
def
get
CheminDu
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)
...
@@ -367,13 +396,14 @@ class Utils:
...
@@ -367,13 +396,14 @@ class Utils:
@
staticmethod
@
staticmethod
def
changerVersion
(
idContenu
,
version
,
nomBranche
):
def
changerVersion
(
idContenu
,
version
,
nomBranche
):
# 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
.
getFichierContenu
(
idContenu
)
chemin
=
Utils
.
getCheminDuContenu
(
idContenu
)
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
.
getCommitPourUneVersion
(
idContenu
,
version
)
UtilsGit
.
changerVersionCommit
(
chemin
,
idCommit
)
UtilsGit
.
changerVersionCommit
(
repertoire
,
idCommit
)
else
:
else
:
UtilsGit
.
changerVersionBranche
(
chemin
,
nomBranche
)
UtilsGit
.
changerVersionBranche
(
repertoire
,
nomBranche
)
## permet de recuperer un commit particulier lié avec une version donnee
## permet de recuperer un commit particulier lié avec une version donnee
# @param idContenu l'id du contenu manipulé
# @param idContenu l'id du contenu manipulé
...
@@ -395,6 +425,14 @@ class Utils:
...
@@ -395,6 +425,14 @@ class Utils:
id_contenu
=
Utils
.
getIdContenuAssocieAUnEnCours
(
idContenuEnCours
)
id_contenu
=
Utils
.
getIdContenuAssocieAUnEnCours
(
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
# @param idContenuEnCours l'id du contenu en cours de modification
@
staticmethod
def
getBrancheContenuEnCours
(
idContenuEnCours
):
# id_contenu = Utils.getIdContenuAssocieAUnEnCours(idContenuEnCours)
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
...
@@ -403,7 +441,40 @@ class Utils:
...
@@ -403,7 +441,40 @@ class Utils:
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
({})
os
.
system
(
"rm -rf dossierContenu*/"
)
Utils
.
ajouterUtilisateur
(
"Auteur 1"
)
Utils
.
ajouterUtilisateur
(
"Auteur 1"
)
Utils
.
ajouterUtilisateur
(
"Auteur 2"
)
Utils
.
ajouterUtilisateur
(
"Auteur 2"
)
Utils
.
ajouterUtilisateur
(
"Auteur 3"
)
Utils
.
ajouterUtilisateur
(
"Auteur 3"
)
## creer un contenu à partir d'un contenu en cours
@
staticmethod
def
creerNouveauContenu
(
chemin
,
auteurEnCours
,
idContenuEnCours
):
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
:]
print
(
"Chemin fichier : "
,
cheminFichier
)
print
(
"Dossier Fichier : "
,
dossierFichier
)
print
(
"NomFichier :"
,
nomFichier
)
Path
(
cheminFichier
)
.
mkdir
(
parents
=
True
,
exist_ok
=
True
)
os
.
system
(
"cp "
+
chemin
+
" "
+
cheminFichier
)
os
.
system
(
"mv "
+
cheminFichier
+
nomFichier
+
" "
+
cheminFichier
+
"Contenu"
+
str
(
max_id
))
#exit(0)
commit
=
UtilsGit
.
commit
(
cheminFichier
,
"Contenu"
+
str
(
max_id
),
"Version 1"
)
Utils
.
statdb
.
contenu
.
insert_one
(
{
"id"
:
max_id
+
1
,
"auteur"
:
auteurEnCours
,
"note"
:
randrange
(
0
,
10
,
1
),
"fichier"
:
"dossierContenu"
+
str
(
max_id
)
+
"/Contenu"
+
str
(
max_id
),
"versionEnCours"
:
{
"numero"
:
1
,
"date"
:
datetime
.
now
()
.
strftime
(
"
%
d/
%
m/
%
y"
),
"popularite"
:
0
,
"commit"
:
commit
},
"tags_fixes"
:
{
"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
.
supprimerContenuEnCours
(
idContenuEnCours
)
UtilsGit.py
View file @
5bcc6504
...
@@ -12,29 +12,28 @@ class UtilsGit:
...
@@ -12,29 +12,28 @@ class UtilsGit:
texte
=
texte
.
strip
()
texte
=
texte
.
strip
()
return
int
(
texte
[
-
1
])
+
1
return
int
(
texte
[
-
1
])
+
1
## commit d'un fichier (branche principale)
## commit d'un fichier (branche principale)
# @param cheminFichier le chemin du fichier
# @param cheminFichier le chemin du fichier
# @param texteCommit le texte associé au commit
# @param texteCommit le texte associé au commit
# @return le hash du commit
# @return le hash du commit
@
staticmethod
@
staticmethod
def
commit
(
cheminFichier
,
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
([
chemin
Fichier
])
repo
.
index
.
add
([
nom
Fichier
])
repo
.
index
.
commit
(
texteCommit
)
repo
.
index
.
commit
(
texteCommit
)
return
repo
.
head
.
object
.
hexsha
return
repo
.
head
.
object
.
hexsha
## commit d'un fichier (branche principale)
## commit d'un fichier (branche principale)
# @param cheminFichier le chemin du fichier
# @param cheminFichier le chemin du fichier
# @param texteCommit le texte associé au commit
# @param texteCommit le texte associé au commit
# @return le hash du commit
# @return le hash du commit
@
staticmethod
@
staticmethod
def
embranchement
(
cheminFichier
,
nomBranche
):
def
embranchement
(
cheminFichier
,
nomBranche
):
# a voir pour améliorer le Repo.init à chaque fois
# a voir pour améliorer le Repo.init à chaque fois
repo
=
Repo
.
init
(
cheminFichier
)
repo
=
Repo
.
init
(
cheminFichier
)
repo
.
create_head
(
nomBranche
,
'HEAD'
)
repo
.
create_head
(
nomBranche
,
'HEAD'
)
...
@@ -45,21 +44,35 @@ class UtilsGit:
...
@@ -45,21 +44,35 @@ class UtilsGit:
@
staticmethod
@
staticmethod
def
changerVersionCommit
(
chemin
,
commit
):
def
changerVersionCommit
(
chemin
,
commit
):
repo
=
Repo
.
init
(
chemin
)
repo
=
Repo
.
init
(
chemin
)
repo
.
head
.
reference
=
repo
.
commit
(
commit
)
# repo.head.reference = repo.commit(commit)
repo
.
head
.
reset
(
index
=
True
,
working_tree
=
True
)
# repo.head.reset(index=True, working_tree=True)
repo
.
git
.
checkout
(
"c785462dfd454045798baedb11d1674837733962"
)
## changer la version actuelle (avec une base branche):
## changer la version actuelle (avec une base branche):
# @param chemin chemin du repertoire git
# @param chemin chemin du repertoire git
# @param nombranche branche contenant la branche avec le contenu désiré
# @param nombranche branche contenant la branche avec le contenu désiré
@
staticmethod
@
staticmethod
def
changerVersionBranche
(
chemin
,
branche
):
def
changerVersionBranche
(
chemin
,
branche
):
# print("On a parcouru le chemin : ", chemin, " sur la branche :", branche)
repo
=
Repo
.
init
(
chemin
)
repo
=
Repo
.
init
(
chemin
)
repo
.
head
.
reference
=
branche
repo
.
git
.
checkout
(
branche
)
repo
.
head
.
reset
(
index
=
True
,
working_tree
=
True
)
#
repo.head.reset(index=True, working_tree=True)
## valider une nouvelle version courante d'un contenu - Un peu plus compliqué à faire.
## valider une nouvelle version courante d'un contenu - Un peu plus compliqué à faire.
# @param chemin chemin du repertoire git
# @param chemin chemin du repertoire git
# @param nombranche branche contenant le contenu temporaire à repasser en principal
# @param nombranche branche contenant le contenu temporaire à repasser en principal
@
staticmethod
@
staticmethod
def
mergeVersion
(
chemin
,
nombranche
):
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
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment