From 2d594e274f59d6982a1f5d9c0c0b1aa28049fe2a Mon Sep 17 00:00:00 2001 From: test test Date: Wed, 16 Jun 2021 16:16:59 +0200 Subject: [PATCH] Add platform_only field on webclass to restrict user from registering --- teleforma/views/core.py | 7 ++++++- .../migrations/0002_webclass_platform_only.py | 18 ++++++++++++++++++ teleforma/webclass/models.py | 1 + teleforma/webclass/views.py | 3 +++ 4 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 teleforma/webclass/migrations/0002_webclass_platform_only.py diff --git a/teleforma/views/core.py b/teleforma/views/core.py index 3291e8b6..66309f1f 100644 --- a/teleforma/views/core.py +++ b/teleforma/views/core.py @@ -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 index 00000000..407be8da --- /dev/null +++ b/teleforma/webclass/migrations/0002_webclass_platform_only.py @@ -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'), + ), + ] diff --git a/teleforma/webclass/models.py b/teleforma/webclass/models.py index ea4946a0..f3b92709 100644 --- a/teleforma/webclass/models.py +++ b/teleforma/webclass/models.py @@ -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") diff --git a/teleforma/webclass/views.py b/teleforma/webclass/views.py index 8fe9132b..8e008652 100644 --- a/teleforma/webclass/views.py +++ b/teleforma/webclass/views.py @@ -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): -- 2.39.5