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
09259dcd
Commit
09259dcd
authored
May 07, 2021
by
Jérémie Passerat
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Impossibilité de modifier une version historique
parent
568b0c25
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
117 additions
and
100 deletions
+117
-100
Main.py
Main.py
+3
-12
Menu.py
Menu.py
+63
-52
Utils.py
Utils.py
+50
-34
UtilsGit.py
UtilsGit.py
+0
-2
Contenu1
auteur_1/Contenu1
+1
-0
No files found.
Main.py
View file @
09259dcd
...
@@ -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()
...
...
Menu.py
View file @
09259dcd
...
@@ -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
disponibl
es"
)
print
(
"d : Consulter les mises à jour
recu
es"
)
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'
:
...
...
Utils.py
View file @
09259dcd
...
@@ -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
,
p
anier
=
False
):
def
get_contenus
(
auteur
,
p
erso
=
False
):
if
p
anier
:
if
p
erso
:
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
...
...
UtilsGit.py
View file @
09259dcd
...
@@ -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
)
...
...
auteur_1/Contenu1
0 → 100644
View file @
09259dcd
Bonjour, je suis un contenu 1 dans sa version 1
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