'obj': seminar.docs_correct,
'step': '5'
}]
+ if seminar.conference and seminar.conference.webclass:
+ objects[2]['obj'] = seminar.conference
for item in objects:
obj = item['obj']
step = item['step']
- for item in obj.all():
+ items = [obj]
+ if hasattr(obj, 'all'):
+ items = obj.all()
+ for item in items:
if item.weight:
total += item.weight
if user in item.readers.all():
from django.contrib.auth.models import User
from django.core.exceptions import ValidationError
from django.contrib.contenttypes import generic
+from django.contrib.sites.models import Site
from notes.models import Note
import jqchat.models
from django.core.paginator import InvalidPage, EmptyPage
class Meta(MetaCore):
abstract = True
+ @property
+ def weight(self):
+ return 50
+
def prepare_webclass(self):
"""
generate room id and moderator password
self.webclass_password = password
- def create_webclass_room(self):
+ def create_webclass_room(self, request):
""" create a BBB room and generate meeting id and moderator password """
if self.webclass_id and self.webclass:
try:
# check if meeting already exists
self.get_webclass_info()
except BBBException:
+ year = datetime.datetime.now().year
+ # site_url = 'https://' + request.get_host()
params = {
'moderatorPW':self.webclass_password,
'attendeePW':'pwattendee',
# 'maxParticipants':self.webclass_max_participants + 1,
- 'welcome':"Bienvenue sur la conférence \"%s\"." % (self.title.encode('utf-8'),),
+ 'welcome':"Pro-Barreau : Bienvenue sur la conférence \"%s\"." % (self.title.encode('utf-8'),),
'record':True,
# 'autoStartRecording':True,
'muteOnStart':True,
'allowModsToUnmuteUsers':True,
+ 'logo':'https://www.pro-barreau.com/static/img/logo_probarreau.png',
+ 'copyright': "© %d Pro-Barreau" % year,
# 'guestPolicy':'ALWAYS_ACCEPT'
+ 'bannerText': "Pro-Barreau",
+ 'bannerColor': "#003768",
+ # 'customStyleUrl': site_url+"/static/teleforma/css/bbb.css"
}
-
+ print params
try:
result = bbb.create_meeting(self.webclass_id, params=params)
register_web_hook()
raise
- def get_join_webclass_url(self, user, username=None):
+ def get_join_webclass_url(self, request, user, username=None):
"""
Get url to BBB meeting.
If user are professor or staff, provide the url with the moderator password
"""
- self.create_webclass_room()
+ self.create_webclass_room(request)
username = user.get_full_name()
is_professor = len(user.professor.all()) >= 1
is_staff = user.is_staff or user.is_superuser
if is_professor or is_staff:
password = self.webclass_password
params = {'userID': user.username}
- 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):
return auditors < self.webclass_max_participants
return True
+ @property
+ def webclass_duration(self):
+ if self.webclass_hours_complementary:
+ seconds = self.duration.as_seconds() - self.webclass_hours_complementary.as_seconds()
+ else:
+ seconds = self.duration.as_seconds()
+ return datetime.timedelta(seconds=seconds)
+
# def clean(self):
# if self.start_date > self.end_date::
# raise ValidationError("Dates are incorrect")
def suggestions(self):
return (list(self.suggested_seminars.all()) + list(self.suggested_conferences.all()))[:3]
+ def set_as_read(self, user):
+ """ set as read for user """
+ if user not in self.readers.all():
+ self.readers.add(user)
+ self.save()
+
class Meta(MetaCore):
db_table = app_label + '_' + 'conference'
verbose_name = _('conference')
--- /dev/null
+body {
+ background-color:red;
+}
\ No newline at end of file
{% if webclass_status == 'past' %}
{% if record %}
- <p>La conférence est terminée, vous pouvez la revoir ci-dessous.
+ <p>La conférence est terminée, vous pouvez la revoir ci-dessous.</p>
<a href="{% url teleforma-conference-webclass-record conference.id%}" class="conference-big-button component_icon button icon_next">Voir l'enregistrement</a>
{% else %}
- <p>La conférence est terminée. L'enregistrement n'est pas encore ligne.
+ <p>La conférence est terminée. L'enregistrement n'est pas encore ligne.</p>
{% endif %}
{% elif webclass_status == 'ingoing' %}
<p>La conférence est en cours.</p>
<a href="{% url teleforma-conference-join conference.id %}" target="_blank" class="conference-big-button component_icon button icon_next">Cliquez ici pour rejoindre la conférence</a>
{% elif webclass_status == 'almost' %}
- <p>La conférence va bientôt démarrer. </p>
- <a href="{% url teleforma-conference-join conference.id %}" target="_blank" class="conference-big-buttoncomponent_icon button icon_next">Cliquez ici pour rejoindre la conférence</a>
+ <p>Le salon « Pro-Barreau Live » est accessible.</p>
+ <a href="{% url teleforma-conference-join conference.id %}" target="_blank" class="conference-big-button component_icon button icon_next">Cliquez ici pour rejoindre la conférence</a>
{% elif webclass_status == 'future' %}
- <p>La conférence est prévue pour le {{ conference.date_begin }}. Revenez ici à ce moment là pour pouvoir la rejoindre.</p>
+ <p>
+ Votre Webconférence débutera le <strong>{{ conference.date_begin|date:"d/m/Y" }} à {{ conference.date_begin|time:"H\hi" }}</strong>.
+ Vous pourrez accéder au salon « Pro-Barreau Live » dès {{ begin_minus_1_hour|time:"H\hi" }} en cliquant sur le lien qui apparaitra ci-dessous.
+ </p>
{% endif %}
{% if user.is_superuser %}
<div style="border:1px solid grey">
-<h3>Liens de test</h3>
+<h3>Liens d'invitation</h3>
<p>
-Utilisateur courant : <a href="{% url teleforma-conference-join conference.id %}" target="_blank">Cliquez ici pour rejoindre la conférence en tant que <strong>{{ request.user.username }}</strong></a>
+Se connecter en tant qu'admin : <a href="{% url teleforma-conference-join conference.id %}" target="_blank">Cliquez ici pour rejoindre la conférence en tant que <strong>{{ request.user.username }}</strong></a>
</p>
<ul>
{% for i in range %}
-<li><a href="{% url teleforma-conference-join conference.id %}?username=test{{i}}" target="_blank">Cliquez ici pour rejoindre la conférence en tant que <strong>test{{i}}</strong></a></li>
+<li><a href="{% url teleforma-conference-join conference.id %}?username=utilisateur{{i}}" target="_blank">Cliquez ici pour rejoindre la conférence en tant que <strong>utilisateur{{i}}</strong></a></li>
{% endfor %}
</ul>
</div>
<dt>{% trans "Begin date" %}</dt><dd>{{ conference.date_begin }}</dd>
{% if conference.date_end %}<dt>{% trans "End date" %}</dt><dd>{{ conference.date_end }}</dd>{% endif %}
{% comment %} <dt>{% trans "Live" %}</dt><dd>{% if is_webclass_running %}{% trans "Yes" %}{% else %}{% trans "No" %}{% endif %}</dd> {% endcomment %}
+<dt>{% trans "Duration" %}</dt><dd>{{ conference.webclass_duration|hours }} {% trans "hours" %}</dd>
<dt>{% trans "Live" %}</dt><dd>{% trans "Yes" %}</dd>
{% comment %} {% if conference.room %}<dt>{% trans "Room" %}</dt><dd>{{ conference.room }}</dd>{% endif %} {% endcomment %}
{% if user.is_staff or user.is_superuser %}
--- /dev/null
+{% load teleforma_tags %}
+{% load thumbnail %}
+{% load i18n %}
+
+<table class="listing" width="100%">
+ <tbody>
+ <tr>
+ <td class="border-top" width="90%">
+ <a href="{% url teleforma-conference-detail webclass.id %}">Voir la conférence</a>
+ </td>
+ <td class="border-top" width="10%" align="center">
+ {% if user in webclass.readers.all %}
+ <img src="{{ STATIC_URL }}telemeta/images/ok.png" style="vertical-align:middle" alt="" title="{% trans ' viewed' %}" />
+ {% else %}
+ <img src="{{ STATIC_URL }}telemeta/images/delete.png" style="vertical-align:middle" alt="" title="{% trans ' not viewed yet' %}" />
+ {% endif %}
+ </td>
+ </tr>
+ </tbody>
+</table>
</div>
{% endwith %}
- {% with seminar.medias as medias %}
- <div class="course_content">
- <div class="course_subtitle">
- <h3><img src="{{ STATIC_URL }}/telemeta/images/item_title.png" width="10px" alt="" /> {% trans "Step" %} 2 : {% if medias.all.count > 1 %}{% trans "view these conferences" %}{% else %}{% trans "view this conference" %}{% endif %}</h3>
+ {% if seminar.conference.webclass %}
+ {% with seminar.conference as webclass %}
+ <div class="course_content">
+ <div class="course_subtitle">
+ <h3><img src="{{ STATIC_URL }}/telemeta/images/item_title.png" width="10px" alt="" /> {% trans "Step" %} 2 : {% trans "view this conference" %}</h3>
+ </div>
+ {% include "teleforma/inc/webclass.html" %}
</div>
- {% include "teleforma/inc/media_package_list.html" %}
- </div>
- {% endwith %}
+ {% endwith %}
+ {% else %}
+ {% with seminar.medias as medias %}
+ <div class="course_content">
+ <div class="course_subtitle">
+ <h3><img src="{{ STATIC_URL }}/telemeta/images/item_title.png" width="10px" alt="" /> {% trans "Step" %} 2 : {% if medias.all.count > 1 %}{% trans "view these conferences" %}{% else %}{% trans "view this conference" %}{% endif %}</h3>
+ </div>
+ {% include "teleforma/inc/media_package_list.html" %}
+ </div>
+ {% endwith %}
+ {% endif %}
+
+
{% if seminar.quiz %}
<div class="course_content">
from django.core.exceptions import ObjectDoesNotExist
from django.contrib.syndication.views import Feed
from django.core.paginator import Paginator
+from django.core.urlresolvers import resolve
from django.contrib.auth.decorators import login_required
from django.contrib.contenttypes.models import ContentType
from django.views.generic.edit import FormView
webclass_status = ""
now = datetime.datetime.now()
- if conference.date_begin - timedelta(hours=1) > now:
+
+ begin_minus_1_hour = conference.date_begin - timedelta(hours=1)
+ if now < begin_minus_1_hour:
# conference not yet started
webclass_status = "future"
- elif conference.date_end < now:
+ elif conference.date_end + timedelta(hours=1) < now:
# conference expired
webclass_status = "past"
context['record'] = conference.get_record()
- elif conference.date_begin - timedelta(hours=1) < now < conference.date_begin:
+ elif begin_minus_1_hour < now < conference.date_begin:
# conference can be joined
webclass_status = "almost"
else:
webclass_status = "ingoing"
+ context['begin_minus_1_hour'] = begin_minus_1_hour
context['record'] = conference.get_record()
context['webclass_status'] = webclass_status
+
+ # set conf as read when user navigate to the record page
+ if resolve(self.request.path).url_name == "teleforma-conference-webclass-record":
+ conference.set_as_read(self.request.user)
+
else:
content_type = ContentType.objects.get(app_label="teleforma", model="conference")
context['livestreams'] = conference.livestream.all()
# fake debug links
username = request.GET.get('username')
if username:
- return redirect(conference.get_fake_join_webclass_url(username))
+ return redirect(conference.get_fake_join_webclass_url(request, username))
user = request.user
authorized = False
authorized = True
if authorized:
- return redirect(conference.get_join_webclass_url(user))
+ conference.set_as_read(user)
+ return redirect(conference.get_join_webclass_url(request, user))
else:
return HttpResponse('Unauthorized', status=401)