]> 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>
Wed, 7 Jun 2023 13:05:26 +0000 (15:05 +0200)
committerYoan Le Clanche <yoanl@pilotsystems.net>
Wed, 7 Jun 2023 13:05:26 +0000 (15:05 +0200)
app/settings.py
teleforma/migrations/0025_auto_20230606_1136.py [deleted file]
teleforma/migrations/0025_auto_20230607_1038.py [new file with mode: 0644]
teleforma/models/core.py
teleforma/templatetags/teleforma_tags.py
teleforma/views/core.py

index f9b88d8974945c838f9e715418f51bedef298d89..2b64555a47e9484563481577c2608bcb9b2b7cb4 100644 (file)
@@ -540,6 +540,9 @@ WEBPACK_DEV_SERVER_URL = "http://172.24.104.152:3000/"
 ENABLE_CHAT = True
 CHAT_LIMIT_HOURS = 48
 
+# use to share correction doc / media accross different training
+CORRECTIONS_COURSE_TYPE_ID = 2
+
 
 ##################
 # LOCAL SETTINGS #
diff --git a/teleforma/migrations/0025_auto_20230606_1136.py b/teleforma/migrations/0025_auto_20230606_1136.py
deleted file mode 100644 (file)
index 58ba2c0..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-# 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/migrations/0025_auto_20230607_1038.py b/teleforma/migrations/0025_auto_20230607_1038.py
new file mode 100644 (file)
index 0000000..d6d435a
--- /dev/null
@@ -0,0 +1,24 @@
+# Generated by Django 3.2.13 on 2023-06-07 10:38
+
+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='corrections_shared',
+            field=models.BooleanField(default=False, help_text='A utiliser avec le champ relatif dans la période.', verbose_name='Corrections partagés'),
+        ),
+        migrations.AddField(
+            model_name='period',
+            name='corrections_from',
+            field=models.ForeignKey(blank=True, help_text="Permet d'afficher les séminaires de corrections 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 depuis'),
+        ),
+    ]
index bde403100e582d59a0eca47c034f649f0c501492..d7b8cc7a67b1ec5a7a1bfe898d25eaaeb4602dd4 100755 (executable)
@@ -195,10 +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)
+    corrections_from = models.ForeignKey('Period', 
+                                        verbose_name="Récupérer les séminaires de correction depuis", 
+                                        help_text="Permet d'afficher les séminaires de corrections 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
@@ -269,9 +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)
+    corrections_shared = models.BooleanField("Corrections partagés", 
+                                            help_text="A utiliser avec le champ relatif dans la période.",
+                                            default=False)
 
     def __str__(self):
         return self.title
index 4fccb82736808a82ad0dec71d851c76026a68a6b..73930a2f0682f1261ecd6d7a599905e97aa8499b 100644 (file)
@@ -451,9 +451,14 @@ def chat_room(context, period=None, course=None):
 @register.simple_tag(takes_context=True)
 def course_docs_by_type(context):
     course = context['course']
+    period = context['period']
+    periods = [period,]
+
+    if period.corrections_from and course.corrections_shared and context['type'].id == settings.CORRECTIONS_COURSE_TYPE_ID:
+        periods.append(period.corrections_from)
     docs = course.document.filter(is_published=True,
-                                  periods__in=(context['period'],),
-                                  course_type=context['type'])
+                                  periods__in=periods,
+                                  course_type=context['type']).distinct()
     res = []
     by_types = defaultdict(list)
     for doc in docs:
index 80b8f63e58be73e228d8931a567863a6c271fde7..bd04f354a6fb256a7ee89f94fd879b6608c544c4 100644 (file)
@@ -140,9 +140,14 @@ def get_trainings(user):
 def get_course_conferences(period, course, course_type, status_min=3):
     conferences = []
     already_added = set()
+
+    periods = [period,]
+
+    if period.corrections_from and course.corrections_shared and course_type.id == settings.CORRECTIONS_COURSE_TYPE_ID:
+        periods.append(period.corrections_from)
     # get conference publications
     publications = ConferencePublication.objects.filter(
-        period=period,
+        period__in=periods,
         conference__course=course,
         conference__course_type=course_type,
         status__gte=status_min).distinct()
@@ -150,10 +155,11 @@ def get_course_conferences(period, course, course_type, status_min=3):
         conferences.append(publication.conference)
         already_added.add(publication.conference.id)
 
-    cc = Conference.objects.filter(period=period,
+    cc = Conference.objects.filter(period__in=periods,
         course=course,
         course_type=course_type,
-        status__gte=status_min)
+        status__gte=status_min).distinct()
+
     for conference in cc:
         # do not include conferences with publication rules
         if conference.id not in already_added:
@@ -579,19 +585,13 @@ class CourseView(CourseAccessMixin, DetailView):
 
         records = {}
         period = context['period']
-        shared_records = {}
         try:
             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, [])
-        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)