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
3 years ago
by
Jérémie Passerat
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Tests note ok
parent
f2868d89
Changes
4
Expand all
Hide 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):
...
@@ -604,6 +604,7 @@ class noter_contenu(Resource):
@
contenus
.
doc
(
params
=
{
'id_contenu'
:
"l'id du contenu déja noté"
})
@
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
=
{
'version'
:
"la version du contenu concernée par la note "
})
@
contenus
.
doc
(
params
=
{
'auteur'
:
"l'auteur de 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
):
class
RecupererNoteDonneAUnContenu
(
Resource
):
@
contenus
.
response
(
200
,
"note du contenu"
)
@
contenus
.
response
(
200
,
"note du contenu"
)
@
jwt_required
()
@
jwt_required
()
...
@@ -612,6 +613,17 @@ class RecupererNoteDonneAUnContenu(Resource):
...
@@ -612,6 +613,17 @@ class RecupererNoteDonneAUnContenu(Resource):
return
str
(
ContenuDao
()
.
recupererNoteContenu
(
id_contenu
[
"$oid"
],
request
.
args
.
get
(
"version"
),
return
str
(
ContenuDao
()
.
recupererNoteContenu
(
id_contenu
[
"$oid"
],
request
.
args
.
get
(
"version"
),
request
.
args
.
get
(
"auteur"
))),
200
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
## récupérer le texte de la version en cours du contenu
@
contenus
.
route
(
"/getTexteContenu/<id_json>"
)
@
contenus
.
route
(
"/getTexteContenu/<id_json>"
)
...
...
This diff is collapsed.
Click to expand it.
modele/contenu_dao.py
View file @
74a34fc7
...
@@ -218,6 +218,8 @@ class ContenuDao:
...
@@ -218,6 +218,8 @@ class ContenuDao:
def
supprimer_contenu
(
self
,
id_contenu
):
def
supprimer_contenu
(
self
,
id_contenu
):
import
shutil
import
shutil
if
self
.
existe_en_tiers
(
id_contenu
)
!=
0
:
if
self
.
existe_en_tiers
(
id_contenu
)
!=
0
:
self
.
dissocier_contenu
(
id_contenu
)
self
.
dissocier_contenu
(
id_contenu
)
...
@@ -234,11 +236,13 @@ class ContenuDao:
...
@@ -234,11 +236,13 @@ class ContenuDao:
# @param la note associee au contenu
# @param la note associee au contenu
def
supprimer_tiers
(
self
,
id_tiers
,
auteur
,
version
,
note
):
def
supprimer_tiers
(
self
,
id_tiers
,
auteur
,
version
,
note
):
# on distingue le cas ou une note a été donnée ou non
# on distingue le cas ou une note a été donnée ou non
if
note
==
"-"
:
if
note
==
"-"
:
self
.
base_donnees
.
utilisateur
.
update
({
"nom"
:
auteur
},
self
.
base_donnees
.
utilisateur
.
update
({
"nom"
:
auteur
},
{
"$pull"
:
{
{
"$pull"
:
{
"tiers"
:
[{
"contenu"
:
ObjectId
(
id_tiers
)},
{
"version"
:
version
}]}})
"tiers"
:
[{
"contenu"
:
ObjectId
(
id_tiers
)},
{
"version"
:
version
}]}})
else
:
else
:
self
.
base_donnees
.
utilisateur
.
update
({
"nom"
:
auteur
},
self
.
base_donnees
.
utilisateur
.
update
({
"nom"
:
auteur
},
{
"$pull"
:
{
{
"$pull"
:
{
...
@@ -630,12 +634,32 @@ class ContenuDao:
...
@@ -630,12 +634,32 @@ class ContenuDao:
# @param version la version du contenu notée
# @param version la version du contenu notée
# @param auteur l'auteur qui met la note
# @param auteur l'auteur qui met la note
def
recupererNoteContenu
(
self
,
id_contenu
,
version
,
auteur
):
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"
]
contenus_tiers
=
self
.
base_donnees
.
utilisateur
.
find_one
({
"nom"
:
auteur
})[
"tiers"
]
for
contenu
in
contenus_tiers
:
for
contenu
in
contenus_tiers
:
if
len
(
contenu
)
==
3
and
contenu
[
0
][
"contenu"
]
==
id_contenu
and
contenu
[
1
][
"version"
]
==
version
:
if
len
(
contenu
)
==
3
and
contenu
[
0
][
"contenu"
]
==
id_contenu
and
contenu
[
1
][
"version"
]
==
version
:
return
json
.
dumps
(
contenu
[
2
][
"note"
])
return
json
.
dumps
(
contenu
[
2
][
"note"
])
return
'-'
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
## 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 id_contenu l'id du contenu concerné
# @param version la version du contenu notée
# @param version la version du contenu notée
...
...
This diff is collapsed.
Click to expand it.
tests/test_flask_contenu.py
View file @
74a34fc7
# from testUtils import *
from
testUtils
import
*
#
#
#
# def test_contenu(client):
# def test_contenu(client):
# login = creerUtilisateurRandom(client)
# login = creerUtilisateurRandom(client)
# id = creerContenuRandom(client, login)
# id = creerContenuRandom(client, login)
#
#
#
# # get contenu par id
# # get contenu par id
# rv = client.get("/contenus/getContenu/" + json.dumps(id), headers=get_headers(client))
# rv = client.get("/contenus/getContenu/" + json.dumps(id), headers=get_headers(client))
# assert rv.status_code == 200
# assert rv.status_code == 200
...
@@ -61,7 +61,6 @@
...
@@ -61,7 +61,6 @@
# # on lui assigne un contenu
# # on lui assigne un contenu
# id = creerContenuRandom(client, login)
# id = creerContenuRandom(client, login)
#
#
#
# # on créée un second utilisateur quelconque et on lui donne le contenu ci dessus dans ses tiers
# # on créée un second utilisateur quelconque et on lui donne le contenu ci dessus dans ses tiers
# loginDeux = creerUtilisateurRandom(client)
# loginDeux = creerUtilisateurRandom(client)
# data = {"id_tiers": json.dumps(id), "auteur": loginDeux, "version": 1}
# data = {"id_tiers": json.dumps(id), "auteur": loginDeux, "version": 1}
...
@@ -118,3 +117,73 @@
...
@@ -118,3 +117,73 @@
# supprimerUtilisateur(client, login)
# supprimerUtilisateur(client, login)
# supprimerUtilisateur(client, loginDeux)
# supprimerUtilisateur(client, loginDeux)
# supprimerUtilisateur(client, loginTrois)
# 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
)
This diff is collapsed.
Click to expand it.
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