]> git.parisson.com Git - teleforma.git/commitdiff
Fix Conference.class_group management
authorGuillaume Pellerin <guillaume.pellerin@ircam.fr>
Mon, 21 Jan 2019 17:26:36 +0000 (18:26 +0100)
committerGuillaume Pellerin <guillaume.pellerin@ircam.fr>
Mon, 21 Jan 2019 17:26:36 +0000 (18:26 +0100)
teleforma/admin.py
teleforma/templates/teleforma/course_media.html
teleforma/templates/teleforma/inc/conference_list.html
teleforma/templatetags/teleforma_tags.py
teleforma/views/core.py

index d8f0564dd8dc12f7362ac9afacf69243344de5d4..d8fee6fc9b41d0386547de47d13b8681e5260e01 100644 (file)
@@ -98,9 +98,9 @@ class BalanceFilter(admin.SimpleListFilter):
         value = self.value()
         if value == 'ltz':
             return queryset.filter(balance__lt = 0)
-        elif value == 'eqz':    
+        elif value == 'eqz':
             return queryset.filter(balance = 0)
-        elif value == 'gtz':    
+        elif value == 'gtz':
             return queryset.filter(balance__gt = 0)
         else:
             return queryset
@@ -325,6 +325,10 @@ class AppointmentAdmin(admin.ModelAdmin):
     export_csv.short_description = "Exporter en CSV"
 
 
+class ClassGroupAdmin(admin.ModelAdmin):
+    model = ClassGroup
+
+
 admin.site.unregister(User)
 admin.site.register(Organization)
 admin.site.register(Department)
@@ -332,6 +336,7 @@ admin.site.register(Period)
 admin.site.register(Course, CourseAdmin)
 admin.site.register(Conference, ConferenceAdmin)
 admin.site.register(IEJ)
+admin.site.register(ClassGroup, ClassGroupAdmin)
 admin.site.register(Document, DocumentAdmin)
 admin.site.register(DocumentSimple)
 admin.site.register(DocumentType)
index 9feada4e9b97cdba7c0baa5c0cb3f5531065753d..a0f017234fe16332858ca5f72a29e2177192477c 100644 (file)
@@ -150,7 +150,7 @@ $(document).ready(function(){
 <dt>{% trans "Date modified" %}</dt><dd>{{ media.date_modified }}</dd>
 <dt>{% trans "Media ID" %}</dt><dd>{{ media.id }}</dd>
 <dt>{% trans "Conference ID" %}</dt><dd>{{ media.conference.public_id }}</dd>
-<dt>{% trans "Web class group" %}</dt><dd>{{ media.conference.web_class_group }}</dd>
+<dt>{% trans "Class group" %}</dt><dd>{{ media.conference.class_group }}</dd>
 {% endif %}
 {% endif %}
 
index 8979649f24e7eceac80cf40445154236d7f5d019..18d11badedbe9fc041a4303680bfb3423df917ec 100644 (file)
@@ -1,53 +1,54 @@
 {% load teleforma_tags %}
 {% load i18n %}
 
-{% with course.conference.all|from_course_type:type as conferences %}
-{% if conferences|from_period:period %}
+{% with course.conference.all|from_course_type:type|from_period:period as conferences %}
+{% if conferences %}
 <div class="course_content content_video">
 <div class="course_subtitle">
     <h3><img src="/static/telemeta/images/item_title.png" width="10px" alt="" /> {% trans "Live conferences"%}</h3>
 </div>
-    <table class="listing" width="100%">
+  <table class="listing" width="100%">
     <tbody>
-       {% for conference in conferences|from_period:period %}
-        {% for stream in conference.livestream.all %}
-         {% if stream.stream_type == 'webm' %}
-            <tr>
-            {% if stream.streaming %}
-            <td {% if forloop.first %}class="border-top"{% endif %} width="230px">
-               <a href="{% url teleforma-conference-detail period.id stream.conference.id %}" title="{% trans "View" %}">
-               <img id="snapshot-{{ stream.course.code }}-{{ stream.course_type }}" src="{{ stream.snapshot_url }}" width="100%" alt="{% trans 'Click here' %}" />
-               </a>
-            </td>
-            <td {% if forloop.first %}class="border-top"{% endif %} width="60%" style="padding-left: 1em;">
-                <div>
-                    <dl class="listing" style="font-size: 1.2em;">
-                    <dt>{% trans "Title" %}</dt><dd>{{ stream.conference.course.title }}</dd>
-                    <dt>{% trans "Session" %}</dt><dd>{{ stream.conference.session }}</dd>
-                    {% if stream.conference.professor.user.username %}
-                    <dt>{% trans "Professor" %}</dt><dd><a href="{% url telemeta-profile-detail stream.conference.professor.user.username %}" target="_blank">{{ stream.conference.professor }}</a></dd>
-                    {% endif %}
-                    <dt>{% trans "Begin" %}</dt><dd>{{ stream.conference.date_begin }}</dd>
-                    </dl>
-                 </div>
-            </td>
-            <td {% if forloop.first %}class="border-top"{% endif %} width="10%" align="center">
+      {% for conference in conferences %}
+        {% if not conference.class_group or conference.class_group|class_group_allows_user:user %}
+          {% for stream in conference.livestream.all %}
+            {% if stream.stream_type == 'webm' %}
+              <tr>
                 {% if stream.streaming %}
-                <img src="/static/teleforma/images/network-wireless.png" style="vertical-align:middle" title="streaming" />
-                <img src="/static/telemeta/images/media-record.png" style="vertical-align:middle" title="recording" />
-              {% endif %}
-            </td>
-            {% else %}
-            <div style="padding-left: 1em;">
-
-            </div>
-             {% endif %}
-            </tr>
+                    <td {% if forloop.first %}class="border-top"{% endif %} width="230px">
+                        <a href="{% url teleforma-conference-detail period.id stream.conference.id %}" title="{% trans "View" %}">
+                        <img id="snapshot-{{ stream.course.code }}-{{ stream.course_type }}" src="{{ stream.snapshot_url }}" width="100%" alt="{% trans 'Click here' %}" />
+                        </a>
+                    </td>
+                    <td {% if forloop.first %}class="border-top"{% endif %} width="60%" style="padding-left: 1em;">
+                        <div>
+                            <dl class="listing" style="font-size: 1.2em;">
+                            <dt>{% trans "Title" %}</dt><dd>{{ stream.conference.course.title }}</dd>
+                            <dt>{% trans "Session" %}</dt><dd>{{ stream.conference.session }}</dd>
+                            {% if stream.conference.professor.user.username %}
+                              <dt>{% trans "Professor" %}</dt><dd><a href="{% url telemeta-profile-detail stream.conference.professor.user.username %}" target="_blank">{{ stream.conference.professor }}</a></dd>
+                            {% endif %}
+                            <dt>{% trans "Begin" %}</dt><dd>{{ stream.conference.date_begin }}</dd>
+                            </dl>
+                        </div>
+                    </td>
+                    <td {% if forloop.first %}class="border-top"{% endif %} width="10%" align="center">
+                        {% if stream.streaming %}
+                            <img src="/static/teleforma/images/network-wireless.png" style="vertical-align:middle" title="streaming" />
+                            <img src="/static/telemeta/images/media-record.png" style="vertical-align:middle" title="recording" />
+                        {% endif %}
+                    </td>
+                {% else %}
+                    <div style="padding-left: 1em;">
+                    </div>
+                {% endif %}
+              </tr>
             {% endif %}
-        {% endfor %}
-        {% endfor %}
+          {% endfor %}
+        {% endif %}
+      {% endfor %}
     </tbody>
-    </table>
+  </table>
 </div>
 {% endif %}
 {% endwith %}
index ed8ef8ef81dfa3aaba9b06251671c44c3d27ee77..a8d13975481015dfd7cbcfceb7131e6c02db8bb8 100644 (file)
@@ -140,6 +140,24 @@ def from_period(contents, period):
         else:
             return contents.filter(period=period)
 
+@register.filter
+def class_group_allows_user(class_group, user):
+    if class_group:
+        student = user.student.all()
+        if student:
+            student = user.student.get()
+            if student.iej in class_group.iejs.all() and student.platform_only:
+                return True
+            else:
+                return False
+        elif user.is_staff or user.professor.all():
+            return True
+        else:
+            return False
+    else:
+        return False
+
+
 @register.assignment_tag
 def get_all_professors():
     return Professor.objects.all()
@@ -226,7 +244,7 @@ def scripts_count(user, period, statuses):
         return ' (' + str(len(scripts)) + ')'
     else:
         return ''
-    
+
 @register.simple_tag
 def untreated_scripts_count(user, period):
     return scripts_count(user, period, (3,))
@@ -262,17 +280,17 @@ def newsitems_portlet(context, course_id, period_id):
         'can_edit':newsitem.can_edit(request),
         'can_delete':newsitem.can_delete(request),
         }
-    
-    course = get_object_or_404(Course, id=course_id) 
+
+    course = get_object_or_404(Course, id=course_id)
     course_newsitems = [get_data(news) for news in NewsItem.objects.filter(deleted=False, course__id=course_id, period_id=period_id).order_by('-created')]
     all_newsitems = [get_data(news) for news in NewsItem.objects.filter(deleted=False, period_id=period_id).order_by('-created')]
-    can_add = False 
+    can_add = False
     if user.is_staff or user.professor.count():
         can_add = True
     return {
             'can_add':can_add,
             'course':course,
             'period_id':period_id,
-            'course_newsitems':course_newsitems, 
+            'course_newsitems':course_newsitems,
             'all_newsitems':all_newsitems
            }
index de08839bfb92ed88076abf558f452b56c8264cdf..8acbf2adb87e41ab42946c35a9ecf06f403ff16b 100644 (file)
@@ -455,7 +455,7 @@ class MediaView(CourseAccessMixin, DetailView):
         content_type = ContentType.objects.get(app_label="teleforma", model="course")
 
         room_name = media.course.code
-        if media.conference.web_class_group:
+        if media.conference.class_group:
             room_name += '_' + media.conference.public_id
 
         context['room'] = get_room(name=room_name,period=context['period'].name,
@@ -583,7 +583,8 @@ class ConferenceView(CourseAccessMixin, DetailView):
         content_type = ContentType.objects.get(app_label="teleforma", model="course")
 
         room_name = conference.course.code
-        if conference.web_class_group:
+
+        if conference.class_group:
             room_name += '_' + conference.public_id
 
         context['room'] = get_room(name=room_name, period=context['period'].name,
@@ -770,7 +771,7 @@ class ConferenceRecordView(FormView):
                                         stream_type=stream_type, streaming=True)
                     stream.save()
 
-                if not conference.web_class_group:
+                if not conference.class_group:
                     try:
                         live_message(conference)
                     except:
@@ -815,23 +816,23 @@ class ProfessorListView(View):
             professor.save()
 
 
-class WebClassGroupView(View):
+class ClassGroupView(View):
 
     @jsonrpc_method('teleforma.get_class_group_list')
     def get_class_group_list(request):
-        class_groups = WebClassGroup.objects.all()
+        class_groups = ClassGroup.objects.all()
         return [w.to_json_dict() for w in class_groups]
 
     def pull(request, host=None):
         if host:
             url = 'http://' + host + '/json/'
         else:
-            url = 'http://' + settings.TELECASTER_MASTER_SERVER + '/json/'
+            url = 'https://' + settings.TELECASTER_MASTER_SERVER + '/json/'
         s = ServiceProxy(url)
 
         remote_list = s.teleforma.get_class_group_list()
         for class_group_dict in remote_list['result']:
-            class_group, c = WebClassGroup.objects.get_or_create(name=class_group_dict['name'])
+            class_group, c = ClassGroup.objects.get_or_create(name=class_group_dict['name'])
 
 
 class HelpView(TemplateView):