Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Bonnegent Sebastien
pao
Commits
e2a32c2d
Commit
e2a32c2d
authored
Nov 28, 2022
by
Bonnegent Sebastien
Browse files
Merge branch 'Issues#91' into 'master'
Issues#91 See merge request
!56
parents
7368f2ad
04e87423
Pipeline
#18055
passed with stages
in 5 minutes and 29 seconds
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
projets/views.py
View file @
e2a32c2d
from
.models
import
Semestre
,
Sujet
,
PAO
,
Campagne
,
Preinscription
,
Lien
from
.version
import
VERSION
import
csv
import
logging
from
decimal
import
Decimal
...
...
@@ -12,6 +10,8 @@ from django.http import HttpResponse
from
django.shortcuts
import
render
,
redirect
,
get_object_or_404
from
django.views
import
generic
from
django.views.generic
import
edit
from
.models
import
Semestre
,
Sujet
,
PAO
,
Campagne
,
Preinscription
,
Lien
from
.version
import
VERSION
LOG
=
logging
.
getLogger
(
__name__
)
...
...
@@ -333,7 +333,7 @@ def preinscriptions_list(request, sujet_pk):
if
request
.
user
.
has_perm
(
"projets.add_campagne"
)
is
False
:
messages
.
error
(
request
,
f
"Impossible de voir la liste des préincrits, la campagne est fermé."
,
f
"Impossible de voir la liste des préincrits, la campagne est fermé
e
."
,
)
return
redirect
(
"pao:sujet-detail"
,
sujet_pk
)
...
...
@@ -356,9 +356,7 @@ def preinscriptions_list(request, sujet_pk):
if
accepter_preinscription
(
request
,
p
):
context
[
"nb_places_restantes"
]
-=
1
context
[
"nb_inscriptions_possible"
]
-=
1
liste_eleve
.
append
(
f
"
{
p
.
etudiant
.
get_full_name
()
}
"
)
liste_eleve
.
append
(
f
"
{
p
.
etudiant
.
get_full_name
()
}
"
)
if
liste_eleve
:
messages
.
info
(
request
,
...
...
@@ -488,8 +486,8 @@ def sujet_enable(request, pk):
sujet
=
get_object_or_404
(
Sujet
,
pk
=
pk
)
if
sujet
.
is_editable_by
(
request
.
user
):
LOG
.
info
(
f
"[sujet:
{
pk
}
] état modifié par
{
request
.
user
}
"
)
sujet
.
toggle_state
()
LOG
.
info
(
f
"[sujet:
{
pk
}
] état modifié par
{
request
.
user
}
"
)
else
:
messages
.
error
(
request
,
"Accès non autorisé"
)
return
redirect
(
"pao:sujet-detail"
,
pk
)
...
...
@@ -569,7 +567,7 @@ def last_campagne(request):
try
:
campagne
.
pk
except
AttributeError
:
messages
.
error
(
request
,
"
a
ffichage impossible, aucune campagne créée"
)
messages
.
error
(
request
,
"
A
ffichage impossible, aucune campagne créée"
)
return
redirect
(
"pao:home"
)
return
redirect
(
"pao:campagne-detail"
,
campagne
.
pk
)
...
...
@@ -649,8 +647,8 @@ def campagne_ouvert(request, pk):
"Impossible d'ouvrir la campagne, une campagne est déjà ouverte"
,
)
else
:
LOG
.
info
(
f
"[campagne activité:
{
pk
}
] état modifié par
{
request
.
user
}
"
)
campagne
.
toggle_ouvert
()
LOG
.
info
(
f
"[campagne activité:
{
pk
}
] état modifié par
{
request
.
user
}
"
)
else
:
messages
.
error
(
request
,
"Accès non autorisé"
)
return
redirect
(
"pao:campagne-list"
)
...
...
@@ -663,9 +661,9 @@ def campagne_sujets_deactivate(request):
sujets_to_deactivate
=
Sujet
.
objects
.
filter
(
actif
=
True
)
if
sujets_to_deactivate
.
count
()
>
0
:
for
sujet
in
sujets_to_deactivate
:
LOG
.
info
(
f
"[sujet:
{
sujet
.
id
}
] sujet désactivé par
{
request
.
user
}
"
)
sujet
.
actif
=
False
sujet
.
save
()
LOG
.
info
(
f
"[sujet:
{
sujet
.
id
}
] sujet désactivé par
{
request
.
user
}
"
)
messages
.
info
(
request
,
f
"
{
sujets_to_deactivate
.
count
()
}
sujets ont été désactivés"
)
...
...
@@ -684,8 +682,8 @@ def campagne_note(request, pk):
campagne
=
get_object_or_404
(
Campagne
,
pk
=
pk
)
if
request
.
user
.
has_perm
(
"projets.add_campagne"
):
LOG
.
info
(
f
"[période d'évaluation':
{
pk
}
] état modifié par
{
request
.
user
}
"
)
campagne
.
toggle_note
()
LOG
.
info
(
f
"[période d'évaluation':
{
pk
}
] état modifié par
{
request
.
user
}
"
)
else
:
messages
.
error
(
request
,
"Accès non autorisé"
)
return
redirect
(
"pao:campagne-list"
)
...
...
@@ -782,41 +780,69 @@ def pao_create(request, sujet_pk, etudiant_pk):
context
[
"menu_pao"
]
=
"active"
context
[
"sujet"
]
=
get_object_or_404
(
Sujet
,
pk
=
sujet_pk
)
context
[
"etudiant"
]
=
get_object_or_404
(
User
,
pk
=
etudiant_pk
)
# GESTION DES EXCEPTIONS
# sujet
if
not
context
[
"sujet"
].
is_editable_by
(
request
.
user
):
messages
.
error
(
request
,
"Vous n'avez pas les droits nécessaires"
)
return
redirect
(
"pao:home"
)
if
context
[
"sujet"
].
actif
is
False
:
messages
.
warning
(
request
,
"Ce sujet n'est pas actif"
)
return
redirect
(
"pao:sujet-detail"
,
sujet_pk
)
# campagne
if
Campagne
.
objects
.
filter
(
ouvert
=
True
).
count
()
==
0
:
messages
.
error
(
request
,
"Aucune campagne en cours, vous ne pouvez pas créer de nouveau pao"
)
return
render
(
request
,
"projets/pao_create.html"
,
context
)
campagne
=
Campagne
.
objects
.
filter
(
ouvert
=
True
)[
0
]
# etudiant
etudiants_deja_inscrits
=
[
pao
.
etudiant
for
pao
in
context
[
"sujet"
].
get_pao_by_campagne
(
campagne
)
]
if
context
[
"etudiant"
]
in
etudiants_deja_inscrits
:
messages
.
error
(
request
,
f
"
{
context
[
'etudiant'
].
get_full_name
()
}
est déjà inscrit à ce
{
settings
.
PAO
}
"
,
)
LOG
.
debug
(
f
"Tentative bloquée de double inscription de
{
context
[
'etudiant'
].
get_full_name
()
}
au
{
settings
.
PAO
}
{
context
[
'sujet'
]
}
"
)
return
render
(
request
,
"projets/pao_create.html"
,
context
)
etudiants_preinscrits
=
[
preinscription
.
etudiant
for
preinscription
in
context
[
"sujet"
].
get_preinscriptions
()
]
if
context
[
"etudiant"
]
in
etudiants_preinscrits
:
messages
.
error
(
request
,
f
"
{
context
[
'etudiant'
].
get_full_name
()
}
est déjà pré-inscrit à ce
{
settings
.
PAO
}
. Veuillez accepter sa pré-inscription pour l'inscrire."
,
)
LOG
.
info
(
f
"
{
context
[
'etudiant'
].
get_full_name
()
}
n'a pas été inscrit car il est déjà pré-inscrit au
{
settings
.
PAO
}
{
context
[
'sujet'
]
}
"
)
return
redirect
(
"pao:sujet-detail"
,
sujet_pk
)
if
campagne
.
get_nb_pao_etudiant
(
context
[
"etudiant"
])
>=
settings
.
MAX_INSCRIPTIONS
:
messages
.
error
(
request
,
f
"Erreur dans l'enregistrement de
{
context
[
'etudiant'
].
get_full_name
()
}
, nombre max d'inscriptions atteint pour cet étudiant."
,
)
LOG
.
info
(
f
"Inscription refusée, nb inscriptions max atteint:
{
context
[
'etudiant'
].
get_full_name
()
}
(sujet :
{
context
[
'sujet'
]
}
)"
)
return
render
(
request
,
"projets/pao_create.html"
,
context
)
# CRÉATION DU PAO
if
request
.
method
==
"POST"
:
# création de l'objet
semestre
=
get_object_or_404
(
Semestre
,
pk
=
request
.
POST
[
"semestre"
])
LOG
.
debug
(
f
"semestre:
{
semestre
}
"
)
if
semestre
not
in
context
[
"sujet"
].
semestres
.
all
():
messages
.
error
(
request
,
"Mauvais choix de semestre"
)
return
render
(
request
,
"projets/pao_create.html"
,
context
)
try
:
campagne
=
Campagne
.
objects
.
filter
(
ouvert
=
True
)[
0
]
except
IndexError
:
messages
.
error
(
request
,
"Création impossible, aucune campagne en cours"
)
return
render
(
request
,
"projets/pao_create.html"
,
context
)
if
(
campagne
.
get_nb_pao_etudiant
(
context
[
"etudiant"
])
>=
settings
.
MAX_INSCRIPTIONS
):
messages
.
error
(
request
,
f
"Erreur dans l'enregistrement de
{
context
[
'etudiant'
].
get_full_name
()
}
, nombre max d'inscriptions atteint pour cet étudiant."
,
)
LOG
.
info
(
f
"Inscription refusée, nb inscriptions max atteint :
{
context
[
'etudiant'
].
get_full_name
()
}
(sujet :
{
context
[
'sujet'
]
}
)"
)
return
render
(
request
,
"projets/pao_create.html"
,
context
)
try
:
PAO
(
sujet
=
context
[
"sujet"
],
...
...
@@ -832,7 +858,9 @@ def pao_create(request, sujet_pk, etudiant_pk):
# mail de confirmation
message
=
f
"Bonjour
{
context
[
'etudiant'
].
first_name
}
,
\n\n
Vous avez été inscrit au
{
settings
.
PAO
}
:
{
context
[
'sujet'
].
nom
}
.
\n\n
Ce
{
settings
.
PAO
}
est dispensé par
{
context
[
'sujet'
].
display_responsables
()
}
\n\n
Description:
{
context
[
'sujet'
].
description
}
"
objet_mail
=
f
"Inscription
{
settings
.
PAO
}
-
{
context
[
'sujet'
].
nom
}
"
send_mail
(
objet_mail
,
message
,
settings
.
SERVER_EMAIL
,
[
context
[
"etudiant"
].
email
])
send_mail
(
objet_mail
,
message
,
settings
.
SERVER_EMAIL
,
[
context
[
"etudiant"
].
email
]
)
LOG
.
info
(
f
"Mail de confirmation d'inscription au
{
settings
.
PAO
}
{
context
[
'sujet'
]
}
envoyé à
{
context
[
'etudiant'
].
get_full_name
()
}
"
)
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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