Commit efa55063368fb8c133dde4b757bb09d48adf0d3d

Authored by fbormann
1 parent 50c34f8b

added webconference hours view of log into report, correctly

Showing 1 changed file with 32 additions and 2 deletions   Show diff stats
reports/views.py
... ... @@ -20,6 +20,7 @@ from collections import OrderedDict
20 20 from django.forms import formset_factory
21 21 from .models import ReportCSV, ReportXLS
22 22 import pandas as pd
  23 +import math
23 24 from io import BytesIO
24 25  
25 26 class ReportView(LoginRequiredMixin, generic.FormView):
... ... @@ -333,7 +334,7 @@ class ViewReportView(LoginRequiredMixin, generic.TemplateView):
333 334 resources_types[i].lower()+'_id': resource.id, 'topic_id': topics.id}, datetime__range=(init_date, end_date)).count()
334 335  
335 336  
336   - if resources_types[i].lower() in ["ytvideo", "webconference"]:
  337 + if resources_types[i].lower() == "ytvideo":
337 338 watch_times = Log.objects.filter(action="watch", resource=resources_types[i].lower(),user_id = student.id, context__contains = {'subject_id': subject.id,
338 339 resources_types[i].lower()+'_id': resource.id}, datetime__range=(init_date, end_date))
339 340 if watch_times.count() > 0:
... ... @@ -343,6 +344,20 @@ class ViewReportView(LoginRequiredMixin, generic.TemplateView):
343 344 time_delta = end_time - begin_time
344 345 hours_viewed += time_delta.microseconds/3600 #so it's turned this seconds into hours
345 346  
  347 + if resources_types[i].lower() == "webconference":
  348 + init_times = Log.objects.filter(action="initwebconference", resource=resources_types[i].lower(), user_id = student.id, context__contains = {'subject_id': subject.id,
  349 + resources_types[i].lower()+'_id': resource.id}, datetime__range=(init_date, end_date))
  350 + end_times = Log.objects.filter(action="participate", resource=resources_types[i].lower(), user_id = student.id, context__contains = {'subject_id': subject.id,
  351 + resources_types[i].lower()+'_id': resource.id}, datetime__range=(init_date, end_date))
  352 + if init_times.count() > 0:
  353 + j = 0
  354 + for init_time in init_times:
  355 + begin_time = int(init_time.context['webconference_init'])
  356 + end_time = int(end_times[j].context['webconference_finish'])
  357 + j += 1
  358 + time_delta = math.fabs(end_time - begin_time)
  359 +
  360 + hours_viewed += time_delta/3600 #so it's turned this seconds into hours
346 361 for daynum in day_numbers:
347 362 count_temp = Log.objects.filter(action="view", resource=resources_types[i].lower(),
348 363 user_id = student.id, context__contains = {'subject_id': subject.id,
... ... @@ -365,7 +380,7 @@ class ViewReportView(LoginRequiredMixin, generic.TemplateView):
365 380 if count_temp > 0:
366 381 distinct_days += 1
367 382  
368   - if resources_types[i].lower() in ["ytvideo", "webconference"]:
  383 + if resources_types[i].lower() == "ytvideo":
369 384 watch_times = Log.objects.filter(action="watch", resource=resources_types[i].lower(),user_id = student.id, context__contains = {'subject_id': subject.id,
370 385 resources_types[i].lower()+'_id': resource.id}, datetime__range=(init_date, end_date))
371 386 if watch_times.count() > 0:
... ... @@ -374,6 +389,21 @@ class ViewReportView(LoginRequiredMixin, generic.TemplateView):
374 389 end_time = timedelta(microseconds = int(watch_time.context['timestamp_end']))
375 390 time_delta = end_time - begin_time
376 391 hours_viewed += time_delta.microseconds/3600 #so it's turned this seconds into hours
  392 +
  393 + if resources_types[i].lower() == "webconference":
  394 + init_times = Log.objects.filter(action="initwebconference", resource=resources_types[i].lower(), user_id = student.id, context__contains = {'subject_id': subject.id,
  395 + resources_types[i].lower()+'_id': resource.id}, datetime__range=(init_date, end_date))
  396 + end_times = Log.objects.filter(action="participate", resource=resources_types[i].lower(), user_id = student.id, context__contains = {'subject_id': subject.id,
  397 + resources_types[i].lower()+'_id': resource.id}, datetime__range=(init_date, end_date))
  398 + if init_times.count() > 0:
  399 + j = 0
  400 + for init_time in init_times:
  401 + begin_time = int(init_time.context['webconference_init'])
  402 + end_time = int(end_times[j].context['webconference_finish'])
  403 + j += 1
  404 + time_delta = math.fabs(end_time - begin_time)
  405 +
  406 + hours_viewed += time_delta/3600 #so it's turned this seconds into hours
377 407 if count > 0:
378 408 distinct_resources += 1
379 409 total_count += count
... ...