From 2b50f849d3dd41db818937f69fd136f9b0673ab5 Mon Sep 17 00:00:00 2001 From: Yoan Le Clanche Date: Thu, 8 Jun 2023 09:49:45 +0200 Subject: [PATCH] Add a field to configure max number of script for a same session : https://trackers.pilotsystems.net/prebarreau/0680 --- teleforma/exam/views.py | 3 ++- .../0026_period_nb_script_per_session.py | 18 ++++++++++++++++++ teleforma/models/core.py | 2 ++ 3 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 teleforma/migrations/0026_period_nb_script_per_session.py diff --git a/teleforma/exam/views.py b/teleforma/exam/views.py index 4fda97aa..7a7107d1 100755 --- a/teleforma/exam/views.py +++ b/teleforma/exam/views.py @@ -278,7 +278,8 @@ class ScriptCreateView(ScriptMixinView, CreateView): def form_valid(self, form): scripts = Script.objects.filter(course=form.cleaned_data['course'], session=form.cleaned_data['session'], author=self.request.user, period=self.period).exclude(status=0) - if scripts: + nb_script_per_session = self.period.nb_script_per_session or 1 + if len(scripts) >= nb_script_per_session: messages.error(self.request, _( "Error: you have already submitted a script for this session, the same course and the same type!")) return redirect('teleforma-exam-script-create', self.period.id) diff --git a/teleforma/migrations/0026_period_nb_script_per_session.py b/teleforma/migrations/0026_period_nb_script_per_session.py new file mode 100644 index 00000000..6b69960f --- /dev/null +++ b/teleforma/migrations/0026_period_nb_script_per_session.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.13 on 2023-06-08 09:24 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('teleforma', '0025_auto_20230607_1038'), + ] + + operations = [ + migrations.AddField( + model_name='period', + name='nb_script_per_session', + field=models.IntegerField(default=1, verbose_name='nombre maximal de copies par session'), + ), + ] diff --git a/teleforma/models/core.py b/teleforma/models/core.py index d7b8cc7a..48923803 100755 --- a/teleforma/models/core.py +++ b/teleforma/models/core.py @@ -189,6 +189,8 @@ class Period(models.Model): _("date de fin d'examens"), null=True, blank=True) nb_script = models.IntegerField( _("nombre maximal de copies"), null=True, blank=True) + nb_script_per_session = models.IntegerField( + "nombre maximal de copies par session", default=1) date_close_accounts = models.DateField( "date de fermeture des comptes étudiants", null=True, blank=True) date_inscription_start = models.DateField( -- 2.39.5