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
3 years ago
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")
...
...
This diff is collapsed.
Click to expand it.
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
...
...
This diff is collapsed.
Click to expand it.
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
This diff is collapsed.
Click to expand it.
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