From: Guillaume Pellerin Date: Tue, 10 Jun 2025 15:00:47 +0000 (+0200) Subject: replace all http by https for webclass X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=b2ab42b2f46245133a000f35c7ed39118bdebf71;p=teleforma.git replace all http by https for webclass --- diff --git a/teleforma/webclass/models.py b/teleforma/webclass/models.py index ec5afbba..dcee67d4 100644 --- a/teleforma/webclass/models.py +++ b/teleforma/webclass/models.py @@ -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 = "" diff --git a/teleforma/webclass/views.py b/teleforma/webclass/views.py index 3cf8c1cc..f50933f4 100644 --- a/teleforma/webclass/views.py +++ b/teleforma/webclass/views.py @@ -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://") + )