]> git.parisson.com Git - teleforma.git/commitdiff
Add platform_only field on webclass to restrict user from registering
authortest test <yoanl@pilotsystems.net>
Wed, 16 Jun 2021 14:16:59 +0000 (16:16 +0200)
committerYoan Le Clanche <yoanl@pilotsystems.net>
Wed, 16 Jun 2021 14:16:59 +0000 (16:16 +0200)
teleforma/views/core.py
teleforma/webclass/migrations/0002_webclass_platform_only.py [new file with mode: 0644]
teleforma/webclass/models.py
teleforma/webclass/views.py

index 3291e8b604f85f1e129b97b86dbeb37d167bf34e..66309f1f11d828268082d670195f8027b7a49ceb 100644 (file)
@@ -359,6 +359,8 @@ class CourseListView(CourseAccessMixin, ListView):
             for webclass in Webclass.published.filter(period=self.period, iej=student.iej, course__in=student_courses):
                 # if webclass.course not in student_courses:
                 #     continue
+                if webclass.platform_only and not student.platform_only:
+                    continue
                 slot = webclass.get_slot(user)
                 if slot and slot.status in ('almost', 'ingoing'):
                     slots.append(slot)
@@ -456,7 +458,10 @@ class CourseView(CourseAccessMixin, DetailView):
             except IndexError:
                 pass
             if webclass:
-                webclass_slot = webclass.get_slot(self.request.user)
+                if webclass.platform_only and not student.platform_only:
+                    webclass = None
+                else:
+                    webclass_slot = webclass.get_slot(self.request.user)
         context['webclass'] = webclass
         context['webclass_slot'] = webclass_slot
 
diff --git a/teleforma/webclass/migrations/0002_webclass_platform_only.py b/teleforma/webclass/migrations/0002_webclass_platform_only.py
new file mode 100644 (file)
index 0000000..407be8d
--- /dev/null
@@ -0,0 +1,18 @@
+# Generated by Django 3.2.3 on 2021-06-16 14:58
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('webclass', '0001_initial'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='webclass',
+            name='platform_only',
+            field=models.BooleanField(default=False, verbose_name='platform only'),
+        ),
+    ]
index ea4946a05abf605bb698218096d2f0378fe11b34..f3b92709eaf345df3698bf805683afb1066fd8d7 100644 (file)
@@ -139,6 +139,7 @@ class Webclass(models.Model):
         'teleforma.Course', related_name='webclass', verbose_name=_('course'), on_delete=models.CASCADE)
     iej = models.ManyToManyField(
         'teleforma.IEJ', related_name='webclass', verbose_name=_('iej'), blank=True)
+    platform_only = models.BooleanField(_('platform only'), default=False)
     bbb_server = models.ForeignKey(
         'BBBServer', related_name='webclass', verbose_name='Serveur BBB', on_delete=models.CASCADE)
     duration = DurationField('Durée de la conférence', default="00:30:00")
index 8fe9132be27d0decfabbca877ca172c144480244..8e008652d8267379a669af5757bf5c56b30d7eb3 100644 (file)
@@ -55,6 +55,9 @@ class WebclassAppointment(View):
         # Student is in the right IEJ ?
         if not student.iej in webclass.iej.all():
             return HttpResponse('Unauthorized', status=401)
+        if webclass.platform_only and not student.platform_only:
+            return HttpResponse('Unauthorized', status=401)
+            
         return
 
     def render(self, request, webclass):