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