import datetime
import mimetypes
import copy
+from unidecode import unidecode
from django.conf import settings
from django.db.models import *
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
'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,
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
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())
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:
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
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):
{% block infra_javascript %}
<script type="text/javascript">
-{% if show_record %}
+{% if webclass_status == 'past' %}
$(document).ready(function(){
onLoadSeminar('{{seminar.id}}','{{user.username}}')
});
$(window).ready(function(){
$(window).bind('beforeunload', function(){
- console.log('unload')
onUnloadSeminar('{{seminar.id}}','{{user.username}}')
});
});
{% block module-action %}
-{% get_telecaster as telecaster %}
-{% if telecaster %}
-<script type="text/javascript">
- var conferenceUtils = {
- stop : function(id){
- json([id],'teleforma.stop_conference',function(){
- location.href = '{% url teleforma-conference-record %}';
- }
- );
- }}
-
- jQuery(window).ready(function(){
- var a = jQuery('#action_red');
- var f = conferenceUtils;
- a.unbind('click').click(function(){
- f.stop('{{conference.public_id}}');return false;});
- });
-</script>
-
-<div class="module_action">
-<a href="#" class="component_icon button" id="action_red">{% trans "S T O P" %}</a>
-</div>
-{% endif %}
{% endblock module-action %}
{% block course %}
</a>{% if type.name != "None" %} - {{ type }}{% endif %}{% if conference.session %} - {% trans "Session" %} {{ conference.session }}{% endif %}
</div>
-
+{% if not seminar %}
+<p class="warning">Attention, aucun séminaire n'est associé à cette conférence.</p>
+{% endif %}
{% endif %}
-<p>DEBUG : <a href="{% url teleforma-conference-join conference.id %}">Cliquez ici pour rejoindre la conférence</a></p>
+<h3>Liens de test</h3>
+<p>
+Utilisateur courant : <a href="{% url teleforma-conference-join conference.id %}">Cliquez ici pour rejoindre la conférence en tant que <strong>{{ request.user.username }}</strong></a>
+</p>
+<ul>
+{% for i in range %}
+<li>{{i}} : <a href="{% url teleforma-conference-join conference.id %}?username=test{{i}}">Cliquez ici pour rejoindre la conférence en tant que <strong>test{{i}}</strong></a></li>
+{% endfor %}
+</ul>
{% block general_info %}
<div class="course_content" id="media_infos">
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()
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