From e63452c9c6bdf9602867019c129580897c1398c2 Mon Sep 17 00:00:00 2001 From: Yoan Le Clanche Date: Tue, 5 May 2020 10:40:45 +0200 Subject: [PATCH] WIP --- teleforma/models/core.py | 37 ++++++++----- .../templates/teleforma/course_webclass.html | 52 +++++++++++-------- teleforma/views/core.py | 33 ++++++------ teleforma/views/pro.py | 1 + 4 files changed, 73 insertions(+), 50 deletions(-) diff --git a/teleforma/models/core.py b/teleforma/models/core.py index 5e897b21..784b9f04 100644 --- a/teleforma/models/core.py +++ b/teleforma/models/core.py @@ -536,11 +536,10 @@ class WebclassMixin(Model): abstract = True def create_webclass_room(self): - """ """ - if not self.webclass_id: - meeting_id = self.slug + "-" + self.period - # TODO : generate password - password = 'pw' + """ create a BBB room and generate meeting id and moderator password """ + if not self.webclass_id and self.webclass: + meeting_id = self.slug + "-" + str(self.period) + password = User.objects.make_random_password() params = { 'moderatorPW':password, # 'maxParticipants':self.webclass_max_participants + 1, @@ -553,7 +552,7 @@ class WebclassMixin(Model): } try: - result = bbb.create_meeting(self.slug+'2', params=params) + result = bbb.create_meeting(meeting_id, params=params) except BigBlueButton.BBBException: raise @@ -562,14 +561,24 @@ class WebclassMixin(Model): self.webclass_password = password - def join_webclass(self, username): - """ """ - print(bbb.get_join_meeting_url('user','fake2', 'pw')) - - def get_webclass_info(self): - """ """ - info = bbb.get_meeting_info(self.webclass_id) - import pdb;pdb.set_trace() + def get_join_webclass_url(self, request): + """ + Get url to BBB meeting. + If user are professor or staff, provide the url with the moderator password + """ + username = request.user.get_full_name() + is_professor = len(request.user.professor.all()) >= 1 + is_staff = request.user.is_staff + password = (is_professor or is_staff) and self.webclass_password or "" + return bbb.get_join_meeting_url(username, self.webclass_id, password) + + def is_webclass_running(self): + """ Is webclass currently running ? """ + return bbb.is_meeting_running(self.webclass_id).get_field('running').decode() == 'true' or False + + # def get_webclass_info(self): + # """ """ + # return bbb.get_meeting_info(self.webclass_id) diff --git a/teleforma/templates/teleforma/course_webclass.html b/teleforma/templates/teleforma/course_webclass.html index 318fb445..a154f537 100644 --- a/teleforma/templates/teleforma/course_webclass.html +++ b/teleforma/templates/teleforma/course_webclass.html @@ -3,6 +3,27 @@ {% load teleforma_tags %} {% load i18n %} + +{% block infra_javascript %} + + + +{% endblock infra_javascript %} + + {% block module-action %} {% get_telecaster as telecaster %} {% if telecaster %} @@ -33,27 +54,16 @@
-
-  {% trans "Audio" %} -
- -{{ course.title }}{% if type.name != "None" %} - {{ type }}{% endif %}{% if conference.session %} - {% trans "Session" %} {{ conference.session }}{% endif %} - + + {{ course.title }} + {% if type.name != "None" %} - {{ type }}{% endif %}{% if conference.session %} - {% trans "Session" %} {{ conference.session }}{% endif %}
-
-{% for livestream in livestreams %} -{% if "webm" == livestream.stream_type %} -
- -
-{% endif %} -{% endfor %} +Rejoindre la webclasse : webclass_url +
+
{% block general_info %} @@ -68,11 +78,11 @@ {% endif %} {% if conference.comment %}
{% trans "Comment" %}
{{ conference.comment }}
{% endif %}
{% trans "Begin date" %}
{{ conference.date_begin }}
-{% if conference.date_end %}
{% trans "End date" %}
{{ conference.date_end|yes_no }}
{% endif %} -
{% trans "Live" %}
{% trans "Yes" %}
-{% if conference.room %}
{% trans "Room" %}
{{ conference.room }}
{% endif %} +{% if conference.date_end %}
{% trans "End date" %}
{{ conference.date_end }}
{% endif %} +
{% trans "Live" %}
{% if is_webclass_running %}{% trans "Yes" %}{% else %}{% trans "No" %}{% endif %}
+{% comment %} {% if conference.room %}
{% trans "Room" %}
{{ conference.room }}
{% endif %} {% endcomment %} {% if user.is_staff or user.is_superuser %} -
{% trans "Conference ID" %}
{{ conference.public_id }}
+
{% trans "Conference ID" %}
{{ conference.webclass_id }}
{% endif %} diff --git a/teleforma/views/core.py b/teleforma/views/core.py index c2fc5df1..0f4ec004 100644 --- a/teleforma/views/core.py +++ b/teleforma/views/core.py @@ -446,30 +446,33 @@ class ConferenceView(DetailView): def get_context_data(self, **kwargs): context = super(ConferenceView, self).get_context_data(**kwargs) conference = self.get_object() - if conference.webclass: - webclass_info = conference.get_webclass_info() - context.update(webclass_info) + if conference.webclass: + context['is_webclass_running'] = conference.is_webclass_running() + context['webclass_url'] = conference.get_join_webclass_url(self.request) + context['show_record'] = True + context['seminar'] = conference.seminar.all()[0] else: - all_courses = get_courses(self.request.user) - context['all_courses'] = all_courses - context['course'] = conference.course - context['type'] = conference.course_type - context['notes'] = conference.notes.all().filter(author=self.request.user) content_type = ContentType.objects.get(app_label="teleforma", model="conference") - if settings.TELEFORMA_GLOBAL_TWEETER: - context['room'] = get_room(name='site') - else: - context['room'] = get_room(name=conference.course.title, content_type=content_type, - id=conference.id) context['livestreams'] = conference.livestream.all() context['host'] = get_host(self.request) access = get_course_access(conference, all_courses) if not access: context['access_error'] = access_error context['message'] = contact_message - context['periods'] = get_periods(self.request.user) - context['conferences'] = all_conferences(self.request) + + all_courses = get_courses(self.request.user) + context['all_courses'] = all_courses + context['notes'] = conference.notes.all().filter(author=self.request.user) + context['type'] = conference.course_type + context['course'] = conference.course + context['periods'] = get_periods(self.request.user) + context['conferences'] = all_conferences(self.request) + if settings.TELEFORMA_GLOBAL_TWEETER: + context['room'] = get_room(name='site') + else: + context['room'] = get_room(name=conference.course.title, content_type=content_type, + id=conference.id) return context @jsonrpc_method('teleforma.stop_conference') diff --git a/teleforma/views/pro.py b/teleforma/views/pro.py index f93dfacd..d521c73e 100644 --- a/teleforma/views/pro.py +++ b/teleforma/views/pro.py @@ -168,6 +168,7 @@ class SeminarRevisionMixin(object): @jsonrpc_method('teleforma.seminar_unload') def seminar_unload(request, id, username): + import pdb;pdb.set_trace() seminar = Seminar.objects.get(id=id) user = User.objects.get(username=username) all_revisions = SeminarRevision.objects.filter(user=user, date__gte=REVISION_DATE_FILTER, date_modified=None) -- 2.39.5