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
ec4d1b6b
Commit
ec4d1b6b
authored
Apr 28, 2021
by
Jérémie Passerat
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Suppression d'un contenu en cours favori lorsque qu'il est 'forké'
parent
5bcc6504
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
66 additions
and
43 deletions
+66
-43
Main.py
Main.py
+1
-0
Menu.py
Menu.py
+23
-17
Utils.py
Utils.py
+42
-26
No files found.
Main.py
View file @
ec4d1b6b
...
...
@@ -56,3 +56,4 @@ Menu()
#from UtilsGit import UtilsGit
#UtilsGit.changerVersionCommit("/home/passerat/Stage/Squelette/dossierContenu1", "master")
#print (Utils.isFavoriDeAuteur("Auteur 2", 1))
\ No newline at end of file
Menu.py
View file @
ec4d1b6b
from
Utils
import
Utils
import
os
## Classe Menu
# Affichage principal de l'application du squelette
# Toutes les interactions utilisateur sont effectuées ici
...
...
@@ -30,17 +29,19 @@ class Menu:
print
(
"3 : Auteur 3"
)
print
(
"Votre choix : "
)
choix
=
(
input
())
if
choix
==
'p'
:
Utils
.
toutPeter
()
self
.
menuDeBase
()
if
choix
.
isdigit
():
choix
=
Utils
.
switchAuteur
(
int
(
choix
))
if
choix
!=
"Auteur inconnu"
:
auteur
=
Utils
.
switchAuteur
(
int
(
choix
))
if
auteur
!=
"Auteur inconnu"
:
if
Utils
.
presenceUtilisateur
(
choix
):
self
.
auteurEnCours
=
choix
if
Utils
.
presenceUtilisateur
(
auteur
):
self
.
auteurEnCours
=
auteur
self
.
menuDesActions
()
else
:
print
(
"Mal"
)
## Menu affiché une fois un compte valide sélectionné
...
...
@@ -64,7 +65,6 @@ class Menu:
if
choix
.
isdigit
():
self
.
switchActions
(
int
(
choix
))
## Permet de récupérer l'action désirée par l'utilisateur
def
switchActions
(
self
,
argument
):
...
...
@@ -259,7 +259,7 @@ class Menu:
# on charge la fonction de "suppression" d'un contenu en fonction de la saisie de l'utilisateur
if
choix
.
isdigit
():
print
(
"Le contenu choisi a "
,
int
(
choix
),
"favoris liés"
)
if
Utils
.
sumContenuEnFavori
(
int
(
choix
))
>
0
:
if
Utils
.
existeEnFavori
(
int
(
choix
))
:
Utils
.
supprimerContenu
(
int
(
choix
))
self
.
consulterPanier
()
else
:
...
...
@@ -291,10 +291,10 @@ class Menu:
print
(
"Le contenu choisi a "
,
int
(
choix
),
"favoris liés. Sa version associée est : "
,
favoris
[
int
(
choix
)])
Utils
.
supprimerFavori
(
int
(
choix
),
self
.
auteurEnCours
,
favoris
[
int
(
choix
)])
print
(
"Le favori "
,
int
(
choix
),
" a été supprimé"
)
print
(
"nombre : "
,
Utils
.
sumContenu
EnFavori
(
int
(
choix
)))
print
(
"nombre : "
,
Utils
.
existe
EnFavori
(
int
(
choix
)))
print
(
"anonyme : "
,
Utils
.
isAnonyme
(
int
(
choix
)))
if
Utils
.
sumContenuEnFavori
(
int
(
choix
))
==
0
and
Utils
.
isAnonyme
(
int
(
choix
)):
if
Utils
.
existeEnFavori
(
int
(
choix
))
and
Utils
.
isAnonyme
(
int
(
choix
)):
Utils
.
aneantirContenu
(
int
(
choix
))
print
(
"Le contenu "
,
int
(
choix
),
" a été définitivement supprimé"
)
...
...
@@ -417,19 +417,18 @@ class Menu:
print
(
"action :"
,
action
)
print
(
"action c :"
,
action
==
'c'
)
idContenu
=
Utils
.
getIdContenuAssocieAUnEnCours
(
int
(
id
))
print
(
"id contenu associé : "
,
idContenu
)
print
(
"id contenu associé : "
,
idContenu
)
# affiche le contenu courant du fichier
if
action
==
'c'
:
print
(
"je suis dans action c"
)
Utils
.
changerVersion
(
idContenu
,
0
,
Utils
.
getBrancheContenuEnCours
(
idContenu
))
#exit(0)
#
exit(0)
Utils
.
affichage
(
Utils
.
getCheminDuContenu
(
idContenu
))
#print("Uoi")
#
print("Uoi")
elif
action
==
'm'
:
Utils
.
changerVersion
(
idContenu
,
0
,
Utils
.
getBrancheContenuEnCours
(
idContenu
))
...
...
@@ -439,11 +438,18 @@ class Menu:
Utils
.
supprimerContenuEnCours
(
int
(
id
))
elif
action
==
'v'
:
self
.
validerModification
(
int
(
id
))
Utils
.
supprimerContenuEnCours
(
int
(
id
))
elif
action
==
'n'
:
chemin
=
Utils
.
getCheminDuContenu
(
Utils
.
getIdContenuAssocieAUnEnCours
(
int
(
id
)))
contenu_associe
=
Utils
.
getIdContenuAssocieAUnEnCours
(
int
(
id
))
chemin
=
Utils
.
getCheminDuContenu
(
contenu_associe
)
Utils
.
creerNouveauContenu
(
chemin
,
self
.
auteurEnCours
,
id
)
self
.
auteurEnCours
,
id
)
Utils
.
supprimerContenuEnCours
(
int
(
id
))
if
Utils
.
isFavoriDeAuteur
(
self
.
auteurEnCours
,
contenu_associe
):
versionFavori
=
Utils
.
getVersionFavoriById
(
contenu_associe
,
self
.
auteurEnCours
)
Utils
.
supprimerFavori
(
contenu_associe
,
self
.
auteurEnCours
,
versionFavori
)
self
.
consulterPanier
()
elif
action
==
'q'
:
self
.
menuDesActions
()
...
...
@@ -464,4 +470,4 @@ class Menu:
else
:
print
(
"Modification indirecte -> demande de publication"
)
print
(
"Je demande à l'auteur "
,
auteur
,
"de valider ma demande de proposition"
)
#self.consulterEnCours()
# supprimer favori
Utils.py
View file @
ec4d1b6b
...
...
@@ -79,7 +79,7 @@ class Utils:
os
.
system
(
"cp "
+
Utils
.
chemin
+
nomFichier
+
" "
+
cheminFichier
+
nomFichier
)
commit
=
UtilsGit
.
commit
(
cheminFichier
,
nomFichier
,
"Version 1"
)
print
(
"commit : "
,
commit
)
print
(
"commit : "
,
commit
)
Utils
.
statdb
.
contenu
.
insert_one
(
{
"id"
:
max_id
+
1
,
"auteur"
:
auteur
,
"note"
:
randrange
(
0
,
10
,
1
),
...
...
@@ -91,7 +91,6 @@ class Utils:
"tags"
:
{
"1"
:
"tag1"
,
"2"
:
"tag1"
,
"3"
:
"tag1"
,
"4"
:
"tag1"
,
"5"
:
"tag1"
}})
print
(
"Le contenu a bien été ajouté pour l'utilisateur "
,
auteur
)
## Consultation de tous les contenus publics :
# Si panier est égal à True, on sort les contenus de l'auteur
# Si panier est égal à False, on sort toutes les questions sauf celles de l'auteur
...
...
@@ -254,7 +253,7 @@ class Utils:
# @param auteur l'utilisateur désirant modifier la question
# @param isEnCours Vrai si modification d'un contenu en cours
@
staticmethod
def
modifierContenu
(
idContenu
,
auteur
,
enCours
=
False
):
def
modifierContenu
(
idContenu
,
auteur
,
enCours
=
False
):
# le chemin du fichier restera tjrs le même
contenu
=
Utils
.
statdb
.
contenu
.
find_one
({
"id"
:
int
(
idContenu
)})
...
...
@@ -289,12 +288,12 @@ class Utils:
ecart
=
2
else
:
ecart
=
1
repertoire
=
chemin
[:
chemin
.
rfind
(
"/"
)
+
1
]
nomFichier
=
chemin
[
chemin
.
rfind
(
"/"
)
+
1
:]
repertoire
=
chemin
[:
chemin
.
rfind
(
"/"
)
+
1
]
nomFichier
=
chemin
[
chemin
.
rfind
(
"/"
)
+
1
:]
print
(
"nomFichier :"
,
nomFichier
)
print
(
"chemin :"
,
chemin
)
#exit(0)
print
(
"nomFichier :"
,
nomFichier
)
print
(
"chemin :"
,
chemin
)
#
exit(0)
if
modifPremiere
:
# on créée une nouvelle branche et on va dedans
...
...
@@ -306,16 +305,16 @@ class Utils:
# 2. on remplace le dernier caractère du fichier en l'incrémentant de 1
with
open
(
chemin
,
"r+"
)
as
fichier
:
#pos = fichier.tell()
#pos = pos - 1
#
pos = fichier.tell()
#
pos = pos - 1
fichier
.
seek
(
0
,
2
)
# seek to end of file; f.seek(0, os.SEEK_END) is legal
fichier
.
seek
(
fichier
.
tell
()
-
ecart
,
0
)
fichier
.
truncate
()
fichier
.
write
(
str
(
version
+
1
))
#fichier.seek(0, 2)
#print("pront:", fichier.read())
#
fichier.seek(0, 2)
#
print("pront:", fichier.read())
fichier
.
close
()
Utils
.
affichage
(
chemin
)
UtilsGit
.
commit
(
repertoire
,
nomFichier
,
"modification"
)
...
...
@@ -331,7 +330,7 @@ class Utils:
## Mettre à jour un contenu (branche principale)
@
staticmethod
def
majContenu
(
chemin
,
idContenu
,
nomBranche
):
def
majContenu
(
chemin
,
idContenu
,
nomBranche
):
repertoire
=
chemin
[:
chemin
.
rfind
(
"/"
)
+
1
]
fin
=
Utils
.
affichage
(
chemin
)
...
...
@@ -347,20 +346,31 @@ class Utils:
"$set"
:
{
"versionEnCours"
:
{
"numero"
:
version
,
"date"
:
datetime
.
now
()
.
strftime
(
"
%
d/
%
m/
%
y"
),
"popularite"
:
0
,
"commit"
:
idCommit
}}})
## Supprimer une évaluation (définitif)
# @param idEval l'id de l'évaluation à supprimer
@
staticmethod
def
supprimerEvaluation
(
idEval
):
Utils
.
statdb
.
evaluation
.
delete_one
({
"idEval"
:
idEval
})
## Fonction pour savoir
combien de favoris actifs d'un contenu existent
## Fonction pour savoir
si un contenu est favori chez qqun
# @param idContenu
@
staticmethod
def
sumContenu
EnFavori
(
idContenu
):
def
existe
EnFavori
(
idContenu
):
return
Utils
.
statdb
.
utilisateur
.
find
(
{
"favoris"
:
{
"$elemMatch"
:
{
"$elemMatch"
:
{
"contenu"
:
idContenu
}}}})
.
count
()
{
"favoris"
:
{
"$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
getVersionFavoriById
(
idContenu
,
auteur
):
favoris
=
(
Utils
.
statdb
.
utilisateur
.
find_one
({
"nom"
:
auteur
})[
"favoris"
])
print
(
type
(
favoris
))
for
i
in
range
(
len
(
favoris
)):
fav
=
favoris
[
i
]
if
int
(
fav
[
0
][
"contenu"
])
==
idContenu
:
return
int
(
fav
[
1
][
"version"
])
else
:
return
0
## Suppression définitive d'un contenu
@
staticmethod
...
...
@@ -430,7 +440,7 @@ class Utils:
@
staticmethod
def
getBrancheContenuEnCours
(
idContenuEnCours
):
# id_contenu = Utils.getIdContenuAssocieAUnEnCours(idContenuEnCours)
# id_contenu = Utils.getIdContenuAssocieAUnEnCours(idContenuEnCours)
return
Utils
.
statdb
.
encours
.
find_one
({
"idContenuEC"
:
idContenuEnCours
})[
"branche"
]
## A NE JAMAIS UTILISER SANS REFLECHIR
...
...
@@ -449,22 +459,22 @@ class Utils:
## creer un contenu à partir d'un contenu en cours
@
staticmethod
def
creerNouveauContenu
(
chemin
,
auteurEnCours
,
idContenuEnCours
):
print
(
"chemin : "
,
chemin
)
print
(
"chemin : "
,
chemin
)
# hard codé pour l'exemple, sera adaptatif dans le futur
max_id
=
3
dossierFichier
=
"dossierContenu"
+
str
(
max_id
)
+
"/"
cheminFichier
=
Utils
.
chemin
+
dossierFichier
nomFichier
=
chemin
[
chemin
.
rfind
(
"/"
)
+
1
:]
nomFichier
=
chemin
[
chemin
.
rfind
(
"/"
)
+
1
:]
print
(
"Chemin fichier : "
,
cheminFichier
)
print
(
"Dossier Fichier : "
,
dossierFichier
)
print
(
"NomFichier :"
,
nomFichier
)
print
(
"Dossier Fichier : "
,
dossierFichier
)
print
(
"NomFichier :"
,
nomFichier
)
Path
(
cheminFichier
)
.
mkdir
(
parents
=
True
,
exist_ok
=
True
)
os
.
system
(
"cp "
+
chemin
+
" "
+
cheminFichier
)
os
.
system
(
"mv "
+
cheminFichier
+
nomFichier
+
" "
+
cheminFichier
+
"Contenu"
+
str
(
max_id
))
#exit(0)
os
.
system
(
"cp "
+
chemin
+
" "
+
cheminFichier
)
os
.
system
(
"mv "
+
cheminFichier
+
nomFichier
+
" "
+
cheminFichier
+
"Contenu"
+
str
(
max_id
))
#
exit(0)
commit
=
UtilsGit
.
commit
(
cheminFichier
,
"Contenu"
+
str
(
max_id
),
"Version 1"
)
Utils
.
statdb
.
contenu
.
insert_one
(
...
...
@@ -478,3 +488,9 @@ class Utils:
print
(
"Le contenu a bien été ajouté pour l'utilisateur "
,
auteurEnCours
)
Utils
.
supprimerContenuEnCours
(
idContenuEnCours
)
## fonction qui permet de savoir si un contenu fait partie des favoris 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
isFavoriDeAuteur
(
auteur
,
idContenu
):
return
Utils
.
getVersionFavoriById
(
idContenu
,
auteur
)
!=
0
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment