From: Guillaume Pellerin Date: Mon, 24 Apr 2017 12:17:11 +0000 (+0200) Subject: Add WebClass, add Training.parent X-Git-Tag: 1.1~27 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=3284dddf225bf92564c82da8d8cf0e6868d1c849;p=teleforma.git Add WebClass, add Training.parent --- diff --git a/teleforma/models/core.py b/teleforma/models/core.py index a6a92d60..d6169320 100644 --- a/teleforma/models/core.py +++ b/teleforma/models/core.py @@ -294,6 +294,8 @@ class Conference(Model): readers = models.ManyToManyField(User, related_name="conference", verbose_name=_('readers'), blank=True, null=True) status = models.IntegerField(_('status'), choices=STATUS_CHOICES, default=2) + web_class_group = models.ForeignKey('WebClassGroup', related_name='conferences', verbose_name=_('web class group'), + blank=True, null=True, on_delete=models.SET_NULL) @property def description(self): @@ -356,6 +358,7 @@ class Conference(Model): 'streams': [], 'date_begin': self.date_begin.strftime('%Y %m %d %H %M %S') if self.date_begin else 'None', 'date_end': self.date_end.strftime('%Y %m %d %H %M %S') if self.date_end else 'None', + 'web_class_group': self.web_class_group.name if self.web_class_group else 'None', } if self.room: @@ -410,6 +413,11 @@ class Conference(Model): self.room, c = Room.objects.get_or_create(name=data['room'], organization=organization) + if 'web_class_group' in data: + if data['web_class_group'] != 'None': + self.web_class_group = WebClassGroup.objet.get(name=data['web_class_group']) + + class Meta(MetaCore): db_table = app_label + '_' + 'conference' verbose_name = _('conference') diff --git a/teleforma/models/crfpa.py b/teleforma/models/crfpa.py index a298e649..87435c0d 100644 --- a/teleforma/models/crfpa.py +++ b/teleforma/models/crfpa.py @@ -42,8 +42,8 @@ from teleforma.models.core import * class IEJ(Model): - name = models.CharField(_('name'), max_length=255) - description = models.CharField(_('description'), max_length=255, blank=True) + name = models.CharField(_('name'), max_length=255) + description = models.CharField(_('description'), max_length=255, blank=True) def __unicode__(self): return self.name @@ -55,12 +55,31 @@ class IEJ(Model): ordering = ['name'] +class WebClassGroup(modles.Model): + + name = models.CharField(_('name'), max_length=255) + iejs = models.ManyToManyField('IEJ', related_name="web_class_group", verbose_name=_('IEJ'), + blank=True, null=True) + + class Meta(MetaCore): + verbose_name = _('web class group') + verbose_name_plural = _('web class group') + ordering = ['name'] + + def to_json_dict(self): + data = {'name': self.name, + 'iejs': [iej.name for iej in self.iejs.all()], + } + return data + + class Training(Model): code = models.CharField(_('code'), max_length=255) name = models.CharField(_('name'), max_length=255, blank=True) description = models.CharField(_('description'), max_length=512, blank=True) period = models.ForeignKey('Period', related_name='training', verbose_name=_('period'), blank=True, null=True) + parent = models.ForeignKey('Training', related_name='parent', verbose_name=_('children'), blank=True, null=True) synthesis_note = models.ManyToManyField('CourseType', related_name="training_synthesis_note", verbose_name=_('synthesis note'), blank=True, null=True) obligation = models.ManyToManyField('CourseType', related_name="training_obligation", diff --git a/teleforma/templates/teleforma/course_conference.html b/teleforma/templates/teleforma/course_conference.html index bbdd17ed..99a0c527 100644 --- a/teleforma/templates/teleforma/course_conference.html +++ b/teleforma/templates/teleforma/course_conference.html @@ -36,30 +36,26 @@
 {% trans "Audio" %}
- -{{ course.title }} - {{ type }} - {% trans "Session" %} {{ conference.session }} - + {{ course.title }} - {{ type }} - {% trans "Session" %} {{ conference.session }}
+ {% if access_error %}

{{ access_error }}

{{ message }}

- {% else %} - -{% for livestream in livestreams %} -{% if "webm" == livestream.stream_type %} -
- -
+ {% for livestream in livestreams %} + {% if "webm" == livestream.stream_type %} +
+ +
+ {% endif %} + {% endfor %} {% endif %} -{% endfor %} -{% endif %}
{% block general_info %} @@ -67,18 +63,19 @@
{% if conference.professor %} -
{% trans "Course" %}
{{ conference.course.title }} - {{ conference.course_type }}
-
{% trans "Session" %}
{{ conference.session }}
-
{% trans "Professor" %}
-
{{ conference.professor }}
+
{% trans "Course" %}
{{ conference.course.title }} - {{ conference.course_type }}
+
{% trans "Session" %}
{{ conference.session }}
+
{% trans "Professor" %}
+
{{ conference.professor }}
{% 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 user.is_staff or user.is_superuser %} -
{% trans "Conference ID" %}
{{ conference.public_id }}
+
{% 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 user.is_staff or user.is_superuser %} +
{% trans "Conference ID" %}
{{ conference.public_id }}
{% endif %}
@@ -87,4 +84,3 @@ {% endblock course %} - diff --git a/teleforma/templates/teleforma/course_detail.html b/teleforma/templates/teleforma/course_detail.html index 07ae0873..fe86cb0c 100644 --- a/teleforma/templates/teleforma/course_detail.html +++ b/teleforma/templates/teleforma/course_detail.html @@ -63,4 +63,4 @@ $(document).ready(function(){ {% endif %} {% endif %} {% endif %} -{% endblock chat %} \ No newline at end of file +{% endblock chat %} diff --git a/teleforma/templates/teleforma/course_media.html b/teleforma/templates/teleforma/course_media.html index 2f0ae744..8eeabde3 100644 --- a/teleforma/templates/teleforma/course_media.html +++ b/teleforma/templates/teleforma/course_media.html @@ -96,15 +96,16 @@ $(document).ready(function(){ {% if "video" in media.mime_type %}
- +
{% elif "audio" in media.mime_type %}
{% if media.item.related.all %} + {% for related in media.item.related.all %} {% if related.title == "preview" %} {% thumbnail related.file "300" as im %} @@ -112,14 +113,16 @@ $(document).ready(function(){ {% endthumbnail %} {% endif %} {% endfor %} + {% else %} snapshot {% endif %} +
- +
{% endif %} @@ -147,6 +150,7 @@ $(document).ready(function(){
{% trans "Date modified" %}
{{ media.date_modified }}
{% trans "Media ID" %}
{{ media.id }}
{% trans "Conference ID" %}
{{ media.conference.public_id }}
+
{% trans "Web class group" %}
{{ media.conference.web_class_group }}
{% endif %} {% endif %} diff --git a/teleforma/views/core.py b/teleforma/views/core.py index 380e5d4f..cb18088a 100644 --- a/teleforma/views/core.py +++ b/teleforma/views/core.py @@ -145,6 +145,7 @@ def get_room(content_type=None, id=None, name=None, period=None): room = rooms[0] return room + def get_access(obj, courses): access = False for course in courses: @@ -394,7 +395,12 @@ class MediaView(CourseAccessMixin, DetailView): context['type'] = media.course_type # context['notes'] = media.notes.all().filter(author=self.request.user) content_type = ContentType.objects.get(app_label="teleforma", model="course") - context['room'] = get_room(name=media.course.code,period=context['period'].name, + + room_name = media.course.code + if media.conference.web_class_group: + room_name += '_' + media.conference.public_id + + context['room'] = get_room(name=room_name,period=context['period'].name, content_type=content_type, id=media.course.id) @@ -527,9 +533,15 @@ class ConferenceView(CourseAccessMixin, DetailView): context['type'] = conference.course_type # context['notes'] = conference.notes.all().filter(author=self.request.user) content_type = ContentType.objects.get(app_label="teleforma", model="course") - context['room'] = get_room(name=conference.course.code, period=context['period'].name, + + room_name = conference.course.code + if conference.web_class_group: + room_name += '_' + conference.public_id + + context['room'] = get_room(name=room_name, period=context['period'].name, content_type=content_type, id=conference.course.id) + context['livestreams'] = conference.livestream.all() context['host'] = get_host(self.request) access = get_access(conference, context['all_courses']) @@ -709,10 +721,12 @@ class ConferenceRecordView(FormView): stream = LiveStream(conference=conference, server=server, stream_type=stream_type, streaming=True) stream.save() - try: - live_message(conference) - except: - pass + + if not conference.web_class_group: + try: + live_message(conference) + except: + pass else: raise 'Error : input must be a conference dictionnary' @@ -753,6 +767,25 @@ class ProfessorListView(View): professor.save() +class WebClassGroupView(View): + + @jsonrpc_method('teleforma.get_web_class_group_list') + def get_web_class_group_list(request): + web_class_groups = WebClassGroup.objects.all() + return [w.to_json_dict() for w in web_class_groups] + + def pull(request, host=None): + if host: + url = 'http://' + host + '/json/' + else: + url = 'http://' + settings.TELECASTER_MASTER_SERVER + '/json/' + s = ServiceProxy(url) + + remote_list = s.teleforma.get_web_class_group_list() + for web_class_group_dict in remote_list['result']: + web_class_group, c = WebClassGroup.objects.get_or_create(name=web_class_group_dict['name']) + + class HelpView(TemplateView): template_name='teleforma/help.html'