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
568b0c25
Commit
568b0c25
authored
May 07, 2021
by
Jérémie Passerat
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Version finale avant présentation du 07/05/21
parent
37c8db99
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
98 additions
and
52 deletions
+98
-52
Main.py
Main.py
+14
-2
Menu.py
Menu.py
+52
-8
Utils.py
Utils.py
+32
-42
No files found.
Main.py
View file @
568b0c25
...
...
@@ -28,10 +28,22 @@ from Utils import Utils
# 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
# 4. Lancer Main.py, soit directement à la main, soit via un IDE configuré pour ça (environnement virtual utilisable) \n
Menu
()
#Menu()
Utils
.
initialise_mongo
()
contenus_autres
=
Utils
.
get_contenus
(
"Auteur 1"
,
False
)
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.initialise_mongo()
# Utils.tout_peter()
# Utils.creer_auteur_si_besoin()
# Utils.ajouter_contenu("Contenu1", "Auteur 1")
...
...
Menu.py
View file @
568b0c25
...
...
@@ -141,6 +141,7 @@ class Menu:
if
action
==
'c'
:
os
.
system
(
'clear'
)
print
(
"Bonjour "
,
self
.
auteur_en_cours
)
print
(
"Vous consultez le contenu "
,
id
)
Utils
.
changer_version
(
id
,
0
,
"master"
)
if
Utils
.
get_version_courante
(
id
)
!=
1
:
print
(
"Je choisis la version que je veux : (entre 1 et"
,
Utils
.
get_version_courante
(
id
),
")"
)
...
...
@@ -150,7 +151,7 @@ class Menu:
Utils
.
changer_version
(
id
,
choix
)
else
:
version_courante
=
int
(
Utils
.
get_version_courante
(
id
))
Utils
.
changer_version
(
version_courante
,
id
)
Utils
.
changer_version
(
id
,
version_courante
)
print
(
"Voici le détail de votre contenu n°"
,
id
)
Utils
.
consulter_un_contenu
(
id
,
self
.
auteur_en_cours
)
# Utils.affichage(Utils.get_chemin_du_contenu(id))
...
...
@@ -197,7 +198,7 @@ class Menu:
def
afficher_contenus
(
self
,
contenu
):
for
elt
in
contenu
:
print
(
"nom :"
,
elt
[
"fichier"
],
" - v"
,
elt
[
"versionEnCours"
][
"numero"
],
" - du"
,
print
(
"
id : "
,
elt
[
"id"
],
"
nom :"
,
elt
[
"fichier"
],
" - v"
,
elt
[
"versionEnCours"
][
"numero"
],
" - du"
,
elt
[
"versionEnCours"
][
"date"
])
def
modifier_contenu
(
self
,
id_contenu
):
...
...
@@ -345,7 +346,7 @@ class Menu:
self
.
valider_modification
(
id
)
print
(
"La demande de validation du contenu a été effectuée"
)
# Si le contenu validé est d'origine personnelle on peut supprimer le en cours (sinon on le conserve)
if
not
Utils
.
is_tiers_auteur
(
self
.
auteur_en_cours
,
id
):
if
not
Utils
.
is_tiers_auteur
(
self
.
auteur_en_cours
,
id
)
or
Utils
.
is_anonyme
(
id
)
:
Utils
.
supprimer_contenu_en_cours
(
int
(
id
))
print
(
"Appuyer sur q pour revenir en arriere : "
)
...
...
@@ -374,7 +375,10 @@ class Menu:
for
elt
in
contenu
:
print
(
"id Modif :"
,
elt
[
"idContenuEC"
],
"auteur original :"
,
elt
[
"auteur"
],
" - id Original :"
,
elt
[
"reference"
],
"version original"
,
elt
[
"version"
],
" date modif "
,
elt
[
"date"
])
"version original"
,
elt
[
"version"
],
" date modif "
,
elt
[
"date"
],
end
=
''
)
if
Utils
.
is_en_cours_demande
(
elt
[
"idContenuEC"
],
self
.
auteur_en_cours
):
print
(
"(demande de publication en cours sur ce contenu)"
)
#print("\n")
## Menu des contenus en banque
...
...
@@ -450,7 +454,7 @@ class Menu:
idContenu
=
Utils
.
get_id_contenu_associe_a_un_en_cours
(
idContenuEnCours
)
branche
=
Utils
.
get_branche_contenu_en_cours
(
idContenuEnCours
)
if
auteur
==
self
.
auteur_en_cours
:
if
auteur
==
self
.
auteur_en_cours
or
Utils
.
is_anonyme
(
idContenu
)
:
chemin
=
Utils
.
get_chemin_du_contenu
(
idContenu
)
Utils
.
maj_contenu
(
chemin
,
idContenu
,
branche
)
else
:
...
...
@@ -644,7 +648,7 @@ class Menu:
if
pub
[
"etat"
]
==
"accepté"
:
print
(
"Votre publication a été acceptée. Le contenu tiers correspondant a été mis à jours"
)
Utils
.
supprimer_publication
(
pub
[
"id"
])
#Utils.supprimer_contenu_en_cours(Utils.get_id_contenu_en_cours_associe_a_une_publication(pub['id']))
#
Utils.supprimer_contenu_en_cours(Utils.get_id_contenu_en_cours_associe_a_une_publication(pub['id']))
if
pub
[
"etat"
]
==
"refus"
:
print
(
"Actions possibles : "
)
print
(
"n : creer un nouveau contenu a partir de celui ci"
)
...
...
@@ -652,10 +656,10 @@ class Menu:
print
(
"c : (non disponible) conserver le contenu en l'état"
)
print
(
"q : remettre ce choix à plus tard"
)
choix
=
input
()
print
(
"Le choix que je fais : "
,
choix
)
print
(
"Le choix que je fais : "
,
choix
)
if
choix
==
'n'
:
id_en_cours
=
Utils
.
get_id_contenu_en_cours_associe_a_une_publication
(
id_pub
)
print
(
"L'id du contenu en cours est : "
,
id_en_cours
)
print
(
"L'id du contenu en cours est : "
,
id_en_cours
)
contenu_associe
=
Utils
.
get_id_contenu_associe_a_un_en_cours
(
id_en_cours
)
chemin
=
Utils
.
get_chemin_du_contenu
(
contenu_associe
)
...
...
@@ -682,6 +686,46 @@ class Menu:
input
()
self
.
menu_des_actions
()
## listing de toutes les mises a jour possibles pour les tiers d'un auteur
# @param auteur l'auteur en cours
def
liste_maj_tiers
(
self
,
auteur
):
# on cherche toutes les versions en cours dans les tiers et on compare avec celles de la banque
# Trouver un moyen de sauvegarder le fait qu'une maj ait été refusée.
tiers
=
Utils
.
get_contenus_tiers
(
auteur
)
for
(
id
,
version
)
in
tiers
:
versionCourante
=
Utils
.
get_version_courante
(
id
[
"contenu"
])
if
version
[
"version"
]
<
versionCourante
:
if
not
Utils
.
is_maj_refusee
(
auteur
,
id
[
"contenu"
],
versionCourante
):
print
(
"Contenu : "
,
id
[
"contenu"
],
" version actuelle : "
,
version
[
"version"
],
"version maj : "
,
versionCourante
)
print
(
"Mise à jour possible"
)
print
(
"Appuyer sur c pour consulter le détail de la mise à jour du contenu"
)
choix
=
input
()
if
choix
==
'c'
:
Utils
.
changer_version
(
id
[
"contenu"
],
0
,
"master"
)
Utils
.
changer_version
(
id
[
"contenu"
],
Utils
.
get_version_courante
(
id
[
"contenu"
]))
print
(
"Détail de la maj disponible pour le contenu : "
)
Utils
.
consulter_un_contenu
(
id
[
"contenu"
],
self
.
auteur_en_cours
)
print
(
"Appuyer sur o pour accepter cette maj, sur n pour la refuser ou sur q pour revenir au menu des actions : "
)
if
choix
==
'o'
:
Utils
.
maj_tiers
(
id
[
"contenu"
],
versionCourante
,
auteur
)
print
(
"Mise à jour effectuée"
)
print
(
"appuyez sur q pour revenir au menu des actions"
)
input
()
self
.
menu_des_actions
()
elif
choix
==
'n'
:
Utils
.
maj_tiers
(
id
[
"contenu"
],
versionCourante
,
auteur
,
True
)
print
(
"Mise à jour refusée"
)
print
(
"appuyez sur q pour revenir au menu des actions"
)
input
()
self
.
menu_des_actions
()
else
:
self
.
menu_des_actions
()
'''
## Importer un fichier
...
...
Utils.py
View file @
568b0c25
...
...
@@ -74,7 +74,7 @@ class Utils:
if
max_id
is
None
:
max_id
=
0
print
(
"nomFichier : "
,
Utils
.
chemin
+
"dossier"
+
nomFichier
+
"/"
)
#
print("nomFichier : ", Utils.chemin + "dossier" + nomFichier + "/")
cheminFichier
=
Utils
.
chemin
+
"dossier"
+
nomFichier
+
"/"
...
...
@@ -83,7 +83,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
),
...
...
@@ -106,8 +106,14 @@ class Utils:
if
panier
:
return
Utils
.
statdb
.
contenu
.
find
({
"auteur"
:
auteur
})
else
:
tiers_auteur
=
Utils
.
get_contenus_tiers
(
auteur
)
return
Utils
.
statdb
.
contenu
.
find
({
"auteur"
:
{
"$ne"
:
auteur
}}
and
{
"id"
:
{
"$nin"
:
tiers_auteur
}})
contenus_tiers
=
Utils
.
get_contenus_tiers
(
auteur
)
tiers_auteur
=
list
()
for
tier
in
contenus_tiers
:
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}})
# print ("tiers de l'auteur : ", tiers_auteur)
return
Utils
.
statdb
.
contenu
.
find
({
"$and"
:
[{
"auteur"
:
{
"$ne"
:
auteur
}},
{
"id"
:
{
"$nin"
:
tiers_auteur
}}]})
## Consultation de tous les contenus, sans distinction
# (utile temporairement pour la création d'évaluations)
...
...
@@ -154,7 +160,7 @@ class Utils:
# @param idContenu l'identifiant du contenu
@
staticmethod
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"
## Récupérer un contenu à partir de son identifiant et sa version
...
...
@@ -229,7 +235,7 @@ class Utils:
element
=
Utils
.
statdb
.
encours
.
find
()
.
sort
(
"idContenuEC"
,
-
1
)
.
limit
(
1
)
for
elt
in
element
:
print
(
"id : "
,
elt
)
#
print("id : ", elt)
return
int
(
elt
[
"idContenuEC"
])
## Récupérer l'id maximal (pour les demandes de publication)
...
...
@@ -241,7 +247,7 @@ class Utils:
element
=
Utils
.
statdb
.
demandesPub
.
find
()
.
sort
(
"id"
,
-
1
)
.
limit
(
1
)
for
elt
in
element
:
print
(
"id : "
,
elt
)
#
print("id : ", elt)
return
int
(
elt
[
"id"
])
## Récupérer les tiers d'un utilisateur
...
...
@@ -336,7 +342,7 @@ class Utils:
@
staticmethod
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)
fin
=
Utils
.
affichage
(
chemin
)
...
...
@@ -348,14 +354,14 @@ class Utils:
repertoire
=
chemin
[:
chemin
.
rfind
(
"/"
)
+
1
]
nomFichier
=
chemin
[
chemin
.
rfind
(
"/"
)
+
1
:]
print
(
"nomFichier :"
,
nomFichier
)
print
(
"chemin :"
,
chemin
)
#
print("nomFichier :", nomFichier)
#
print("chemin :", chemin)
# exit(0)
if
modifPremiere
:
# on créée une nouvelle branche et on va dedans
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.
...
...
@@ -444,7 +450,7 @@ class Utils:
@
staticmethod
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"
]
@
staticmethod
...
...
@@ -454,7 +460,7 @@ class Utils:
@
staticmethod
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"
]
## récupérer le chemin d'un fichier associé à un contenu
...
...
@@ -521,7 +527,7 @@ class Utils:
## creer un contenu à partir d'un contenu en cours
@
staticmethod
def
creer_nouveau_contenu
(
chemin
,
auteurEnCours
,
idContenuEnCours
):
print
(
"chemin : "
,
chemin
)
#
print("chemin : ", chemin)
# hard codé pour l'exemple, sera adaptatif dans le futur
max_id
=
3
...
...
@@ -530,9 +536,9 @@ class Utils:
cheminFichier
=
Utils
.
chemin
+
dossierFichier
nomFichier
=
chemin
[
chemin
.
rfind
(
"/"
)
+
1
:]
print
(
"Chemin fichier : "
,
cheminFichier
)
print
(
"Dossier Fichier : "
,
dossierFichier
)
print
(
"NomFichier :"
,
nomFichier
)
#
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
))
...
...
@@ -591,6 +597,8 @@ class Utils:
def
get_commit_pour_une_version
(
idContenu
,
version
):
print
(
"Je veux récupérer le commit associé à la version "
,
version
,
"pour le contenu "
,
idContenu
)
if
version
==
Utils
.
get_version_courante
(
idContenu
):
courante
=
Utils
.
statdb
.
contenu
.
find_one
({
"id"
:
idContenu
})[
"versionEnCours"
]
return
courante
[
"commit"
]
...
...
@@ -622,29 +630,6 @@ class Utils:
Utils
.
statdb
.
demandesPub
.
update_one
({
"id"
:
int
(
idPublication
)},
{
"$set"
:
{
"etat"
:
"refus"
}})
# Utils.statdb.demandesPub.update_one({"id": 1}, {"$set": {"etat": "refus"}})
## listing de toutes les mises a jour possibles pour les tiers d'un auteur
# @param auteur l'auteur en cours
@
staticmethod
def
liste_maj_tiers
(
auteur
):
# on cherche toutes les versions en cours dans les tiers et on compare avec celles de la banque
# Trouver un moyen de sauvegarder le fait qu'une maj ait été refusée.
tiers
=
Utils
.
get_contenus_tiers
(
auteur
)
for
(
id
,
version
)
in
tiers
:
versionCourante
=
Utils
.
get_version_courante
(
id
[
"contenu"
])
if
version
[
"version"
]
<
versionCourante
:
if
not
Utils
.
is_maj_refusee
(
auteur
,
id
[
"contenu"
],
versionCourante
):
print
(
"Contenu : "
,
id
[
"contenu"
],
" version actuelle : "
,
version
[
"version"
],
"version maj : "
,
versionCourante
)
print
(
"Mise à jour possible"
)
print
(
"Voulez vous la faire (O / N)"
)
choix
=
input
()
if
choix
==
'O'
:
Utils
.
maj_tiers
(
id
[
"contenu"
],
versionCourante
,
auteur
)
print
(
"Mise à jour effectuée"
)
else
:
Utils
.
maj_tiers
(
id
[
"contenu"
],
versionCourante
,
auteur
,
True
)
print
(
"Mise à jour refusée"
)
## mettre à jour un favori
# @param idContenu l'id du favori
# @param versionContenu la version du favori
...
...
@@ -674,11 +659,10 @@ class Utils:
# @param versionMaj la version de la mise à jour potentielle
@
staticmethod
def
is_maj_refusee
(
auteur
,
idContenu
,
versionMaj
):
print
(
"print"
)
compteur
=
Utils
.
statdb
.
utilisateur
.
find
({
"nom"
:
auteur
}
and
{
"majRejetees"
:
{
"$elemMatch"
:
{
"$elemMatch"
:
{
"contenu"
:
idContenu
,
"version"
:
versionMaj
}}}})
.
count
()
!=
0
print
(
"Compteur : "
,
compteur
)
#
print("Compteur : ", compteur)
return
compteur
## Fonction globale de gestion de la recherche sur contenu
...
...
@@ -771,3 +755,9 @@ class Utils:
@
staticmethod
def
get_auteur_demande_publication
(
idPub
):
return
Utils
.
statdb
.
demandesPub
.
find_one
({
"id"
:
idPub
})[
"auteurDemande"
]
## Fonction qui permet de savoir si un contenu en cours à fait l'objet d'une demande de publication
# @param idEnCours l'id du contenu en cours
@
staticmethod
def
is_en_cours_demande
(
idEnCours
,
auteur
):
return
Utils
.
statdb
.
demandesPub
.
find
({
"id"
:
idEnCours
}
and
{
"auteurDemande"
:
auteur
})
.
count
()
!=
0
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