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
74a34fc7
Commit
74a34fc7
authored
Aug 27, 2021
by
Jérémie Passerat
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Tests note ok
parent
f2868d89
Changes
4
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
273 additions
and
168 deletions
+273
-168
app.py
app.py
+12
-0
contenu_dao.py
modele/contenu_dao.py
+24
-0
test_flask_contenu.py
tests/test_flask_contenu.py
+73
-4
test_flask_demande_publication.py
tests/test_flask_demande_publication.py
+164
-164
No files found.
app.py
View file @
74a34fc7
...
...
@@ -604,6 +604,7 @@ class noter_contenu(Resource):
@
contenus
.
doc
(
params
=
{
'id_contenu'
:
"l'id du contenu déja noté"
})
@
contenus
.
doc
(
params
=
{
'version'
:
"la version du contenu concernée par la note "
})
@
contenus
.
doc
(
params
=
{
'auteur'
:
"l'auteur de la note"
})
@
contenus
.
doc
(
description
=
"recuperer la note donnée par un auteur à un contenu"
)
class
RecupererNoteDonneAUnContenu
(
Resource
):
@
contenus
.
response
(
200
,
"note du contenu"
)
@
jwt_required
()
...
...
@@ -612,6 +613,17 @@ class RecupererNoteDonneAUnContenu(Resource):
return
str
(
ContenuDao
()
.
recupererNoteContenu
(
id_contenu
[
"$oid"
],
request
.
args
.
get
(
"version"
),
request
.
args
.
get
(
"auteur"
))),
200
@
contenus
.
route
(
"/recupererNoteGlobale"
)
@
contenus
.
doc
(
params
=
{
'id_contenu'
:
"l'id du contenu "
})
@
contenus
.
doc
(
params
=
{
'version'
:
"la version du contenu concernée par la note "
})
@
contenus
.
doc
(
description
=
"recuperer la note globale d'un contenu (dans une version donnée"
)
class
RecupererNoteDonneAUnContenu
(
Resource
):
@
contenus
.
response
(
200
,
"note du contenu"
)
@
jwt_required
()
def
get
(
self
):
id_contenu
=
json
.
loads
(
request
.
args
.
get
(
"id_contenu"
))
return
str
(
ContenuDao
()
.
recupererNoteGlobaleContenu
(
id_contenu
[
"$oid"
],
request
.
args
.
get
(
"version"
))),
200
## récupérer le texte de la version en cours du contenu
@
contenus
.
route
(
"/getTexteContenu/<id_json>"
)
...
...
modele/contenu_dao.py
View file @
74a34fc7
...
...
@@ -218,6 +218,8 @@ class ContenuDao:
def
supprimer_contenu
(
self
,
id_contenu
):
import
shutil
if
self
.
existe_en_tiers
(
id_contenu
)
!=
0
:
self
.
dissocier_contenu
(
id_contenu
)
...
...
@@ -234,11 +236,13 @@ class ContenuDao:
# @param la note associee au contenu
def
supprimer_tiers
(
self
,
id_tiers
,
auteur
,
version
,
note
):
# on distingue le cas ou une note a été donnée ou non
if
note
==
"-"
:
self
.
base_donnees
.
utilisateur
.
update
({
"nom"
:
auteur
},
{
"$pull"
:
{
"tiers"
:
[{
"contenu"
:
ObjectId
(
id_tiers
)},
{
"version"
:
version
}]}})
else
:
self
.
base_donnees
.
utilisateur
.
update
({
"nom"
:
auteur
},
{
"$pull"
:
{
...
...
@@ -630,12 +634,32 @@ class ContenuDao:
# @param version la version du contenu notée
# @param auteur l'auteur qui met la note
def
recupererNoteContenu
(
self
,
id_contenu
,
version
,
auteur
):
if
type
(
id_contenu
)
==
str
:
id_contenu
=
ObjectId
(
id_contenu
)
if
type
(
version
)
==
str
:
version
=
int
(
version
)
contenus_tiers
=
self
.
base_donnees
.
utilisateur
.
find_one
({
"nom"
:
auteur
})[
"tiers"
]
for
contenu
in
contenus_tiers
:
if
len
(
contenu
)
==
3
and
contenu
[
0
][
"contenu"
]
==
id_contenu
and
contenu
[
1
][
"version"
]
==
version
:
return
json
.
dumps
(
contenu
[
2
][
"note"
])
return
'-'
## Fonction permettant de récupérer une note globale pour une version d'un contenu
# @param id_contenu l'id du contenu concerné
# @param version la version du contenu notée
def
recupererNoteGlobaleContenu
(
self
,
id_contenu
,
version
):
if
int
(
version
)
==
self
.
get_version_courante
(
id_contenu
):
return
self
.
base_donnees
.
contenu
.
find_one
({
"_id"
:
ObjectId
(
id_contenu
)})[
"versionEnCours"
][
"note"
]
\
/
self
.
base_donnees
.
contenu
.
find_one
({
"_id"
:
ObjectId
(
id_contenu
)})[
"versionEnCours"
][
"nbreNotes"
]
else
:
historique
=
self
.
base_donnees
.
contenu
.
find_one
({
"_id"
:
ObjectId
(
id_contenu
)})[
"historique"
]
return
"popapopapa"
## Fonction permettant de changer la moyenne d'une version d'un contenu à l'insertion d'une nouvelle note
# @param id_contenu l'id du contenu concerné
# @param version la version du contenu notée
...
...
tests/test_flask_contenu.py
View file @
74a34fc7
# from testUtils import *
#
from
testUtils
import
*
#
# def test_contenu(client):
# login = creerUtilisateurRandom(client)
# id = creerContenuRandom(client, login)
#
#
# # get contenu par id
# rv = client.get("/contenus/getContenu/" + json.dumps(id), headers=get_headers(client))
# assert rv.status_code == 200
...
...
@@ -61,7 +61,6 @@
# # on lui assigne un contenu
# id = creerContenuRandom(client, login)
#
#
# # on créée un second utilisateur quelconque et on lui donne le contenu ci dessus dans ses tiers
# loginDeux = creerUtilisateurRandom(client)
# data = {"id_tiers": json.dumps(id), "auteur": loginDeux, "version": 1}
...
...
@@ -118,3 +117,73 @@
# supprimerUtilisateur(client, login)
# supprimerUtilisateur(client, loginDeux)
# supprimerUtilisateur(client, loginTrois)
def
test_notation_contenu
(
client
):
# on créée un utilisateur quelconque
login
=
creerUtilisateurRandom
(
client
)
# on lui assigne un contenu
id
=
creerContenuRandom
(
client
,
login
)
# on créée un second utilisateur quelconque et on lui donne le contenu ci dessus dans ses tiers
loginDeux
=
creerUtilisateurRandom
(
client
)
data
=
{
"id_tiers"
:
json
.
dumps
(
id
),
"auteur"
:
loginDeux
,
"version"
:
1
}
rv
=
client
.
patch
(
"/contenus/ajouterTiers"
,
json
=
data
,
headers
=
get_headers
(
client
))
assert
rv
.
status_code
==
201
# login2 note le contenu
data
=
{
"auteur"
:
loginDeux
,
"id_contenu"
:
json
.
dumps
(
id
),
"version"
:
1
,
"note"
:
4
}
rv
=
client
.
patch
(
"/contenus/noterContenu"
,
json
=
data
,
headers
=
get_headers
(
client
))
assert
rv
.
status_code
==
200
# pour essai, on récupère la note juste mise
rv
=
client
.
get
(
"/contenus/recupererNote?id_contenu="
+
json
.
dumps
(
id
)
+
"&version=1&auteur="
+
loginDeux
,
headers
=
get_headers
(
client
))
assert
rv
.
status_code
==
200
# la note ressort en caracteres et non en entier
assert
json
.
loads
(
rv
.
data
)
==
'4'
# on teste la note globale du contenu
rv
=
client
.
get
(
"/contenus/recupererNoteGlobale?id_contenu="
+
json
.
dumps
(
id
)
+
"&version=1"
,
headers
=
get_headers
(
client
))
assert
rv
.
status_code
==
200
print
(
"popapopapa : "
,
json
.
loads
(
rv
.
data
))
assert
json
.
loads
(
rv
.
data
)
==
'4.0'
# un troisieme utilisateur note
# login2 note le contenu
loginTrois
=
creerUtilisateurRandom
(
client
)
data
=
{
"auteur"
:
loginTrois
,
"id_contenu"
:
json
.
dumps
(
id
),
"version"
:
1
,
"note"
:
3
}
rv
=
client
.
patch
(
"/contenus/noterContenu"
,
json
=
data
,
headers
=
get_headers
(
client
))
assert
rv
.
status_code
==
200
# pour essai, on récupère la note juste mise
rv
=
client
.
get
(
"/contenus/recupererNote?id_contenu="
+
json
.
dumps
(
id
)
+
"&version=1&auteur="
+
loginTrois
,
headers
=
get_headers
(
client
))
assert
rv
.
status_code
==
200
# la note ressort en caracteres et non en entier
assert
json
.
loads
(
rv
.
data
)
==
'3'
# on teste la note globale du contenu
rv
=
client
.
get
(
"/contenus/recupererNoteGlobale?id_contenu="
+
json
.
dumps
(
id
)
+
"&version=1"
,
headers
=
get_headers
(
client
))
assert
rv
.
status_code
==
200
print
(
"popapopapa : "
,
json
.
loads
(
rv
.
data
))
assert
json
.
loads
(
rv
.
data
)
==
'3.5'
# on supprime le tiers & le contenu
rv
=
client
.
delete
(
"/contenus/deleteTiers?id_tiers="
+
json
.
dumps
(
id
)
+
"&auteur="
+
loginDeux
+
"¬e=4"
,
headers
=
get_headers
(
client
))
assert
rv
.
status_code
==
200
# on supprime le tiers & le contenu
rv
=
client
.
delete
(
"/contenus/deleteTiers?id_tiers="
+
json
.
dumps
(
id
)
+
"&auteur="
+
loginTrois
+
"¬e=3"
,
headers
=
get_headers
(
client
))
assert
rv
.
status_code
==
200
rv
=
client
.
delete
(
"/contenus/deletePerso/"
+
json
.
dumps
(
id
),
headers
=
get_headers
(
client
))
assert
rv
.
status_code
==
200
# et les trois utilisateurs
supprimerUtilisateur
(
client
,
login
)
supprimerUtilisateur
(
client
,
loginDeux
)
supprimerUtilisateur
(
client
,
loginTrois
)
tests/test_flask_demande_publication.py
View file @
74a34fc7
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment