]> git.parisson.com Git - teleforma.git/commitdiff
replace all http by https for webclass
authorGuillaume Pellerin <guillaume.pellerin@parisson.com>
Tue, 10 Jun 2025 15:00:47 +0000 (17:00 +0200)
committerGuillaume Pellerin <guillaume.pellerin@parisson.com>
Tue, 10 Jun 2025 16:13:14 +0000 (18:13 +0200)
teleforma/webclass/models.py
teleforma/webclass/views.py

index ec5afbba3d089b3554c3dacf1271e82ef9f5a078..dcee67d4f982de67fa3895f16b13ad894a195e7d 100644 (file)
@@ -65,6 +65,7 @@ def get_records_from_bbb(**kwargs):
             else:
                 continue
             url = url.replace('bbb2.parisson.com', 'bbb3.parisson.com')
+            url = url.replace("http://", "https://")
             start = int(str(recording['startTime'])[:-3])
             end = int(str(recording['endTime'])[:-3])
             preview = ""
index 3cf8c1cc1bab13d6631f28a3a4482818a907cc76..f50933f4af2d880e469660774d64f8bc9d74497f 100644 (file)
@@ -120,7 +120,11 @@ class WebclassAppointment(View):
             # self.send_ap_mail(ap)
             messages.add_message(request, messages.INFO,
                                  "Votre réservation a bien été prise en compte.")
-            return HttpResponseRedirect(reverse('teleforma-desk-period-course', kwargs={'period_id': webclass.period.id, 'pk': webclass.course.id}))
+            return HttpResponseRedirect(
+                reverse('teleforma-desk-period-course',
+                    kwargs={'period_id': webclass.period.id,
+                    'pk': webclass.course.id})
+                )
         else:
             messages.add_message(request, messages.ERROR, msg)
         return self.render(request, webclass)
@@ -164,7 +168,7 @@ class WebclassRecordView(TemplateView):
     def get_context_data(self, **kwargs):
         """ """
         context = super(WebclassRecordView, self).get_context_data(**kwargs)
-        context['record_url'] = self.request.GET.get('url')
+        context['record_url'] = self.request.GET.get('url').replace("http://", "https://")
         return context
 
 
@@ -231,3 +235,84 @@ def unregister(request, pk):
                                  "Votre réservation a été annulé.")
     # redirect to register form
     return redirect(reverse("teleforma-webclass-appointments", kwargs={'pk':webclass_slot.webclass.id}))
+
+
+
+@access_required
+def create_cc_bbb_conference(request, period_id, course_id):
+    """
+    Join a bbb webclass for "correction de copie" (cc) with a random room id. 
+    A cron script will later create a WebclassRecord object.
+    """
+
+    username = request.user.get_full_name()
+    is_professor = len(request.user.professor.all()) >= 1
+    is_staff = request.user.is_staff or request.user.is_superuser
+
+    if not is_professor and not is_staff:
+        raise ValueError("User is not a professor or staff")
+    course = Course.objects.get(pk=course_id)
+
+    year = datetime.now().year
+    bbb = BBBServer.objects.get(pk=2).get_instance()
+    # generate password
+    password = User.objects.make_random_password()
+    # generate random room id
+    room_id = "".join(random.choices(string.ascii_letters + string.digits, k=20))
+
+    params = {
+        'name': "Conférence %s" % course.title,
+        'moderatorPW': password,
+        'attendeePW': "PWATTENDEE",
+        # 'maxParticipants':self.webclass_max_participants + 1,
+        'welcome': "Pré-Barreau : Bienvenue sur la conférence \"%s\"." % (course.title),
+        'record': True,
+        'autoStartRecording': False,
+        'allowStartStopRecording': True,
+        'muteOnStart': True,
+        'allowModsToUnmuteUsers': True,
+        'logo':'https://e-learning.crfpa.pre-barreau.com/static/teleforma/images/logo_pb.png',
+        'copyright': "© %d Pré-Barreau" % year,
+        # 'guestPolicy':'ALWAYS_ACCEPT'
+        'bannerText': "Pré-Barreau - CRFPA",
+        'bannerColor': "#003768",
+        # 'customStyleUrl': site_url+"/static/teleforma/css/bbb.css"
+        'logoutURL': "https://e-learning.ae.pre-barreau.com",
+        'endWhenNoModerator': True,
+        'meetingLayout': "VIDEO_FOCUS",
+        "notifyRecordingIsOn": True,
+    }
+
+    meta = {
+        'origin': 'crfpa',
+        'periodid': period_id,
+        'courseid': course_id,
+        'professorid': request.user.id,
+        'type': 'cc',
+    }
+
+    try:
+        result = bbb.create_meeting(
+            room_id, params=params, meta=meta)
+    except BBBException as e:
+        print(e)
+        raise
+
+    try:
+        professor = request.user.professor.get()
+    except Professor.DoesNotExist:
+        professor = None
+
+    WebclassRecord.objects.create(
+        room_id=room_id,
+        bbb_server=BBBServer.objects.get(pk=2),
+        period_id=period_id,
+        course_id=course_id,
+        category=WebclassRecord.CORRECTION,
+        professor=professor,
+    )
+
+    params = {'userID': request.user.username}
+    return redirect(bbb.get_join_meeting_url(
+        username, room_id, password, params).replace("http://", "https://")
+    )