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
248a1674
Commit
248a1674
authored
May 06, 2021
by
Jérémie Passerat
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Correction erreur menu maj et mise en place de la 'duplication' de fichier pour la consultation
parent
b7c07746
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
301 additions
and
229 deletions
+301
-229
Main.py
Main.py
+6
-2
Menu.py
Menu.py
+171
-127
Utils.py
Utils.py
+123
-100
auteur_1Contenu1
auteur_1Contenu1
+1
-0
No files found.
Main.py
View file @
248a1674
...
...
@@ -30,5 +30,9 @@ from Utils import Utils
# 4. Lancer Main.py, soit directement à la main, soit via un IDE configuré pour ça (environnement virtual utilisable) \n
Menu
()
# Utils.initialiseMongo()
# Utils.getContenuFichiers()
# Utils.initialise_mongo()
# Utils.tout_peter()
# Utils.creer_auteur_si_besoin()
# Utils.ajouter_contenu("Contenu1", "Auteur 1")
# Utils.detruire_fichier_tmp(1, "Auteur 1")
Menu.py
View file @
248a1674
...
...
@@ -16,9 +16,9 @@ class Menu:
def
__init__
(
self
):
# obligatoire à faire au début
Utils
.
initialise
M
ongo
()
Utils
.
initialise
_m
ongo
()
# si les auteurs n'existent pas on les créée
Utils
.
creer
AuteurSiB
esoin
()
Utils
.
creer
_auteur_si_b
esoin
()
self
.
menu_de_base
()
## 1er menu affiché et proposé à l'utilisateur
...
...
@@ -35,13 +35,13 @@ class Menu:
choix
=
(
input
())
if
choix
==
'p'
:
Utils
.
tout
P
eter
()
Utils
.
tout
_p
eter
()
self
.
menu_de_base
()
if
choix
.
isdigit
():
auteur
=
Utils
.
switch
A
uteur
(
int
(
choix
))
auteur
=
Utils
.
switch
_a
uteur
(
int
(
choix
))
if
auteur
!=
"Auteur inconnu"
:
if
Utils
.
presence
U
tilisateur
(
auteur
):
if
Utils
.
presence
_u
tilisateur
(
auteur
):
self
.
auteur_en_cours
=
auteur
self
.
menu_des_actions
()
else
:
...
...
@@ -98,7 +98,7 @@ class Menu:
os
.
system
(
'clear'
)
print
(
"Bonjour "
,
self
.
auteur_en_cours
)
print
(
"Menu des contenus personnels :"
)
questions
=
Utils
.
consulterContenu
(
self
.
auteur_en_cours
,
True
)
questions
=
Utils
.
get_contenus
(
self
.
auteur_en_cours
,
True
)
print
(
f
"Voici les contenus que vous avez {str(questions.count())} : "
)
print
(
"Actions disponibles : "
)
print
(
"n : Ajouter un contenu"
)
...
...
@@ -106,7 +106,7 @@ class Menu:
if
questions
.
count
()
>
0
:
self
.
afficher_contenus
(
questions
)
print
(
"c : consulter le détail d'un contenu"
)
print
(
"m : modifier un contenu"
)
#
print("m : modifier un contenu")
print
(
"s : supprimer un contenu"
)
print
(
"Pour manipuler un contenu, Saisir le numero du contenu puis l'action désirée (par ex : 1c)"
)
...
...
@@ -122,7 +122,7 @@ class Menu:
if
choix
==
'q'
:
self
.
menu_contenus_personnels
()
elif
choix
.
isdigit
()
and
1
<=
int
(
choix
)
<=
2
:
Utils
.
ajouter
C
ontenu
(
"Contenu"
+
str
(
choix
),
self
.
auteur_en_cours
)
Utils
.
ajouter
_c
ontenu
(
"Contenu"
+
str
(
choix
),
self
.
auteur_en_cours
)
print
(
"Le contenu "
,
choix
,
" a été ajouté dans vos contenus personnels"
)
sleep
(
1
)
self
.
menu_contenus_personnels
()
...
...
@@ -136,18 +136,34 @@ class Menu:
id
=
int
(
choix
[:
len
(
choix
)
-
1
])
action
=
choix
[
len
(
choix
)
-
1
:]
if
action
==
'c'
:
print
(
"Voici le contenu de votre contenu n°"
,
id
)
Utils
.
affichage
(
Utils
.
getCheminDuContenu
(
id
))
os
.
system
(
'clear'
)
print
(
"Bonjour "
,
self
.
auteur_en_cours
)
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))
print
(
"Appuyer sur q pour revenir en arrière : "
)
input
()
print
(
"Appuyez sur m pour modifier le fichier ou sur q pour quitter"
)
choix
=
input
()
if
choix
==
'q'
:
Utils
.
detruire_fichier_tmp
(
id
,
self
.
auteur_en_cours
)
self
.
menu_contenus_personnels
()
elif
action
==
'm'
:
self
.
modifierC
ontenu
(
id
)
elif
choix
==
'm'
:
self
.
modifier_c
ontenu
(
id
)
print
(
"Modification ouverte sur ce contenu"
)
print
(
"Appuyer sur q pour revenir en arrière : "
)
input
()
self
.
menu_contenus_en_cours
()
else
:
print
(
"Choix non disponible, appuyer sur q pour revenir en arrière : "
)
input
()
self
.
menu_contenus_personnels
()
# 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'
:
if
Utils
.
existe_en_tiers
(
id
):
Utils
.
renier_contenu
(
id
)
...
...
@@ -171,13 +187,13 @@ class Menu:
print
(
"nom :"
,
elt
[
"fichier"
],
" - v"
,
elt
[
"versionEnCours"
][
"numero"
],
" - du"
,
elt
[
"versionEnCours"
][
"date"
])
def
modifier
C
ontenu
(
self
,
id_contenu
):
def
modifier
_c
ontenu
(
self
,
id_contenu
):
os
.
system
(
'clear'
)
print
(
"Bonjour "
,
self
.
auteur_en_cours
)
print
(
"Vous avez choisi de modifier le contenu "
,
id_contenu
)
Utils
.
modifier
C
ontenu
(
id_contenu
,
self
.
auteur_en_cours
)
Utils
.
modifier
_c
ontenu
(
id_contenu
,
self
.
auteur_en_cours
)
print
(
"Un contenu en cours a été créé, appuyer sur c pour accéder aux contenus en cours ou q pour revenir au menu des actions"
)
choix
=
input
()
...
...
@@ -199,11 +215,10 @@ class Menu:
if
len
(
Utils
.
get_contenus_tiers
(
self
.
auteur_en_cours
)):
for
(
id
,
version
)
in
Utils
.
get_contenus_tiers
(
self
.
auteur_en_cours
):
self
.
afficher_contenus_tiers
(
Utils
.
get
ContenuavecIdEtV
ersion
(
int
(
id
[
'contenu'
]),
int
(
version
[
'version'
])),
Utils
.
get
_contenu_avec_id_et_v
ersion
(
int
(
id
[
'contenu'
]),
int
(
version
[
'version'
])),
int
(
version
[
'version'
]))
print
(
"c : consulter le détail d'un tiers"
)
print
(
"m : modifier un tiers"
)
print
(
"s : supprimer un tiers"
)
print
(
"Pour manipuler un contenu, Saisir le numero du contenu puis l'action désirée (par ex : 1c)"
)
choix
=
input
()
...
...
@@ -213,21 +228,32 @@ class Menu:
id
=
int
(
choix
[:
len
(
choix
)
-
1
])
action
=
choix
[
len
(
choix
)
-
1
:]
if
action
==
'c'
:
print
(
"Voici le contenu de votre contenu n°"
,
id
)
Utils
.
affichage
(
Utils
.
getCheminDuContenu
(
id
))
os
.
system
(
'clear'
)
print
(
"Bonjour "
,
self
.
auteur_en_cours
)
version_tiers
=
Utils
.
get_version_tiers_avec_id
(
id
,
self
.
auteur_en_cours
)
print
(
"Voici le détail de votre tiers n°"
,
id
,
"dans sa version "
,
version_tiers
)
Utils
.
changer_version
(
id
,
version_tiers
)
Utils
.
consulter_un_contenu
(
id
,
self
.
auteur_en_cours
)
# Utils.affichage(Utils.get_chemin_du_contenu(id))
print
(
"Appuyer sur q pour revenir en arrière : "
)
input
()
self
.
menu_contenus_tiers
()
elif
action
==
'm'
:
self
.
modifierContenu
(
id
)
print
(
"Appuyez sur m pour modifier le fichier ou sur q pour quitter"
)
choix
=
input
()
if
choix
==
'q'
:
Utils
.
detruire_fichier_tmp
(
id
,
self
.
auteur_en_cours
)
self
.
menu_contenus_personnels
()
elif
choix
==
'm'
:
self
.
modifier_contenu
(
id
)
print
(
"Modification ouverte sur ce tiers"
)
print
(
"Appuyer sur q pour revenir en arrière : "
)
input
()
self
.
menu_contenus_en_cours
()
else
:
print
(
"Choix non disponible, appuyer sur q pour revenir en arrière : "
)
input
()
self
.
menu_contenus_personnels
()
elif
action
==
's'
:
Utils
.
supprimer_tiers
(
id
,
self
.
auteur_en_cours
,
Utils
.
get
VersionFavoriByI
d
(
id
,
self
.
auteur_en_cours
))
Utils
.
get
_version_tiers_avec_i
d
(
id
,
self
.
auteur_en_cours
))
print
(
"Contenu Tiers supprimé"
)
print
(
"Appuyer sur q pour revenir en arrière : "
)
input
()
...
...
@@ -273,35 +299,39 @@ class Menu:
id
=
int
(
choix
[:
len
(
choix
)
-
1
])
action
=
choix
[
len
(
choix
)
-
1
:]
if
action
==
'c'
:
Utils
.
changerVersion
(
id
,
0
,
Utils
.
getBrancheContenuEnCours
(
id
))
Utils
.
affichage
(
Utils
.
getCheminDuContenu
(
id
))
Utils
.
changer_version
(
id
,
0
,
Utils
.
get_branche_contenu_en_cours
(
id
))
Utils
.
consulter_un_contenu
(
id
,
self
.
auteur_en_cours
)
print
(
"Appuyez sur m pour modifier le fichier ou sur q pour quitter"
)
choix
=
input
()
if
choix
==
'q'
:
self
.
menu_contenus_en_cours
()
elif
choix
==
'm'
:
Utils
.
modifier_contenu
(
id
,
self
.
auteur_en_cours
,
True
)
print
(
"Appuyer sur q pour revenir en arrière : "
)
input
()
self
.
menu_contenus_en_cours
()
elif
action
==
'm'
:
Utils
.
changerVersion
(
id
,
0
,
Utils
.
getBrancheContenuEnCours
(
id
))
Utils
.
modifierContenu
(
id
,
self
.
auteur_en_cours
,
True
)
Utils
.
affichage
(
Utils
.
getCheminDuContenu
(
id
))
print
(
"Appuyer sur q pour revenir en arrière : "
)
else
:
print
(
"Action inconnue, Appuyer sur q pour revenir en arrière : "
)
input
()
self
.
menu_contenus_en_cours
()
elif
action
==
's'
:
Utils
.
supprimer
ContenuEnC
ours
(
int
(
id
))
Utils
.
supprimer
_contenu_en_c
ours
(
int
(
id
))
print
(
"Appuyer sur q pour revenir en arrière : "
)
input
()
self
.
menu_contenus_en_cours
()
elif
action
==
'v'
:
self
.
valider_modification
(
int
(
id
))
Utils
.
supprimerContenuEnCours
(
int
(
id
))
Utils
.
supprimer_contenu_en_cours
(
int
(
id
))
print
(
"La demande de validation du contenu a été effectuée"
)
print
(
"Appuyer sur q pour revenir en arrière : "
)
input
()
self
.
menu_contenus_en_cours
()
elif
action
==
'n'
:
print
(
"Is favori :"
,
Utils
.
is_
favori
_auteur
(
self
.
auteur_en_cours
,
id
))
if
not
Utils
.
is_
favori
_auteur
(
self
.
auteur_en_cours
,
id
):
contenu_associe
=
Utils
.
get
IdContenuAssocieAUnEnC
ours
(
int
(
id
))
chemin
=
Utils
.
get
CheminDuC
ontenu
(
contenu_associe
)
Utils
.
creer
NouveauC
ontenu
(
chemin
,
print
(
"Is favori :"
,
Utils
.
is_
tiers
_auteur
(
self
.
auteur_en_cours
,
id
))
if
not
Utils
.
is_
tiers
_auteur
(
self
.
auteur_en_cours
,
id
):
contenu_associe
=
Utils
.
get
_id_contenu_associe_a_un_en_c
ours
(
int
(
id
))
chemin
=
Utils
.
get
_chemin_du_c
ontenu
(
contenu_associe
)
Utils
.
creer
_nouveau_c
ontenu
(
chemin
,
self
.
auteur_en_cours
,
id
)
else
:
print
(
"Vous n'avez pas le droit de faire directement cette action sur un contenu tiers"
)
...
...
@@ -328,7 +358,7 @@ class Menu:
print
(
"Bonjour "
,
self
.
auteur_en_cours
)
print
(
f
"Il y a {len(Utils.get_contenus_tiers(self.auteur_en_cours))} contenus présents en banque (excepteption des votres): "
)
questions
=
Utils
.
consulterContenu
(
self
.
auteur_en_cours
,
False
)
questions
=
Utils
.
get_contenus
(
self
.
auteur_en_cours
,
False
)
print
(
"La banque possède actuellement"
,
questions
.
count
(),
" contenu(s)"
)
print
(
"Actions disponibles : "
)
print
(
"q : revenir au menu des actions"
)
...
...
@@ -346,10 +376,11 @@ class Menu:
id
=
int
(
choix
[:
len
(
choix
)
-
1
])
action
=
choix
[
len
(
choix
)
-
1
:]
if
action
==
'c'
:
Utils
.
changer
Version
(
id
,
0
,
Utils
.
getBrancheContenuEnC
ours
(
id
))
Utils
.
affichage
(
Utils
.
getCheminDuContenu
(
id
)
)
Utils
.
changer
_version
(
id
,
0
,
Utils
.
get_branche_contenu_en_c
ours
(
id
))
Utils
.
consulter_un_contenu
(
id
,
self
.
auteur_en_cours
)
print
(
"Appuyer sur q pour revenir en arrière : "
)
input
()
Utils
.
detruire_fichier_tmp
(
id
,
self
.
auteur_en_cours
)
self
.
menu_contenus_banque
()
elif
action
==
't'
:
Utils
.
mettre_contenu_en_tiers
(
id
,
self
.
auteur_en_cours
)
...
...
@@ -372,16 +403,16 @@ class Menu:
def
valider_modification
(
self
,
idContenuEnCours
):
# on récupère l'auteur et l'id du contenu "de base" associé à la modif
auteur
=
Utils
.
get
AuteurContenuEnC
ours
(
idContenuEnCours
)
idContenu
=
Utils
.
get
IdContenuAssocieAUnEnC
ours
(
idContenuEnCours
)
branche
=
Utils
.
get
BrancheContenuEnC
ours
(
idContenuEnCours
)
auteur
=
Utils
.
get
_auteur_contenu_en_c
ours
(
idContenuEnCours
)
idContenu
=
Utils
.
get
_id_contenu_associe_a_un_en_c
ours
(
idContenuEnCours
)
branche
=
Utils
.
get
_branche_contenu_en_c
ours
(
idContenuEnCours
)
if
auteur
==
self
.
auteur_en_cours
:
chemin
=
Utils
.
get
CheminDuC
ontenu
(
idContenu
)
Utils
.
maj
C
ontenu
(
chemin
,
idContenu
,
branche
)
chemin
=
Utils
.
get
_chemin_du_c
ontenu
(
idContenu
)
Utils
.
maj
_c
ontenu
(
chemin
,
idContenu
,
branche
)
else
:
Utils
.
demande
P
ublication
(
idContenu
,
idContenuEnCours
,
self
.
auteur_en_cours
,
auteur
)
Utils
.
demande
_p
ublication
(
idContenu
,
idContenuEnCours
,
self
.
auteur_en_cours
,
auteur
)
## Fonction globale de gestion des évaluations
def
gestion_des_evaluations
(
self
):
...
...
@@ -417,7 +448,7 @@ class Menu:
input
()
self
.
gestion_des_evaluations
()
elif
action
==
's'
:
Utils
.
supprimer
E
valuation
(
id
)
Utils
.
supprimer
_e
valuation
(
id
)
print
(
"Evaluation supprimée"
)
print
(
"Appuyer sur q pour revenir en arrière : "
)
input
()
...
...
@@ -439,10 +470,10 @@ class Menu:
print
(
"Bonjour "
,
self
.
auteur_en_cours
)
# on charge tous les contenus présents
questions
=
Utils
.
consulterTousLesContenu
()
questions
=
Utils
.
get_tous_les_contenus
()
if
questions
.
count
()
>
0
:
self
.
afficher_contenus_banque
(
questions
)
print
(
"Nombre de contenus à ajouter : (entre 1 et "
,
Utils
.
get
MaxIdC
ontenus
(),
print
(
"Nombre de contenus à ajouter : (entre 1 et "
,
Utils
.
get
_max_id_c
ontenus
(),
"), q pour revenir en arrière"
)
choix
=
(
input
())
questions
=
list
()
...
...
@@ -454,7 +485,7 @@ class Menu:
for
i
in
range
(
int
(
choix
)):
print
(
"Contenu "
,
i
+
1
,
", donner l'id du contenu :"
)
questions
.
append
(
int
(
input
()))
Utils
.
creer
E
valuation
(
questions
,
self
.
auteur_en_cours
)
Utils
.
creer
_e
valuation
(
questions
,
self
.
auteur_en_cours
)
## Fonction de gestion des mises à jour
def
menu_de_maj
(
self
):
...
...
@@ -468,6 +499,7 @@ class Menu:
if
choix
==
'q'
:
self
.
menu_des_actions
()
if
choix
==
'd'
:
os
.
system
(
'clear'
)
print
(
"Vous aurez, ici, les maj possibles de contenu perso et de contenu tiers"
)
print
(
"Actions disponibles : "
)
print
(
"q : revenir au menu des mises à jour"
)
...
...
@@ -478,7 +510,10 @@ class Menu:
self
.
menu_de_maj
()
elif
choix
==
'p'
:
# mise à jour de contenus personnels
publications
=
Utils
.
getDemandesPub
(
self
.
auteur_en_cours
,
False
)
os
.
system
(
'clear'
)
publications
=
Utils
.
get_demandes_pub
(
self
.
auteur_en_cours
,
False
)
print
(
"Vous avez "
,
publications
.
count
(),
"mises à jour disponibles"
)
if
publications
.
count
()
>
0
:
for
pub
in
publications
:
etat
=
pub
[
"etat"
]
# pour raison de simplicité, les demandes de publication refusées sont invisibles (dans un futur proche elle seront visibles mais non interactives)
...
...
@@ -501,7 +536,7 @@ class Menu:
if
action
==
'o'
or
action
==
'n'
:
id
=
choix
[
0
:
len
(
choix
)
-
1
]
choix
=
choix
[
len
(
choix
)
-
1
:]
Utils
.
gererDemandeP
ub
(
id
,
action
)
Utils
.
gerer_demande_p
ub
(
id
,
action
)
if
choix
==
'o'
:
decision
=
"acceptée"
else
:
...
...
@@ -512,16 +547,23 @@ class Menu:
input
()
self
.
menu_de_maj
()
elif
action
==
'c'
:
Utils
.
changerVersion
(
id
,
0
,
Utils
.
getBrancheContenuEnC
ours
(
id
))
Utils
.
changer_version
(
id
,
0
,
Utils
.
get_branche_contenu_en_c
ours
(
id
))
print
(
"Voici le contenu associé à la demande de publication : "
)
Utils
.
affichage
(
Utils
.
getCheminDuContenu
(
Utils
.
getIdContenuAssocieAUnEnCours
(
id
)))
branche_contenu_en_cours
=
Utils
.
get_branche_contenu_en_cours
(
id
)
Utils
.
changer_version
(
Utils
.
get_id_contenu_associe_a_un_en_cours
(
id
),
0
,
branche_contenu_en_cours
)
Utils
.
consulter_un_contenu
(
id
,
self
.
auteur_en_cours
)
print
(
"Appuyer sur q pour revenir en arrière : "
)
input
()
Utils
.
detruire_fichier_tmp
(
id
,
self
.
auteur_en_cours
)
self
.
menu_de_maj
()
else
:
print
(
"Action inconnue, Appuyer sur q pour revenir en arrière : "
)
input
()
self
.
menu_de_maj
()
else
:
print
(
"Appuyer sur q pour revenir en arrière : "
)
input
()
self
.
menu_de_maj
()
elif
choix
==
't'
:
# mise à jour de contenus favoris
...
...
@@ -532,9 +574,10 @@ class Menu:
nbre_favoris
=
len
(
Utils
.
get_contenus_tiers
(
self
.
auteur_en_cours
))
print
(
"L'auteur possède "
,
nbre_favoris
,
" favoris"
)
if
nbre_favoris
>
0
:
Utils
.
listeMajFavoris
(
self
.
auteur_en_cours
)
print
(
"Vous n'avez aucun favori, appuyez sur q pour revenir en arriere"
)
Utils
.
liste_maj_tiers
(
self
.
auteur_en_cours
)
print
(
"Appuyez sur q pour revenir en arriere"
)
else
:
print
(
"Vous n'avez aucun favori possédant une mise à jour, appuyez sur q pour revenir en arriere"
)
input
()
self
.
menu_de_maj
()
...
...
@@ -544,8 +587,9 @@ class Menu:
self
.
menu_de_maj
()
if
choix
==
'p'
:
print
(
"Vous aurez, ici, les suites des demandes de publication des en_cours"
)
publications
=
Utils
.
getDemandesPub
(
self
.
auteur_en_cours
,
True
)
os
.
system
(
'clear'
)
publications
=
Utils
.
get_demandes_pub
(
self
.
auteur_en_cours
,
True
)
print
(
"Vous avez"
,
publications
.
count
(),
" demandes de publication en cours"
)
for
pub
in
publications
:
id_pub
=
pub
[
"id"
]
print
(
"auteur d'origine :"
,
pub
[
"auteurContenu"
],
"idDemandePublication : "
,
pub
[
"id"
],
"date : "
,
...
...
@@ -558,20 +602,20 @@ class Menu:
print
(
"q : remettre ce choix à plus tard"
)
choix
=
input
()
if
choix
==
'n'
:
id_en_cours
=
Utils
.
get
IdContenuEnCoursAssocieAUneP
ublication
(
id_pub
)
contenu_associe
=
Utils
.
get
IdContenuAssocieAUnEnC
ours
(
id_en_cours
)
chemin
=
Utils
.
get
CheminDuC
ontenu
(
contenu_associe
)
id_en_cours
=
Utils
.
get
_id_contenu_en_cours_associe_a_une_p
ublication
(
id_pub
)
contenu_associe
=
Utils
.
get
_id_contenu_associe_a_un_en_c
ours
(
id_en_cours
)
chemin
=
Utils
.
get
_chemin_du_c
ontenu
(
contenu_associe
)
Utils
.
creer
NouveauC
ontenu
(
chemin
,
Utils
.
creer
_nouveau_c
ontenu
(
chemin
,
self
.
auteur_en_cours
,
id_pub
)
if
Utils
.
is_
favori
_auteur
(
self
.
auteur_en_cours
,
contenu_associe
):
versionFavori
=
Utils
.
get
VersionFavoriByI
d
(
contenu_associe
,
self
.
auteur_en_cours
)
if
Utils
.
is_
tiers
_auteur
(
self
.
auteur_en_cours
,
contenu_associe
):
versionFavori
=
Utils
.
get
_version_tiers_avec_i
d
(
contenu_associe
,
self
.
auteur_en_cours
)
Utils
.
supprimer_tiers
(
contenu_associe
,
self
.
auteur_en_cours
,
versionFavori
)
print
(
"Vous venez de créer un nouveau contenu"
)
sleep
(
2
)
self
.
menu_contenus_personnels
()
elif
choix
==
's'
:
Utils
.
supprimer
ContenuEnCours
(
Utils
.
getIdContenuEnCoursAssocieAUneP
ublication
(
pub
[
"id"
]))
Utils
.
supprimer
_contenu_en_cours
(
Utils
.
get_id_contenu_en_cours_associe_a_une_p
ublication
(
pub
[
"id"
]))
elif
choix
==
'q'
:
self
.
menu_de_maj
()
print
(
"Appuyer sur q pour revenir en arrière : "
)
...
...
Utils.py
View file @
248a1674
...
...
@@ -25,7 +25,7 @@ class Utils:
## Filtrage de la saisie utilisateur pour le choix d'un auteur
# @param Le numéro d'auteur choisi
@
staticmethod
def
switch
A
uteur
(
argument
):
def
switch
_a
uteur
(
argument
):
switcher
=
{
1
:
"Auteur 1"
,
2
:
"Auteur 2"
,
...
...
@@ -40,7 +40,7 @@ class Utils:
# maj -> update_one, update_many and replace_one
# suppression -> delete_one and delete_many
@
staticmethod
def
initialise
M
ongo
():
def
initialise
_m
ongo
():
client
=
MongoClient
(
'localhost'
,
27017
)
## extraction d'une base de données. Si elle n'existe pas, elle esst créée
...
...
@@ -49,15 +49,15 @@ class Utils:
## Création d'utilisateur
# @param nomUtilisateur Le nom de l'utilisateur
@
staticmethod
def
ajouter
U
tilisateur
(
nomUtilisateur
):
def
ajouter
_u
tilisateur
(
nomUtilisateur
):
Utils
.
statdb
.
utilisateur
.
insert_one
(
{
"nom"
:
nomUtilisateur
,
"note"
:
randrange
(
0
,
10
,
1
),
"
favori
s"
:
[]})
{
"nom"
:
nomUtilisateur
,
"note"
:
randrange
(
0
,
10
,
1
),
"
tier
s"
:
[]})
## Vérification de la présence d'un utilisateur en base
# @param nomUtilisateurLe nom de l'utilisateur
# @return True si Utilisateur présent, False sinon
@
staticmethod
def
presence
U
tilisateur
(
nomUtilisateur
):
def
presence
_u
tilisateur
(
nomUtilisateur
):
# print("Je suis dans présence utilisateur pour ", nomUtilisateur)
nmbre
=
Utils
.
statdb
.
utilisateur
.
find
({
"nom"
:
nomUtilisateur
})
# print("Et j'en ai trouvé : ", nmbre.count())
...
...
@@ -68,9 +68,9 @@ class Utils:
# @param nomFichier le nom du fichier importé
# @param auteur l'auteur qui importe le fichier
@
staticmethod
def
ajouter
C
ontenu
(
nomFichier
,
auteur
):
def
ajouter
_c
ontenu
(
nomFichier
,
auteur
):
max_id
=
Utils
.
get
MaxIdC
ontenus
()
max_id
=
Utils
.
get
_max_id_c
ontenus
()
if
max_id
is
None
:
max_id
=
0
...
...
@@ -91,7 +91,7 @@ class Utils:
"versionEnCours"
:
{
"numero"
:
1
,
"date"
:
datetime
.
now
()
.
strftime
(
"
%
d/
%
m/
%
y"
),
"popularite"
:
0
,
"commit"
:
commit
},
"tags_banque_fixes"
:
[
"tag1"
,
"tag2"
,
"tag3"
,
"tag4"
,
"tag5"
],
"tags_banque_libres"
:
[
"tagl1"
,
"tagl2"
,
"tagl3"
,
"tagl4"
,
"tagl5"
]})
"tags_banque_libres"
:
[
"tagl1"
,
"tagl2"
,
"tagl3"
,
"tagl4"
,
"tagl5"
]
,
"type"
:
" "
,
"source"
:
" "
})
print
(
"Le contenu a bien été ajouté pour l'utilisateur "
,
auteur
)
...
...
@@ -102,7 +102,7 @@ class Utils:
# @return les contenus de l'auteur ou tous les autres
@
staticmethod
def
consulterContenu
(
auteur
,
panier
=
False
):
def
get_contenus
(
auteur
,
panier
=
False
):
if
panier
:
return
Utils
.
statdb
.
contenu
.
find
({
"auteur"
:
auteur
})
else
:
...
...
@@ -114,7 +114,7 @@ class Utils:
# @return tous les contenus présents
@
staticmethod
def
consulterTousLesContenu
():
def
get_tous_les_contenus
():
return
Utils
.
statdb
.
contenu
.
find
()
## Suppression d'un contenu (dissociation avec son auteur)
...
...
@@ -139,7 +139,8 @@ class Utils:
def
mettre_contenu_en_tiers
(
idContenu
,
auteur
):
# print("Le contenu est dans la version ", Utils.getVersionContenuavecId(idContenu))
Utils
.
statdb
.
utilisateur
.
update
({
"nom"
:
auteur
},
{
"$push"
:
{
"favoris"
:
[{
"contenu"
:
int
(
idContenu
)},
{
"version"
:
Utils
.
getVersionContenuavecId
(
idContenu
)}]}})
"$push"
:
{
"tiers"
:
[{
"contenu"
:
int
(
idContenu
)},
{
"version"
:
Utils
.
get_version_contenu_avec_id
(
idContenu
)}]}})
## 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
...
...
@@ -147,12 +148,12 @@ class Utils:
@
staticmethod
def
supprimer_tiers
(
idContenu
,
auteur
,
version
):
Utils
.
statdb
.
utilisateur
.
update
({
"nom"
:
auteur
},
{
"$pull"
:
{
"
favori
s"
:
[{
"contenu"
:
idContenu
},
{
"version"
:
version
}]}})
{
"$pull"
:
{
"
tier
s"
:
[{
"contenu"
:
idContenu
},
{
"version"
:
version
}]}})
## Permet de savoir si un contenu possède un auteur légitime
# @param idContenu l'identifiant du contenu
@
staticmethod
def
is
A
nonyme
(
idContenu
):
def
is
_a
nonyme
(
idContenu
):
print
(
"Is anonyme : "
,
Utils
.
statdb
.
contenu
.
find_one
({
"id"
:
idContenu
})[
"auteur"
])
return
Utils
.
statdb
.
contenu
.
find_one
({
"id"
:
idContenu
})[
"auteur"
]
==
"Aucun"
...
...
@@ -162,10 +163,10 @@ class Utils:
# @return Le contenu lié à l'id
@
staticmethod
def
get
ContenuavecIdEtV
ersion
(
idContenu
,
version
):
def
get
_contenu_avec_id_et_v
ersion
(
idContenu
,
version
):
# a décommenter quand git sera actif
Utils
.
changer
V
ersion
(
idContenu
,
version
,
""
)
Utils
.
changer
_v
ersion
(
idContenu
,
version
,
""
)
return
Utils
.
statdb
.
contenu
.
find_one
({
"id"
:
idContenu
})
# return Utils.statdb.contenu.find_one({"$and": [
# {"id": idContenu},
...
...
@@ -176,14 +177,14 @@ class Utils:
## récupérer la version courante d'un contenu
# @param idContenu l'id du contenu concerné
@
staticmethod
def
get
VersionC
ourante
(
idContenu
):
def
get
_version_c
ourante
(
idContenu
):
return
Utils
.
statdb
.
contenu
.
find_one
({
"id"
:
idContenu
})[
"versionEnCours"
][
"numero"
]
## Récupérer un contenu à partir de son identifiant
# @param idContenu l'id associé au contenu
# @return Le contenu lié à l'id
@
staticmethod
def
get
Contenuavec
Id
(
idContenu
):
def
get
_contenu_avec_
Id
(
idContenu
):
# Id unique donc find_one utilisable
return
Utils
.
statdb
.
contenu
.
find_one
({
"id"
:
idContenu
})
...
...
@@ -191,15 +192,15 @@ class Utils:
# @param idContenu l'id associé au contenu
# @return La version en cours du contenu lié à l'id
@
staticmethod
def
get
VersionContenuavecI
d
(
idContenu
):
def
get
_version_contenu_avec_i
d
(
idContenu
):
# print("Je veux le contenu : ", int(idContenu))
return
int
(
Utils
.
get
Contenuavec
Id
(
int
(
idContenu
))[
"versionEnCours"
][
"numero"
])
return
int
(
Utils
.
get
_contenu_avec_
Id
(
int
(
idContenu
))[
"versionEnCours"
][
"numero"
])
## Récupérer l'id maximal (pour les contenus)
# permet de s'assurer que les id de contenu soient uniques
@
staticmethod
def
get
MaxIdC
ontenus
():
def
get
_max_id_c
ontenus
():
## Fonction permettant de récupérer l'id max présent en base (pour pouvoir incrémenter un nouveau contenu).
element
=
Utils
.
statdb
.
contenu
.
find
()
.
sort
(
"id"
,
-
1
)
.
limit
(
1
)
...
...
@@ -211,7 +212,7 @@ class Utils:
# permet de s'assurer que les id de contenu soient uniques
@
staticmethod
def
get
MaxIdE
valuations
():
def
get
_max_id_e
valuations
():
## Fonction permettant de récupérer l'id max présent en base (pour pouvoir incrémenter un nouveau contenu).
element
=
Utils
.
statdb
.
evaluation
.
find
()
.
sort
(
"idEval"
,
-
1
)
.
limit
(
1
)
...
...
@@ -223,7 +224,7 @@ class Utils:
# permet de s'assurer que les id de contenu soient uniques
@
staticmethod
def
get
MaxIdContenusEnC
ours
():
def
get
_max_id_contenus_en_c
ours
():
## Fonction permettant de récupérer l'id max présent en base (pour pouvoir incrémenter un nouveau contenu).
element
=
Utils
.
statdb
.
encours
.
find
()
.
sort
(
"idContenuEC"
,
-
1
)
.
limit
(
1
)
...
...
@@ -235,7 +236,7 @@ class Utils:
# permet de s'assurer que les id de demande de publication soient uniques
@
staticmethod
def
get
MaxIdDemandesDeP
ublication
():
def
get
_max_id_demandes_de_p
ublication
():
## Fonction permettant de récupérer l'id max présent en base (pour pouvoir incrémenter un nouveau contenu).
element
=
Utils
.
statdb
.
demandesPub
.
find
()
.
sort
(
"id"
,
-
1
)
.
limit
(
1
)
...
...
@@ -243,25 +244,23 @@ class Utils:
print
(
"id : "
,
elt
)
return
int
(
elt
[
"id"
])
## Récupérer les
favori
s d'un utilisateur
## Récupérer les
tier
s d'un utilisateur
# @param auteur le nom de l'utilisateur
# @return les
favori
s de l'utilisateur 'auteur'
# @return les
tier
s de l'utilisateur 'auteur'
@
staticmethod
def
get_contenus_tiers
(
auteur
):
return
Utils
.
statdb
.
utilisateur
.
find_one
({
"nom"
:
auteur
})[
"favoris"
]
return
Utils
.
statdb
.
utilisateur
.
find_one
({
"nom"
:
auteur
})[
"tiers"
]
## Créer une évaluation
# @param contenus les numeros des contenus associés à l'évaluation
# @auteur l'auteur qui créée l'évaluation
@
staticmethod
def
creer
E
valuation
(
contenus
,
auteur
):
def
creer
_e
valuation
(
contenus
,
auteur
):
# création de l'évaluation
max_id_eval
=
Utils
.
get
MaxIdE
valuations
()
max_id_eval
=
Utils
.
get
_max_id_e
valuations
()
if
max_id_eval
is
None
:
max_id_eval
=
0
...
...
@@ -277,26 +276,26 @@ class Utils:
# @return les évaluations de l'auteur
@
staticmethod
def
get_evaluations
(
auteur
,
id
=
0
):
def
get_evaluations
(
auteur
,
id
=
0
):
if
id
==
0
:
return
Utils
.
statdb
.
evaluation
.
find
({
"auteur"
:
auteur
})
else
:
return
Utils
.
statdb
.
evaluation
.
find
({
"auteur"
:
auteur
}
and
{
"idEval"
:
id
})
return
Utils
.
statdb
.
evaluation
.
find
({
"auteur"
:
auteur
}
and
{
"idEval"
:
id
})
## Modifier un contenu
# @param idContenu contenu à modifier
# @param auteur l'utilisateur désirant modifier la question
# @param isEnCours Vrai si modification d'un contenu en cours
@
staticmethod
def
modifier
C
ontenu
(
idContenu
,
auteur
,
enCours
=
False
):
def
modifier
_c
ontenu
(
idContenu
,
auteur
,
enCours
=
False
):
# le chemin du fichier restera tjrs le même
contenu
=
Utils
.
statdb
.
contenu
.
find_one
({
"id"
:
int
(
idContenu
)})
Utils
.
modification
(
Utils
.
chemin
+
contenu
[
"fichier"
],
idContenu
,
auteur
,
not
enCours
)
Utils
.
modification_fichier
(
Utils
.
chemin
+
contenu
[
"fichier"
],
idContenu
,
auteur
,
not
enCours
)
@
staticmethod
## affichage d'un contenu de fichier
# @param chemin le fichier à afficher
def
affichage
(
chemin
):
with
open
(
chemin
,
"r"
)
as
fichier
:
texte
=
fichier
.
read
()
...
...
@@ -305,6 +304,29 @@ class Utils:
print
(
"Le fichier (v"
,
int
(
texte
[
-
1
]),
") : "
+
texte
)
return
texte
@
staticmethod
## consulter un contenu
# @param id l'id du contenu à consulter
# @param auteur l'auteur désirant consulter le contenu
def
consulter_un_contenu
(
id
,
auteur
):
# Créer un répertoire au nom de l'auteur (ou l'utiliser si il existe déja)
auteur
=
auteur
.
lower
()
.
replace
(
" "
,
"_"
)
repertoire_auteur
=
Utils
.
chemin
+
auteur
+
"/"
Path
(
repertoire_auteur
)
.
mkdir
(
parents
=
True
,
exist_ok
=
True
)
# Copier le fichier lié au contenu dans ce répertoire
chemin
=
Utils
.
get_chemin_du_contenu
(
id
)
nom_fichier
=
chemin
[
chemin
.
rfind
(
"/"
)
+
1
:]
os
.
system
(
"cp '"
+
chemin
+
"' '"
+
repertoire_auteur
+
nom_fichier
+
"'"
)
Utils
.
affichage
(
chemin
)
## détruire un fichier temporaire
@
staticmethod
def
detruire_fichier_tmp
(
id
,
auteur
):
auteur
=
auteur
.
lower
()
.
replace
(
" "
,
"_"
)
+
"/"
chemin
=
Utils
.
get_chemin_du_contenu
(
id
)
nom_fichier
=
chemin
[
chemin
.
rfind
(
"/"
)
+
1
:]
os
.
system
(
"rm '"
+
Utils
.
chemin
+
auteur
+
nom_fichier
+
"'"
)
## modification (directe ici) d'un fichier
# @param chemin chemin d'acces au contenu
# @param id id du contenu
...
...
@@ -312,7 +334,7 @@ class Utils:
# @param modifPremiere permet de déterminer si on est sur une premiere modification du contenu ou si on remodifie un contenu en cours
@
staticmethod
def
modification
(
chemin
,
idContenu
,
auteur
,
modifPremiere
=
True
):
def
modification
_fichier
(
chemin
,
idContenu
,
auteur
,
modifPremiere
=
True
):
print
(
"Le chemin du fichier est : "
,
chemin
)
...
...
@@ -356,7 +378,7 @@ class Utils:
# 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
:
max_id_encours
=
Utils
.
get
MaxIdContenusEnC
ours
()
max_id_encours
=
Utils
.
get
_max_id_contenus_en_c
ours
()
if
max_id_encours
is
None
:
max_id_encours
=
0
Utils
.
statdb
.
encours
.
insert_one
(
...
...
@@ -365,7 +387,7 @@ class Utils:
## Mettre à jour un contenu (branche principale)
@
staticmethod
def
maj
C
ontenu
(
chemin
,
idContenu
,
nomBranche
):
def
maj
_c
ontenu
(
chemin
,
idContenu
,
nomBranche
):
repertoire
=
chemin
[:
chemin
.
rfind
(
"/"
)
+
1
]
fin
=
Utils
.
affichage
(
chemin
)
...
...
@@ -384,7 +406,7 @@ class Utils:
## Supprimer une évaluation (définitif)
# @param idEval l'id de l'évaluation à supprimer
@
staticmethod
def
supprimer
E
valuation
(
idEval
):
def
supprimer
_e
valuation
(
idEval
):
Utils
.
statdb
.
evaluation
.
delete_one
({
"idEval"
:
idEval
})
## Fonction pour savoir si un contenu est favori chez qqun
...
...
@@ -392,22 +414,22 @@ class Utils:
@
staticmethod
def
existe_en_tiers
(
idContenu
):
return
Utils
.
statdb
.
utilisateur
.
find
(
{
"
favori
s"
:
{
"$elemMatch"
:
{
"$elemMatch"
:
{
"contenu"
:
idContenu
}}}})
.
count
()
!=
0
{
"
tier
s"
:
{
"$elemMatch"
:
{
"$elemMatch"
:
{
"contenu"
:
idContenu
}}}})
.
count
()
!=
0
## On entre l'id d'un contenu favori pour un auteur, on veut récupérer en sortie la version associée
# @param idContenu
@
staticmethod
def
get
VersionFavoriByI
d
(
idContenu
,
auteur
):
favoris
=
(
Utils
.
statdb
.
utilisateur
.
find_one
({
"nom"
:
auteur
})[
"favori
s"
])
for
i
in
range
(
len
(
favori
s
)):
fav
=
favori
s
[
i
]
if
int
(
fav
[
0
][
"contenu"
])
==
idContenu
:
return
int
(
fav
[
1
][
"version"
])
def
get
_version_tiers_avec_i
d
(
idContenu
,
auteur
):
tiers
=
(
Utils
.
statdb
.
utilisateur
.
find_one
({
"nom"
:
auteur
})[
"tier
s"
])
for
i
in
range
(
len
(
tier
s
)):
tmp
=
tier
s
[
i
]
if
int
(
tmp
[
0
][
"contenu"
])
==
idContenu
:
return
int
(
tmp
[
1
][
"version"
])
return
0
## Suppression définitive d'un contenu
@
staticmethod
def
aneantir
C
ontenu
(
idContenu
):
def
aneantir
_c
ontenu
(
idContenu
):
Utils
.
statdb
.
contenu
.
delete_one
({
"id"
:
idContenu
})
## permet de récupérer tous les contenus en cours pour un auteur
...
...
@@ -421,17 +443,17 @@ class Utils:
# @param idContenuEnCours l'id du contenu en cours de modification
@
staticmethod
def
get
IdContenuAssocieAUnEnC
ours
(
idContenuEnCours
):
def
get
_id_contenu_associe_a_un_en_c
ours
(
idContenuEnCours
):
print
(
"L'id en cours que j'ai est"
,
idContenuEnCours
,
" - "
,
type
(
idContenuEnCours
))
return
Utils
.
statdb
.
encours
.
find_one
({
"idContenuEC"
:
int
(
idContenuEnCours
)})[
"reference"
]
@
staticmethod
def
get
IdContenuAssocieAUneP
ublication
(
idDdePublication
):
def
get
_id_contenu_associe_a_une_p
ublication
(
idDdePublication
):
# print("L'id en cours que j'ai est", idContenuEnCours, " - ", type(idContenuEnCours))
return
Utils
.
statdb
.
demandesPub
.
find_one
({
"id"
:
int
(
idDdePublication
)})[
"idContenu"
]
@
staticmethod
def
get
IdContenuEnCoursAssocieAUneP
ublication
(
idDdePublication
):
def
get
_id_contenu_en_cours_associe_a_une_p
ublication
(
idDdePublication
):
print
(
"L'id en cours que j'ai est"
,
idDdePublication
,
" - "
,
type
(
idDdePublication
))
return
Utils
.
statdb
.
demandesPub
.
find_one
({
"id"
:
int
(
idDdePublication
)})[
"idContenuEnCours"
]
...
...
@@ -439,7 +461,7 @@ class Utils:
# @param idContenu l'id du contenu
@
staticmethod
def
get
CheminDuC
ontenu
(
idContenu
):
def
get
_chemin_du_c
ontenu
(
idContenu
):
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)
...
...
@@ -447,17 +469,17 @@ class Utils:
# @param version la version du contenu désirée
# @param nomBranche changement direct de branche -> utile pour naviguer parmi les versions "en cours"
@
staticmethod
def
changer
V
ersion
(
idContenu
,
version
,
nomBranche
=
""
):
def
changer
_v
ersion
(
idContenu
,
version
,
nomBranche
=
""
):
# si la version courante est la 1 on a pas besoin de faire la suite
if
Utils
.
get
VersionC
ourante
(
idContenu
)
!=
1
:
if
Utils
.
get
_version_c
ourante
(
idContenu
)
!=
1
:
# on recupere le chemin du fichier associé au contenu (dans les 2 cas)
chemin
=
Utils
.
get
CheminDuC
ontenu
(
idContenu
)
chemin
=
Utils
.
get
_chemin_du_c
ontenu
(
idContenu
)
repertoire
=
chemin
[:
chemin
.
rfind
(
"/"
)
+
1
]
if
version
!=
0
:
# on change le repertoire récupéré ci dessus dans la bonne version (si on travaille avec une version)
idCommit
=
Utils
.
get
CommitPourUneV
ersion
(
idContenu
,
version
)
idCommit
=
Utils
.
get
_commit_pour_une_v
ersion
(
idContenu
,
version
)
UtilsGit
.
changerVersionCommit
(
repertoire
,
idCommit
)
else
:
UtilsGit
.
changerVersionBranche
(
repertoire
,
nomBranche
)
...
...
@@ -465,41 +487,42 @@ class Utils:
## supprimer un contenu en cours
# @param idContenuEnCours id du contenu a supprimer
@
staticmethod
def
supprimer
ContenuEnC
ours
(
idContenuEnCours
):
def
supprimer
_contenu_en_c
ours
(
idContenuEnCours
):
Utils
.
statdb
.
encours
.
delete_one
({
"idContenuEC"
:
idContenuEnCours
})
## récupérer l'auteur initial d'un contenu en cours (peut être l'auteur effectuant la modification ou non)
# @param idContenuEnCours l'id du contenu en cours de modification
@
staticmethod
def
get
AuteurContenuEnC
ours
(
idContenuEnCours
):
id_contenu
=
Utils
.
get
IdContenuAssocieAUnEnC
ours
(
idContenuEnCours
)
def
get
_auteur_contenu_en_c
ours
(
idContenuEnCours
):
id_contenu
=
Utils
.
get
_id_contenu_associe_a_un_en_c
ours
(
idContenuEnCours
)
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
get
BrancheContenuEnC
ours
(
idContenuEnCours
):
def
get
_branche_contenu_en_c
ours
(
idContenuEnCours
):
# id_contenu = Utils.getIdContenuAssocieAUnEnCours(idContenuEnCours)
return
Utils
.
statdb
.
encours
.
find_one
({
"idContenuEC"
:
idContenuEnCours
})[
"branche"
]
## A NE JAMAIS UTILISER SANS REFLECHIR
# Suppression integrale de la base de données & recreation des 3 auteurs
@
staticmethod
def
tout
P
eter
():
def
tout
_p
eter
():
Utils
.
statdb
.
contenu
.
delete_many
({})
Utils
.
statdb
.
utilisateur
.
delete_many
({})
Utils
.
statdb
.
evaluation
.
delete_many
({})
Utils
.
statdb
.
encours
.
delete_many
({})
Utils
.
statdb
.
demandesPub
.
delete_many
({})
os
.
system
(
"rm -rf dossierContenu*/"
)
Utils
.
ajouterUtilisateur
(
"Auteur 1"
)
Utils
.
ajouterUtilisateur
(
"Auteur 2"
)
Utils
.
ajouterUtilisateur
(
"Auteur 3"
)
os
.
system
(
"rm -rf auteur_*/"
)
Utils
.
ajouter_utilisateur
(
"Auteur 1"
)
Utils
.
ajouter_utilisateur
(
"Auteur 2"
)
Utils
.
ajouter_utilisateur
(
"Auteur 3"
)
## creer un contenu à partir d'un contenu en cours
@
staticmethod
def
creer
NouveauC
ontenu
(
chemin
,
auteurEnCours
,
idContenuEnCours
):
def
creer
_nouveau_c
ontenu
(
chemin
,
auteurEnCours
,
idContenuEnCours
):
print
(
"chemin : "
,
chemin
)
# hard codé pour l'exemple, sera adaptatif dans le futur
...
...
@@ -528,13 +551,13 @@ class Utils:
"tags"
:
{
"1"
:
"tag1"
,
"2"
:
"tag1"
,
"3"
:
"tag1"
,
"4"
:
"tag1"
,
"5"
:
"tag1"
}})
print
(
"Le contenu a bien été ajouté pour l'utilisateur "
,
auteurEnCours
)
Utils
.
supprimer
ContenuEnC
ours
(
idContenuEnCours
)
Utils
.
supprimer
_contenu_en_c
ours
(
idContenuEnCours
)
## fonction qui permet de savoir si un contenu fait partie des
favori
s d'un auteur
## fonction qui permet de savoir si un contenu fait partie des
tier
s d'un auteur
# On fraude un peu en utilisant getVersionFavoriById -> si la sortie est à 0 ben le contenu n'est pas un favori
@
staticmethod
def
is_
favori
_auteur
(
auteur
,
idContenu
):
return
Utils
.
get
VersionFavoriByI
d
(
idContenu
,
auteur
)
!=
0
def
is_
tiers
_auteur
(
auteur
,
idContenu
):
return
Utils
.
get
_version_tiers_avec_i
d
(
idContenu
,
auteur
)
!=
0
## créer une demande de Publication à l'auteur d'origine
# @param idContenuEnCours la modification à soumettre
...
...
@@ -543,8 +566,8 @@ class Utils:
# @param auteur l'auteur du contenu d'origine
# ATTENTION, IL FAUDRA SUREMENT INSERER UN ID POUR PLUS DE FACILITE A MANIPULER
@
staticmethod
def
demande
P
ublication
(
idContenu
,
idContenuEnCours
,
auteurEnCours
,
auteur
):
max_id
=
Utils
.
get
MaxIdDemandesDeP
ublication
()
def
demande
_p
ublication
(
idContenu
,
idContenuEnCours
,
auteurEnCours
,
auteur
):
max_id
=
Utils
.
get
_max_id_demandes_de_p
ublication
()
if
max_id
is
None
:
max_id
=
0
Utils
.
statdb
.
demandesPub
.
insert_one
(
...
...
@@ -556,7 +579,7 @@ class Utils:
# @param auteur l'auteur concerné
# @param emises si true -> publications envoyées, si False, demandes recues
@
staticmethod
def
get
DemandesP
ub
(
auteur
,
emises
=
True
):
def
get
_demandes_p
ub
(
auteur
,
emises
=
True
):
if
emises
:
return
Utils
.
statdb
.
demandesPub
.
find
({
"auteurDemande"
:
auteur
})
else
:
...
...
@@ -566,7 +589,7 @@ class Utils:
# @param idContenu l'id du contenu manipulé
# @param version le numéro de version désiré
@
staticmethod
def
get
CommitPourUneV
ersion
(
idContenu
,
version
):
def
get
_commit_pour_une_v
ersion
(
idContenu
,
version
):
print
(
"Je veux récupérer le commit associé à la version "
,
version
,
"pour le contenu "
,
idContenu
)
historique
=
Utils
.
statdb
.
contenu
.
find_one
({
"id"
:
idContenu
})[
"historique"
]
for
elt
in
historique
:
...
...
@@ -578,15 +601,15 @@ class Utils:
# @param idPublication la publication concernée
# @param reponse la reponse donnée (0 / N)
@
staticmethod
def
gerer
DemandeP
ub
(
idPublication
,
reponse
):
def
gerer
_demande_p
ub
(
idPublication
,
reponse
):
if
reponse
==
'O'
:
print
(
"Publication acceptée"
)
id_en_cours
=
Utils
.
get
IdContenuEnCoursAssocieAUneP
ublication
(
idPublication
)
branche
=
Utils
.
get
BrancheContenuEnC
ours
(
id_en_cours
)
idContenu
=
Utils
.
get
IdContenuAssocieAUneP
ublication
(
idPublication
)
chemin
=
Utils
.
get
CheminDuC
ontenu
(
idContenu
)
Utils
.
maj
C
ontenu
(
chemin
,
idContenu
,
branche
)
Utils
.
supprimer
ContenuEnC
ours
(
id_en_cours
)
id_en_cours
=
Utils
.
get
_id_contenu_en_cours_associe_a_une_p
ublication
(
idPublication
)
branche
=
Utils
.
get
_branche_contenu_en_c
ours
(
id_en_cours
)
idContenu
=
Utils
.
get
_id_contenu_associe_a_une_p
ublication
(
idPublication
)
chemin
=
Utils
.
get
_chemin_du_c
ontenu
(
idContenu
)
Utils
.
maj
_c
ontenu
(
chemin
,
idContenu
,
branche
)
Utils
.
supprimer
_contenu_en_c
ours
(
id_en_cours
)
Utils
.
statdb
.
demandesPub
.
delete_one
({
"id"
:
int
(
idPublication
)})
else
:
print
(
"Publication refusée "
,
idPublication
)
...
...
@@ -595,25 +618,25 @@ 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
favori
s d'un auteur
## listing de toutes les mises a jour possibles pour les
tier
s d'un auteur
# @param auteur l'auteur en cours
@
staticmethod
def
liste
MajFavori
s
(
auteur
):
# on cherche toutes les versions en cours dans les
favori
s et on compare avec celles de la banque
def
liste
_maj_tier
s
(
auteur
):
# on cherche toutes les versions en cours dans les
tier
s et on compare avec celles de la banque
# Trouver un moyen de sauvegarder le fait qu'une maj ait été refusée.
favori
s
=
Utils
.
get_contenus_tiers
(
auteur
)
for
(
id
,
version
)
in
favori
s
:
versionCourante
=
Utils
.
get
VersionC
ourante
(
id
[
"contenu"
])
tier
s
=
Utils
.
get_contenus_tiers
(
auteur
)
for
(
id
,
version
)
in
tier
s
:
versionCourante
=
Utils
.
get
_version_c
ourante
(
id
[
"contenu"
])
if
version
[
"version"
]
<
versionCourante
:
# Utils.isMajRefusee(auteur, id["contenu"], versionCourante)
if
not
Utils
.
is
MajR
efusee
(
auteur
,
id
[
"contenu"
],
versionCourante
):
if
not
Utils
.
is
_maj_r
efusee
(
auteur
,
id
[
"contenu"
],
versionCourante
):
print
(
"Mise à jour possible"
)
print
(
"Voulez vous la faire (O / N)"
)
choix
=
input
()
if
choix
==
'O'
:
Utils
.
maj
Favori
(
id
[
"contenu"
],
versionCourante
,
auteur
)
Utils
.
maj
_tiers
(
id
[
"contenu"
],
versionCourante
,
auteur
)
else
:
Utils
.
maj
Favori
(
id
[
"contenu"
],
versionCourante
,
auteur
,
True
)
Utils
.
maj
_tiers
(
id
[
"contenu"
],
versionCourante
,
auteur
,
True
)
else
:
pass
...
...
@@ -622,18 +645,18 @@ class Utils:
# @param versionContenu la version du favori
# @param auteur l'auteur concerné
# @param refuse True = maj acceptée, False = maj refusée
def
maj
Favori
(
idFavori
,
idNouvelleVersion
,
auteur
,
refuse
=
False
):
def
maj
_tiers
(
idFavori
,
idNouvelleVersion
,
auteur
,
refuse
=
False
):
if
not
refuse
:
# on vire le précédent
Utils
.
statdb
.
utilisateur
.
update
({
"nom"
:
auteur
},
{
"$pull"
:
{
"
favori
s"
:
[{
"contenu"
:
idFavori
},
"
tier
s"
:
[{
"contenu"
:
idFavori
},
{
"version"
:
idNouvelleVersion
-
1
}]}})
# et on ajoute la version maj
Utils
.
statdb
.
utilisateur
.
update
({
"nom"
:
auteur
},
{
"$push"
:
{
"
favori
s"
:
[{
"contenu"
:
idFavori
},
{
"version"
:
idNouvelleVersion
}]}})
"
tier
s"
:
[{
"contenu"
:
idFavori
},
{
"version"
:
idNouvelleVersion
}]}})
else
:
Utils
.
statdb
.
utilisateur
.
update
({
"nom"
:
auteur
},
{
"$push"
:
{
...
...
@@ -644,7 +667,7 @@ class Utils:
# @param idContenu l'id du favori
# @param versionMaj la version de la mise à jour potentielle
@
staticmethod
def
is
MajR
efusee
(
auteur
,
idContenu
,
versionMaj
):
def
is
_maj_r
efusee
(
auteur
,
idContenu
,
versionMaj
):
print
(
"print"
)
compteur
=
Utils
.
statdb
.
utilisateur
.
find
({
"nom"
:
auteur
}
and
{
"majRejetees"
:
{
"$elemMatch"
:
{
"$elemMatch"
:
{
"contenu"
:
idContenu
,
...
...
@@ -656,10 +679,10 @@ class Utils:
# Très basique pour le moment elle permettra des recherches plus complexes prochainement
@
staticmethod
def
recherche
SurC
ontenu
(
action
,
texteRecherche
):
def
recherche
_sur_c
ontenu
(
action
,
texteRecherche
):
if
action
==
1
:
print
(
"Recherche pour l'auteur "
,
texteRecherche
)
if
Utils
.
presence
U
tilisateur
(
texteRecherche
):
if
Utils
.
presence
_u
tilisateur
(
texteRecherche
):
print
(
"J'ai"
,
Utils
.
statdb
.
contenu
.
find
({
"auteur"
:
texteRecherche
})
.
count
(),
"contenu(s) pour cet auteur"
)
else
:
...
...
@@ -685,7 +708,7 @@ class Utils:
from
nltk.tokenize
import
word_tokenize
## Fonction test permettant de récupérer le contenu des fichiers
@
staticmethod
def
get
ContenuF
ichiers
():
def
get
_contenu_f
ichiers
():
fichier1
=
"Contenu1"
fichier2
=
"Contenu2"
...
...
@@ -724,9 +747,9 @@ class Utils:
## Fonction permettant de détecter si les auteurs sont créés, et les créer si besoin
# (exclusive squelette)
@
staticmethod
def
creer
AuteurSiB
esoin
():
def
creer
_auteur_si_b
esoin
():
nmbreAuteurs
=
Utils
.
statdb
.
utilisateur
.
find
({})
.
count
()
if
not
nmbreAuteurs
:
Utils
.
ajouter
U
tilisateur
(
"Auteur 1"
)
Utils
.
ajouter
U
tilisateur
(
"Auteur 2"
)
Utils
.
ajouter
U
tilisateur
(
"Auteur 3"
)
Utils
.
ajouter
_u
tilisateur
(
"Auteur 1"
)
Utils
.
ajouter
_u
tilisateur
(
"Auteur 2"
)
Utils
.
ajouter
_u
tilisateur
(
"Auteur 3"
)
auteur_1Contenu1
0 → 100644
View file @
248a1674
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