From 7be8d6bf0d1ccafbc23ffe134bcf0b4e74878cb0 Mon Sep 17 00:00:00 2001 From: Guillaume Pellerin Date: Mon, 21 Jan 2019 18:26:36 +0100 Subject: [PATCH] Fix Conference.class_group management --- teleforma/admin.py | 9 ++- .../templates/teleforma/course_media.html | 2 +- .../teleforma/inc/conference_list.html | 79 ++++++++++--------- teleforma/templatetags/teleforma_tags.py | 28 +++++-- teleforma/views/core.py | 15 ++-- 5 files changed, 79 insertions(+), 54 deletions(-) diff --git a/teleforma/admin.py b/teleforma/admin.py index d8f0564d..d8fee6fc 100644 --- a/teleforma/admin.py +++ b/teleforma/admin.py @@ -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) diff --git a/teleforma/templates/teleforma/course_media.html b/teleforma/templates/teleforma/course_media.html index 9feada4e..a0f01723 100644 --- a/teleforma/templates/teleforma/course_media.html +++ b/teleforma/templates/teleforma/course_media.html @@ -150,7 +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 }}
+
{% trans "Class group" %}
{{ media.conference.class_group }}
{% endif %} {% endif %} diff --git a/teleforma/templates/teleforma/inc/conference_list.html b/teleforma/templates/teleforma/inc/conference_list.html index 8979649f..18d11bad 100644 --- a/teleforma/templates/teleforma/inc/conference_list.html +++ b/teleforma/templates/teleforma/inc/conference_list.html @@ -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 %}

{% trans "Live conferences"%}

- +
- {% for conference in conferences|from_period:period %} - {% for stream in conference.livestream.all %} - {% if stream.stream_type == 'webm' %} - - {% if stream.streaming %} - - - {% if stream.streaming %} - - - {% endif %} - - {% else %} -
- -
- {% endif %} - + + + + {% else %} +
+
+ {% endif %} + {% endif %} - {% endfor %} - {% endfor %} + {% endfor %} + {% endif %} + {% endfor %} -
- - {% trans 'Click here' %} - - -
-
-
{% trans "Title" %}
{{ stream.conference.course.title }}
-
{% trans "Session" %}
{{ stream.conference.session }}
- {% if stream.conference.professor.user.username %} -
{% trans "Professor" %}
{{ stream.conference.professor }}
- {% endif %} -
{% trans "Begin" %}
{{ stream.conference.date_begin }}
-
-
-
+ {% 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' %} +
+ + {% trans 'Click here' %} + + +
+
+
{% trans "Title" %}
{{ stream.conference.course.title }}
+
{% trans "Session" %}
{{ stream.conference.session }}
+ {% if stream.conference.professor.user.username %} +
{% trans "Professor" %}
{{ stream.conference.professor }}
+ {% endif %} +
{% trans "Begin" %}
{{ stream.conference.date_begin }}
+
+
+
+ {% if stream.streaming %} + + + {% endif %} +
+
{% endif %} {% endwith %} diff --git a/teleforma/templatetags/teleforma_tags.py b/teleforma/templatetags/teleforma_tags.py index ed8ef8ef..a8d13975 100644 --- a/teleforma/templatetags/teleforma_tags.py +++ b/teleforma/templatetags/teleforma_tags.py @@ -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 } diff --git a/teleforma/views/core.py b/teleforma/views/core.py index de08839b..8acbf2ad 100644 --- a/teleforma/views/core.py +++ b/teleforma/views/core.py @@ -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): -- 2.39.5