Commit 7b6263ea authored by Quembre Hugo's avatar Quembre Hugo
Browse files

modifs suite aux commentaires merge request

parent 491d0359
Pipeline #10774 passed with stage
in 2 minutes and 30 seconds
......@@ -111,13 +111,13 @@ urlpatterns = [
url(
r"^questionnaire/position_theme/plus/(?P<pk>[0-9]+)/$",
login_required(views.position_theme_plus),
login_required(views.position_theme_modifier), {'plus' : True},
name='position_theme_plus',
),
url(
r"^questionnaire/position_theme/moins/(?P<pk>[0-9]+)/$",
login_required(views.position_theme_moins),
login_required(views.position_theme_modifier), {'plus' : False},
name='position_theme_moins',
),
......@@ -134,13 +134,13 @@ urlpatterns = [
),
url(
r"^theme/position_question/plus/(?P<pk>[0-9]+)/$",
login_required(views.position_question_plus),
login_required(views.position_question_modifier), {'plus' : True},
name='position_question_plus',
),
url(
r"^theme/position_question/moins/(?P<pk>[0-9]+)/$",
login_required(views.position_question_moins),
login_required(views.position_question_modifier), {'plus' : False},
name='position_question_moins',
),
url(
......
......@@ -37,18 +37,18 @@ class Question(models.Model):
else:
return "%s #%s" % (self.intitule, self.pk)
# def save(self, *args, **kwargs):
# """Modification d'une question.
# Une question peut être modifiée seulement si elle n'est pas
# utilisée dans un thème en cours d'utilisation.
# """
# try:
# for theme in self.theme_set.all():
# if theme.est_utilise():
# LOG.info("[%s] on clone la question" % self.id)
# # permet de créer une nouvelle instance
# self.pk = None
# except Exception:
# LOG.debug("[%s] question non utilisé" % self.id)
# super(Question, self).save(*args, **kwargs)
def save(self, *args, **kwargs):
"""Modification d'une question.
Une question peut être modifiée seulement si elle n'est pas
utilisée dans un thème en cours d'utilisation.
"""
try:
for theme in self.theme_set.all():
if theme.est_utilise():
LOG.info("[%s] on clone la question" % self.id)
# permet de créer une nouvelle instance
self.pk = None
except Exception:
LOG.debug("[%s] question non utilisé" % self.id)
super(Question, self).save(*args, **kwargs)
......@@ -80,17 +80,17 @@ class Theme(models.Model):
LOG.debug("[%s] theme non utilisé" % self.id)
return False
# def save(self, *args, **kwargs):
# """Sauvegarde d'un thème.
# Un thème peut être modifié seulement s'il n'est pas utilisé
# dans une campagne en cours (état > 0) ou pour un département
# dans une campagne en cours.
# """
# if self.est_utilise():
# LOG.info("[%s] on clone le theme" % self.id)
# # permet de créer une nouvelle instance
# self.pk = None
# else:
# LOG.debug("[%s] pas de clonage nécessaire" % self.id)
# super(Theme, self).save(*args, **kwargs)
def save(self, *args, **kwargs):
"""Sauvegarde d'un thème.
Un thème peut être modifié seulement s'il n'est pas utilisé
dans une campagne en cours (état > 0) ou pour un département
dans une campagne en cours.
"""
if self.est_utilise():
LOG.info("[%s] on clone le theme" % self.id)
# permet de créer une nouvelle instance
self.pk = None
else:
LOG.debug("[%s] pas de clonage nécessaire" % self.id)
super(Theme, self).save(*args, **kwargs)
......@@ -3,7 +3,7 @@
<div class="page-header">
<h1>
{{questionnaire}}
<a class="btn btn-warning" href="{% url 'questionnaire_update' questionnaire.pk%}">Modifier</a>
<a class="btn btn-warning" href="{% url 'questionnaire_update' questionnaire.pk %}">Modifier</a>
</h1>
</div>
......
{% block content %}
<div>
<h3>{{ ped | upper }}</h3>
{% for theme in theme_list %}
<div>
<a class="btn btn-success" href="{% url 'theme_update' theme.pk %}">{{theme}}</a>
<a class="btn" href="{% url 'position_theme_plus' theme.pk %}"><i class="fas fa-plus"></i></a>
{{ theme.position }}
<a class="btn" href="{% url 'position_theme_moins' theme.pk %}"><i class="fas fa-minus"></i></a>
<button onclick="confirmerSuppression('{{ theme.nom }}', '{{ ped }}' ,'{% url 'questionnaire_retirer_theme' questionnaire.pk ped theme.pk %}')" class="btn"><i class="fas fa-times"></i></button>
</div>
{% endfor %}
<a class="btn btn-warning" href="{% url 'questionnaire_add_theme' questionnaire.pk ped %}">Ajouter Theme</a>
<a class="btn btn-warning" href="{% url 'theme_create_add' questionnaire.pk ped %}">Créer Thème</a>
</div>
{% endblock %}
......@@ -6,90 +6,13 @@
<input type="text" name="nom" value="{{ questionnaire.nom }}"/>
<input type="submit" class="btn btn-success btn-sm" value="Valider"/>
</form>
<div>
<h3>CM</h3>
{% for theme in questionnaire.cm.all %}
<div>
<a class="btn" href="{% url 'theme_update' theme.pk %}"><button class="btn btn-success">{{theme}}</button></a>
<a class="btn" href="{% url 'position_theme_plus' theme.pk %}"><i class="fas fa-plus"></i></a>
{{ theme.position }}
<a class="btn" href="{% url 'position_theme_moins' theme.pk %}"><i class="fas fa-minus"></i></a>
<button onclick="confirmerSuppression('{{ theme.nom }}','cm','{% url 'questionnaire_retirer_theme' questionnaire.pk 'cm' theme.pk %}')" class="btn"><i class="fas fa-times"></i></button>
</div>
{% endfor %}
<a class="btn" href="{% url 'questionnaire_add_theme' questionnaire.pk 'cm'%}"><button class="btn btn-warning">Ajouter Theme</button></a>
<a class="btn" href="{% url 'theme_create_add' questionnaire.pk 'cm' %}"><button class="btn btn-warning">Créer Thème</button></a>
</div>
<div>
<h3>TD</h3>
{% for theme in questionnaire.td.all %}
<div>
<a class="btn" href="{% url 'theme_update' theme.pk %}"><button class="btn btn-success">{{theme}}</button></a>
<a class="btn" href="{% url 'position_theme_plus' theme.pk %}"><i class="fas fa-plus"></i></a>
{{ theme.position }}
<a class="btn" href="{% url 'position_theme_moins' theme.pk %}"><i class="fas fa-minus"></i></a>
<button onclick="confirmerSuppression('{{ theme.nom }}','td','{% url 'questionnaire_retirer_theme' questionnaire.pk 'td' theme.pk %}')" class="btn"><i class="fas fa-times"></i></button>
</div>
{% endfor %}
<a class="btn" href="{% url 'questionnaire_add_theme' questionnaire.pk 'td'%}"><button class="btn btn-warning">Ajouter Theme</button></a>
<a class="btn" href="{% url 'theme_create_add' questionnaire.pk 'td' %}"><button class="btn btn-warning">Créer Thème</button></a>
</div>
<div>
<h3>TP</h3>
{% for theme in questionnaire.tp.all %}
<div>
<a class="btn" href="{% url 'theme_update' theme.pk %}"><button class="btn btn-success">{{theme}}</button></a>
<a class="btn" href="{% url 'position_theme_plus' theme.pk %}"><i class="fas fa-plus"></i></a>
{{ theme.position }}
<a class="btn" href="{% url 'position_theme_moins' theme.pk %}"><i class="fas fa-minus"></i></a>
<button onclick="confirmerSuppression('{{ theme.nom }}','tp','{% url 'questionnaire_retirer_theme' questionnaire.pk 'tp' theme.pk %}')" class="btn"><i class="fas fa-times"></i></button>
</div>
{% endfor %}
<a class="btn" href="{% url 'questionnaire_add_theme' questionnaire.pk 'tp'%}"><button class="btn btn-warning">Ajouter Theme</button></a>
<a class="btn" href="{% url 'theme_create_add' questionnaire.pk 'tp' %}"><button class="btn btn-warning">Créer Thème</button></a>
</div>
<div>
<h3>TUT</h3>
{% for theme in questionnaire.tut.all %}
<div>
<a class="btn" href="{% url 'theme_update' theme.pk %}"><button class="btn btn-success">{{theme}}</button></a>
<a class="btn" href="{% url 'position_theme_plus' theme.pk %}"><i class="fas fa-plus"></i></a>
{{ theme.position }}
<a class="btn" href="{% url 'position_theme_moins' theme.pk %}"><i class="fas fa-minus"></i></a>
<button onclick="confirmerSuppression('{{ theme.nom }}','tut','{% url 'questionnaire_retirer_theme' questionnaire.pk 'tut' theme.pk %}')" class="btn"><i class="fas fa-times"></i></button>
</div>
{% endfor %}
<a class="btn" href="{% url 'questionnaire_add_theme' questionnaire.pk 'tut'%}"><button class="btn btn-warning">Ajouter Theme</button></a>
<a class="btn" href="{% url 'theme_create_add' questionnaire.pk 'tut' %}"><button class="btn btn-warning">Créer Thème</button></a>
</div>
<div>
<h3>CTD</h3>
{% for theme in questionnaire.ctd.all %}
<div>
<a class="btn" href="{% url 'theme_update' theme.pk %}"><button class="btn btn-success">{{theme}}</button></a>
<a class="btn" href="{% url 'position_theme_plus' theme.pk %}"><i class="fas fa-plus"></i></a>
{{ theme.position }}
<a class="btn" href="{% url 'position_theme_moins' theme.pk %}"><i class="fas fa-minus"></i></a>
<button onclick="confirmerSuppression('{{ theme.nom }}','ctd','{% url 'questionnaire_retirer_theme' questionnaire.pk 'ctd' theme.pk %}')" class="btn"><i class="fas fa-times"></i></button>
</div>
{% endfor %}
<a class="btn" href="{% url 'questionnaire_add_theme' questionnaire.pk 'ctd'%}"><button class="btn btn-warning">Ajouter Theme</button></a>
<a class="btn" href="{% url 'theme_create_add' questionnaire.pk 'ctd' %}"><button class="btn btn-warning">Créer Thème</button></a>
</div>
<div>
<h3>SPORT</h3>
{% for theme in questionnaire.sport.all %}
<div>
<a class="btn" href="{% url 'theme_update' theme.pk %}"><button class="btn btn-success">{{theme}}</button></a>
<a class="btn" href="{% url 'position_theme_plus' theme.pk %}"><i class="fas fa-plus"></i></a>
{{ theme.position }}
<a class="btn" href="{% url 'position_theme_moins' theme.pk %}"><i class="fas fa-minus"></i></a>
<button onclick="confirmerSuppression('{{ theme.nom }}','sport','{% url 'questionnaire_retirer_theme' questionnaire.pk 'sport' theme.pk %}')" class="btn"><i class="fas fa-times"></i></button>
</div>
{% endfor %}
<a class="btn" href="{% url 'questionnaire_add_theme' questionnaire.pk 'sport'%}"><button class="btn btn-warning">Ajouter Theme</button></a>
<a class="btn" href="{% url 'theme_create_add' questionnaire.pk 'sport' %}"><button class="btn btn-warning">Créer Thème</button></a>
</div>
{% include "ede/questionnaire_ped_theme_update.html" with ped="cm" theme_list=questionnaire.cm.all %}
{% include "ede/questionnaire_ped_theme_update.html" with ped="td" theme_list=questionnaire.td.all %}
{% include "ede/questionnaire_ped_theme_update.html" with ped="tp" theme_list=questionnaire.tp.all %}
{% include "ede/questionnaire_ped_theme_update.html" with ped="tut" theme_list=questionnaire.tut.all %}
{% include "ede/questionnaire_ped_theme_update.html" with ped="ctd" theme_list=questionnaire.ctd.all %}
{% include "ede/questionnaire_ped_theme_update.html" with ped="sport" theme_list=questionnaire.sport.all %}
<script type="text/javascript">
function confirmerSuppression(nom,attribut,url){
......
......@@ -516,7 +516,7 @@ def creer_ajouter_theme(request, pk_q, ped):
messages.add_message(request, messages.ERROR, "Accès non autorisé")
return redirect("home")
questionnaire = Questionnaire.objects.get(pk=pk_q)
questionnaire = get_object_or_404(Questionnaire,pk=pk_q)
if request.method == "POST":
form = ThemeUpdate(request.POST)
if form.is_valid():
......@@ -534,7 +534,7 @@ def modifier_questionnaire(request,pk):
messages.add_message(request, messages.ERROR, "Accès non autorisé")
return redirect("home")
questionnaire = Questionnaire.objects.get(pk=pk)
questionnaire = get_object_or_404(Questionnaire,pk=pk)
if request.method == "POST":
questionnaire.nom = request.POST.get('nom')
questionnaire.save()
......@@ -548,10 +548,8 @@ def ajouter_theme(request,pk,ped):
messages.add_message(request, messages.ERROR, "Accès non autorisé")
return redirect("home")
questionnaire = Questionnaire.objects.get(pk=pk)
themes = list(Theme.objects.all())
themes_questionnaire = list(getattr(questionnaire,ped).all())
themes = list(filter(lambda e:not(e in themes_questionnaire),themes))
questionnaire = get_object_or_404(Questionnaire,pk=pk)
themes = Theme.objects.all().exclude(id__in = getattr(questionnaire,ped).all() )
context = {"questionnaire_pk":pk, "ped":ped, "themes":themes}
return render(request, "ede/questionnaire_ajouter_theme.html", context)
......@@ -562,8 +560,8 @@ def ajouter_theme_pk(request,pk,ped,pk_t):
messages.add_message(request, messages.ERROR, "Accès non autorisé")
return redirect("home")
questionnaire = Questionnaire.objects.get(pk=pk)
theme = Theme.objects.get(pk=pk_t)
questionnaire = get_object_or_404(Questionnaire,pk=pk)
theme = get_object_or_404(Theme,pk=pk_t)
getattr(questionnaire,ped).add(theme)
return redirect('questionnaire_update', pk)
......@@ -574,35 +572,27 @@ def retirer_theme_questionnaire(request,pk_q,ped,pk_t):
messages.add_message(request, messages.ERROR, "Accès non autorisé")
return redirect("home")
questionnaire = Questionnaire.objects.get(pk=pk_q)
theme = Theme.objects.get(pk=pk_t)
questionnaire = get_object_or_404(Questionnaire,pk=pk_q)
theme = get_object_or_404(Theme,pk=pk_t)
getattr(questionnaire,ped).remove(theme)
questionnaire.save()
return redirect('questionnaire_update',pk_q)
def position_theme_plus(request, pk):
"""Cette vue permet d'incrementer la position d'un thème"""
if not request.user.is_staff:
LOG.warning("[%s] utilisateur non autorisé" % request.user.id)
messages.add_message(request, messages.ERROR, "Accès non autorisé")
return redirect("home")
theme = Theme.objects.get(pk=pk)
theme.position += 1
theme.save()
return redirect(request.META.get('HTTP_REFERER'))
def position_theme_moins(request, pk):
"""Cette vue permet de décrementer la position d'un thème"""
def position_theme_modifier(request, pk, plus):
"""Cette vue permet de modifier la position d'un thème selon l'argument plus
On incremente si plus=True, on décremente si plus=False
"""
if not request.user.is_staff:
LOG.warning("[%s] utilisateur non autorisé" % request.user.id)
messages.add_message(request, messages.ERROR, "Accès non autorisé")
return redirect("home")
theme = Theme.objects.get(pk=pk)
if theme.position != 0:
theme = get_object_or_404(Theme,pk=pk)
if plus:
theme.position += 1
elif theme.position > 0:
theme.position -= 1
theme.save()
theme.save()
return redirect(request.META.get('HTTP_REFERER'))
def modifier_theme(request,pk):
......@@ -612,7 +602,7 @@ def modifier_theme(request,pk):
messages.add_message(request, messages.ERROR, "Accès non autorisé")
return redirect("home")
theme = Theme.objects.get(pk=pk)
theme = get_object_or_404(Theme,pk=pk)
if request.method == "POST":
theme.nom = request.POST.get('nom')
theme.intitule = request.POST.get('intitule')
......@@ -627,35 +617,27 @@ def theme_retirer_question(request, pk_t, pk_q):
messages.add_message(request, messages.ERROR, "Accès non autorisé")
return redirect("home")
theme = Theme.objects.get(pk=pk_t)
question = Question.objects.get(pk=pk_q)
theme = get_object_or_404(Theme,pk=pk_t)
question = get_object_or_404(Question,pk=pk_q)
theme.questions.remove(question)
theme.save()
return redirect('theme_update',pk_t)
def position_question_plus(request, pk):
"""Cette vue permet d'incrementer la position d'une question"""
if not request.user.is_staff:
LOG.warning("[%s] utilisateur non autorisé" % request.user.id)
messages.add_message(request, messages.ERROR, "Accès non autorisé")
return redirect("home")
question = Question.objects.get(pk=pk)
question.position += 1
question.save()
return redirect(request.META.get('HTTP_REFERER'))
def position_question_moins(request, pk):
"""Cette vue permet de décrementer la position d'une question"""
def position_question_modifier(request, pk, plus):
"""Cette vue permet de modifier la position d'une question selon l'argument plus
On incremente si plus=True, on décremente si plus=False
"""
if not request.user.is_staff:
LOG.warning("[%s] utilisateur non autorisé" % request.user.id)
messages.add_message(request, messages.ERROR, "Accès non autorisé")
return redirect("home")
question = Question.objects.get(pk=pk)
if question.position != 0:
question = get_object_or_404(Question,pk=pk)
if plus:
question.position += 1
elif question.position > 0:
question.position -= 1
question.save()
question.save()
return redirect(request.META.get('HTTP_REFERER'))
def ajouter_question(request,pk):
......@@ -665,7 +647,7 @@ def ajouter_question(request,pk):
messages.add_message(request, messages.ERROR, "Accès non autorisé")
return redirect("home")
theme = Theme.objects.get(pk=pk)
theme = get_object_or_404(Theme,pk=pk)
questions = list(Question.objects.all())
questions_theme = list(theme.questions.all())
questions = list(filter(lambda e:not(e in questions_theme),questions))
......@@ -679,8 +661,8 @@ def ajouter_question_pk(request,pk,pk_q):
messages.add_message(request, messages.ERROR, "Accès non autorisé")
return redirect("home")
theme = Theme.objects.get(pk=pk)
question = Question.objects.get(pk=pk_q)
theme = get_object_or_404(Theme,pk=pk)
question = get_object_or_404(Question,pk=pk_q)
theme.questions.add(question)
return redirect('theme_update', pk)
......@@ -691,11 +673,11 @@ def modifier_question(request,pk):
messages.add_message(request, messages.ERROR, "Accès non autorisé")
return redirect("home")
form = QuestionUpdate(request.POST, instance=Question.objects.get(pk=pk))
form = QuestionUpdate(request.POST, instance=get_object_or_404(Question,pk=pk))
if request.method=="POST":
form.save()
return redirect("home")
update_question = QuestionUpdate(instance=Question.objects.get(pk=pk))
update_question = QuestionUpdate(instance=get_object_or_404(Question,pk=pk))
context = {"form_question": update_question}
return render(request, "ede/question_update.html", context)
......@@ -706,7 +688,7 @@ def creer_ajouter_question(request, pk):
messages.add_message(request, messages.ERROR, "Accès non autorisé")
return redirect("home")
theme = Theme.objects.get(pk=pk)
theme = get_object_or_404(Theme,pk=pk)
if request.method == "POST":
form = QuestionUpdate(request.POST)
if form.is_valid():
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment