From 538e378373dd6eb62e689078fc837bd8c6889fcd Mon Sep 17 00:00:00 2001 From: Yoan Le Clanche Date: Tue, 6 Jun 2023 17:06:46 +0200 Subject: [PATCH] Allow to share seminar from other period : https://trackers.pilotsystems.net/prebarreau/0672 --- .../migrations/0025_auto_20230606_1136.py | 24 +++++++++++++++++++ teleforma/models/core.py | 7 ++++++ teleforma/views/core.py | 12 +++++++--- 3 files changed, 40 insertions(+), 3 deletions(-) create mode 100644 teleforma/migrations/0025_auto_20230606_1136.py diff --git a/teleforma/migrations/0025_auto_20230606_1136.py b/teleforma/migrations/0025_auto_20230606_1136.py new file mode 100644 index 00000000..58ba2c02 --- /dev/null +++ b/teleforma/migrations/0025_auto_20230606_1136.py @@ -0,0 +1,24 @@ +# Generated by Django 3.2.13 on 2023-06-06 11:36 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('teleforma', '0024_auto_20230316_1627'), + ] + + operations = [ + migrations.AddField( + model_name='course', + name='correction_copies_shared', + field=models.BooleanField(default=False, help_text='A utiliser avec le champ relatif dans la période.', verbose_name='Correction de copies partagés'), + ), + migrations.AddField( + model_name='period', + name='correction_copies_from', + field=models.ForeignKey(blank=True, help_text="Permet d'afficher les séminaires de corrections de copies d'une autre période. Il faut aussi cocher la case relative dans les matières pour autoriser celles-ci à partager leur contenu.", null=True, on_delete=django.db.models.deletion.SET_NULL, to='teleforma.period', verbose_name='Récupérer les séminaires de correction de copies depuis'), + ), + ] diff --git a/teleforma/models/core.py b/teleforma/models/core.py index a75b9690..bde40310 100755 --- a/teleforma/models/core.py +++ b/teleforma/models/core.py @@ -195,6 +195,10 @@ class Period(models.Model): "date d'ouverture des inscriptions", null=True, blank=True) date_inscription_end = models.DateField( "date de fermeture des inscriptions", null=True, blank=True) + correction_copies_from = models.ForeignKey('Period', + verbose_name="Récupérer les séminaires de correction de copies depuis", + help_text="Permet d'afficher les séminaires de corrections de copies d'une autre période. Il faut aussi cocher la case relative dans les matières pour autoriser celles-ci à partager leur contenu.", + blank=True, null=True, on_delete=models.SET_NULL) def __str__(self): return self.name @@ -265,6 +269,9 @@ class Course(models.Model): periods = models.ManyToManyField('Period', related_name="courses", verbose_name=u'Périodes associées', blank=True) + correction_copies_shared = models.BooleanField("Correction de copies partagés", + help_text="A utiliser avec le champ relatif dans la période.", + default=False) def __str__(self): return self.title diff --git a/teleforma/views/core.py b/teleforma/views/core.py index 6a03eae4..80b8f63e 100644 --- a/teleforma/views/core.py +++ b/teleforma/views/core.py @@ -578,14 +578,20 @@ class CourseView(CourseAccessMixin, DetailView): context['webclass_not_over'] = webclass and webclass.is_not_over() records = {} + period = context['period'] + shared_records = {} try: - records = WebclassRecord.get_records(context['period'], course) + records = WebclassRecord.get_records(period, course) + if period.correction_copies_from and course.correction_copies_shared: + shared_records = WebclassRecord.get_records(period.correction_copies_from, course) except Exception as e: print(e) context['webclass_error'] = True context['webclass_records'] = records.get(WebclassRecord.WEBCLASS) - context['webclass_corrections_records'] = records.get(WebclassRecord.CORRECTION) - + context['webclass_corrections_records'] = records.get(WebclassRecord.CORRECTION, []) + if shared_records: + context['webclass_corrections_records'].extend(shared_records.get(WebclassRecord.CORRECTION, [])) + context['webclass_corrections_records'] = sorted(context['webclass_corrections_records'], key=lambda w:w['start_date']) return context @method_decorator(access_required) -- 2.39.5