]> git.parisson.com Git - teleforma.git/commitdiff
Allow to share seminar from other period : https://trackers.pilotsystems.net/prebarre...
authorYoan Le Clanche <yoanl@pilotsystems.net>
Tue, 6 Jun 2023 15:06:46 +0000 (17:06 +0200)
committerYoan Le Clanche <yoanl@pilotsystems.net>
Tue, 6 Jun 2023 15:06:46 +0000 (17:06 +0200)
teleforma/migrations/0025_auto_20230606_1136.py [new file with mode: 0644]
teleforma/models/core.py
teleforma/views/core.py

diff --git a/teleforma/migrations/0025_auto_20230606_1136.py b/teleforma/migrations/0025_auto_20230606_1136.py
new file mode 100644 (file)
index 0000000..58ba2c0
--- /dev/null
@@ -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'),
+        ),
+    ]
index a75b9690b74bef447052e12c0d1920a9b863ed45..bde403100e582d59a0eca47c034f649f0c501492 100755 (executable)
@@ -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
index 6a03eae40f395821cf3974c14bfe992e93ee1273..80b8f63e58be73e228d8931a567863a6c271fde7 100644 (file)
@@ -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)