From: Yoan Le Clanche Date: Thu, 14 May 2020 09:51:56 +0000 (+0200) Subject: WIP X-Git-Tag: 2.8.1-pro~187^2~8 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=674a6ff0a8c429561f5660cecde8afbb98efbd9a;p=teleforma.git WIP --- diff --git a/teleforma/management/commands/teleforma-revisions-from-bbb.py b/teleforma/management/commands/teleforma-revisions-from-bbb.py index 994cc476..c9f68fcd 100644 --- a/teleforma/management/commands/teleforma-revisions-from-bbb.py +++ b/teleforma/management/commands/teleforma-revisions-from-bbb.py @@ -72,3 +72,5 @@ class Command(BaseCommand): date = start, date_modified = end) sr.save() + sr.date = start + sr.save() diff --git a/teleforma/models/core.py b/teleforma/models/core.py index 30842d75..7c77262a 100755 --- a/teleforma/models/core.py +++ b/teleforma/models/core.py @@ -43,6 +43,7 @@ import string import datetime import mimetypes import copy +from unidecode import unidecode from django.conf import settings from django.db.models import * @@ -541,7 +542,8 @@ class WebclassMixin(Model): generate room id and moderator password """ if not self.webclass_id and self.webclass: - meeting_id = self.slug + "-" + self.period + # not sure why, but the slug contains accent + meeting_id = unidecode(self.slug) + "-" + str(self.period) password = User.objects.make_random_password() self.webclass_id = meeting_id self.webclass_password = password @@ -558,7 +560,7 @@ class WebclassMixin(Model): 'moderatorPW':self.webclass_password, 'attendeePW':'pwattendee', # 'maxParticipants':self.webclass_max_participants + 1, - 'welcome':"Bienvenue sur la conférence \"%s\"." % (str(self.title),), + 'welcome':"Bienvenue sur la conférence \"%s\"." % (self.title.encode('utf-8'),), 'record':True, # 'autoStartRecording':True, 'muteOnStart':True, @@ -574,7 +576,7 @@ class WebclassMixin(Model): raise - def get_join_webclass_url(self, user): + def get_join_webclass_url(self, user, username=None): """ Get url to BBB meeting. If user are professor or staff, provide the url with the moderator password @@ -590,6 +592,17 @@ class WebclassMixin(Model): print(bbb.get_join_meeting_url(username, self.webclass_id, password, params)) return bbb.get_join_meeting_url(username, self.webclass_id, password, params) + def get_fake_join_webclass_url(self, username): + """ + Fake join url for testing purpose + Get url to BBB meeting. + If user are professor or staff, provide the url with the moderator password + """ + self.create_webclass_room() + password = 'pwattendee' + params = {'userID': username} + return bbb.get_join_meeting_url(username, self.webclass_id, password, params) + def is_webclass_running(self): """ Is webclass currently running ? """ # print(self.get_webclass_info()) @@ -604,7 +617,11 @@ class WebclassMixin(Model): def get_record(self): """ get longest published record for the current conference """ all_records = [] - for recording in bbb.get_recordings(self.webclass_id).get_field('recordings')['recording']: + recordings = [] + recordings_xml = bbb.get_recordings(self.webclass_id).get_field('recordings') + if hasattr(recordings_xml, 'get'): + recordings = recordings_xml['recording'] + for recording in recordings: recording.prettyprint() url = recording.get('playback', {}).get('format', {}).get('url') if url: @@ -623,6 +640,7 @@ class WebclassMixin(Model): if not all_records: return None all_records = sorted(all_records, key=lambda record:-record['duration']) + longest_record = all_records[0] if not longest_record['url'] or longest_record['state'] != 'published': return None @@ -638,7 +656,9 @@ class WebclassMixin(Model): return auditors < self.webclass_max_participants return True - + # def clean(self): + # if self.start_date > self.end_date:: + # raise ValidationError("Dates are incorrect") class Conference(Displayable, WebclassMixin): diff --git a/teleforma/templates/teleforma/course_webclass.html b/teleforma/templates/teleforma/course_webclass.html index 8107b636..f3945aba 100644 --- a/teleforma/templates/teleforma/course_webclass.html +++ b/teleforma/templates/teleforma/course_webclass.html @@ -7,14 +7,13 @@ {% block infra_javascript %} - -
-{% trans "S T O P" %} -
-{% endif %} {% endblock module-action %} {% block course %} @@ -59,7 +35,9 @@ $(window).ready(function(){ {% if type.name != "None" %} - {{ type }}{% endif %}{% if conference.session %} - {% trans "Session" %} {{ conference.session }}{% endif %} - +{% if not seminar %} +

Attention, aucun séminaire n'est associé à cette conférence.

+{% endif %} @@ -83,8 +61,16 @@ $(window).ready(function(){ {% endif %} -

DEBUG : Cliquez ici pour rejoindre la conférence

+

Liens de test

+

+Utilisateur courant : Cliquez ici pour rejoindre la conférence en tant que {{ request.user.username }} +

+ {% block general_info %}
diff --git a/teleforma/views/core.py b/teleforma/views/core.py index b5d2d571..97b5e83a 100644 --- a/teleforma/views/core.py +++ b/teleforma/views/core.py @@ -450,8 +450,13 @@ class ConferenceView(DetailView): if conference.webclass: context['is_webclass_running'] = conference.is_webclass_running() context['show_record'] = True - context['seminar'] = conference.seminar.all()[0] + try: + context['seminar'] = conference.seminar.all()[0] + except IndexError : + context['seminar'] = None context['record'] = None + # debug -> test links + context['range'] = range(0,15) webclass_status = "" now = datetime.datetime.now() @@ -518,6 +523,10 @@ class ConferenceView(DetailView): def join_webclass(request, pk): conference = Conference.objects.get(pk=int(pk)) + # fake debug links + username = request.GET.get('username') + if username: + return redirect(conference.get_fake_join_webclass_url(username)) user = request.user authorized = False