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
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)
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)
<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 %}
{% 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 %}
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()
return ' (' + str(len(scripts)) + ')'
else:
return ''
-
+
@register.simple_tag
def untreated_scripts_count(user, period):
return scripts_count(user, period, (3,))
'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
}
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,
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,
stream_type=stream_type, streaming=True)
stream.save()
- if not conference.web_class_group:
+ if not conference.class_group:
try:
live_message(conference)
except:
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):