Commit 959756c8ce4f898bc55768efbca01ded7c5cda7d
1 parent
a71ff433
Exists in
master
and in
3 other branches
added hours viewed for webconference as well as youtube video
Showing
1 changed file
with
30 additions
and
1 deletions
Show diff stats
reports/views.py
@@ -315,11 +315,15 @@ class ViewReportView(LoginRequiredMixin, generic.TemplateView): | @@ -315,11 +315,15 @@ class ViewReportView(LoginRequiredMixin, generic.TemplateView): | ||
315 | resources = Resource.objects.select_related(resources_types[i].lower()).filter(tags__in = tags, topic=topics) | 315 | resources = Resource.objects.select_related(resources_types[i].lower()).filter(tags__in = tags, topic=topics) |
316 | else: | 316 | else: |
317 | resources = Resource.objects.select_related(resources_types[i].lower()).filter(tags__in = tags, topic__in=topics) | 317 | resources = Resource.objects.select_related(resources_types[i].lower()).filter(tags__in = tags, topic__in=topics) |
318 | + | ||
318 | distinct_resources = 0 | 319 | distinct_resources = 0 |
319 | total_count = 0 | 320 | total_count = 0 |
320 | 321 | ||
322 | + #variables to handle distinct days report's variable | ||
321 | day_numbers = [0, 1, 2, 3, 4, 5, 6] | 323 | day_numbers = [0, 1, 2, 3, 4, 5, 6] |
322 | distinct_days = 0 | 324 | distinct_days = 0 |
325 | + | ||
326 | + hours_viewed = 0 #youtube video as well as webconference | ||
323 | for resource in resources: | 327 | for resource in resources: |
324 | 328 | ||
325 | if isinstance(topics,Topic): | 329 | if isinstance(topics,Topic): |
@@ -328,6 +332,17 @@ class ViewReportView(LoginRequiredMixin, generic.TemplateView): | @@ -328,6 +332,17 @@ class ViewReportView(LoginRequiredMixin, generic.TemplateView): | ||
328 | user_id = student.id, context__contains = {'subject_id': subject.id, | 332 | user_id = student.id, context__contains = {'subject_id': subject.id, |
329 | resources_types[i].lower()+'_id': resource.id, 'topic_id': topics.id}, datetime__range=(init_date, end_date)).count() | 333 | resources_types[i].lower()+'_id': resource.id, 'topic_id': topics.id}, datetime__range=(init_date, end_date)).count() |
330 | 334 | ||
335 | + | ||
336 | + if resources_types[i].lower() in ["ytvideo", "webconference"]: | ||
337 | + watch_times = Log.objects.filter(action="watch", resource=resources_types[i].lower(),user_id = student.id, context__contains = {'subject_id': subject.id, | ||
338 | + resources_types[i].lower()+'_id': resource.id}, datetime__range=(init_date, end_date)) | ||
339 | + if watch_times.count() > 0: | ||
340 | + for watch_time in watch_times: | ||
341 | + begin_time = timedelta(microseconds = int(watch_time.context['timestamp_start'])) | ||
342 | + end_time = timedelta(microseconds = int(watch_time.context['timestamp_end'])) | ||
343 | + time_delta = end_time - begin_time | ||
344 | + hours_viewed += time_delta.microseconds/3600 #so it's turned this seconds into hours | ||
345 | + | ||
331 | for daynum in day_numbers: | 346 | for daynum in day_numbers: |
332 | count_temp = Log.objects.filter(action="view", resource=resources_types[i].lower(), | 347 | count_temp = Log.objects.filter(action="view", resource=resources_types[i].lower(), |
333 | user_id = student.id, context__contains = {'subject_id': subject.id, | 348 | user_id = student.id, context__contains = {'subject_id': subject.id, |
@@ -341,6 +356,7 @@ class ViewReportView(LoginRequiredMixin, generic.TemplateView): | @@ -341,6 +356,7 @@ class ViewReportView(LoginRequiredMixin, generic.TemplateView): | ||
341 | user_id = student.id, context__contains = {'subject_id': subject.id, | 356 | user_id = student.id, context__contains = {'subject_id': subject.id, |
342 | resources_types[i].lower()+'_id': resource.id}, datetime__range=(init_date, end_date)).count() | 357 | resources_types[i].lower()+'_id': resource.id}, datetime__range=(init_date, end_date)).count() |
343 | 358 | ||
359 | + | ||
344 | for daynum in day_numbers: | 360 | for daynum in day_numbers: |
345 | count_temp = Log.objects.filter(action="view", resource=resources_types[i].lower(), | 361 | count_temp = Log.objects.filter(action="view", resource=resources_types[i].lower(), |
346 | user_id = student.id, context__contains = {'subject_id': subject.id, | 362 | user_id = student.id, context__contains = {'subject_id': subject.id, |
@@ -348,6 +364,16 @@ class ViewReportView(LoginRequiredMixin, generic.TemplateView): | @@ -348,6 +364,16 @@ class ViewReportView(LoginRequiredMixin, generic.TemplateView): | ||
348 | datetime__range=(init_date, end_date)).count() | 364 | datetime__range=(init_date, end_date)).count() |
349 | if count_temp > 0: | 365 | if count_temp > 0: |
350 | distinct_days += 1 | 366 | distinct_days += 1 |
367 | + | ||
368 | + if resources_types[i].lower() in ["ytvideo", "webconference"]: | ||
369 | + watch_times = Log.objects.filter(action="watch", resource=resources_types[i].lower(),user_id = student.id, context__contains = {'subject_id': subject.id, | ||
370 | + resources_types[i].lower()+'_id': resource.id}, datetime__range=(init_date, end_date)) | ||
371 | + if watch_times.count() > 0: | ||
372 | + for watch_time in watch_times: | ||
373 | + begin_time = timedelta(microseconds = int(watch_time.context['timestamp_start'])) | ||
374 | + end_time = timedelta(microseconds = int(watch_time.context['timestamp_end'])) | ||
375 | + time_delta = end_time - begin_time | ||
376 | + hours_viewed += time_delta.microseconds/3600 #so it's turned this seconds into hours | ||
351 | if count > 0: | 377 | if count > 0: |
352 | distinct_resources += 1 | 378 | distinct_resources += 1 |
353 | total_count += count | 379 | total_count += count |
@@ -355,7 +381,10 @@ class ViewReportView(LoginRequiredMixin, generic.TemplateView): | @@ -355,7 +381,10 @@ class ViewReportView(LoginRequiredMixin, generic.TemplateView): | ||
355 | data[str(resources_types[i]) + " with tag " + Tag.objects.get(id=int(tags[i])).name] = total_count | 381 | data[str(resources_types[i]) + " with tag " + Tag.objects.get(id=int(tags[i])).name] = total_count |
356 | data["distintic " + str(resources_types[i]) + " with tag " + Tag.objects.get(id=int(tags[i])).name] = distinct_resources | 382 | data["distintic " + str(resources_types[i]) + " with tag " + Tag.objects.get(id=int(tags[i])).name] = distinct_resources |
357 | data["distintic days " + str(resources_types[i]) + " with tag " + Tag.objects.get(id=int(tags[i])).name] = distinct_days | 383 | data["distintic days " + str(resources_types[i]) + " with tag " + Tag.objects.get(id=int(tags[i])).name] = distinct_days |
358 | - | 384 | + |
385 | + if resources_types[i].lower() in ["ytvideo", "webconference"]: | ||
386 | + data["hours viewed of " + str(resources_types[i]) + " with tag " + Tag.objects.get(id=int(tags[i])).name] = hours_viewed | ||
387 | + | ||
359 | """data["distinct" + str(resources[i]) + " with tag " + Tag.objects.get(id=int(tags[i])).name] = Log.objects.filter(action="view", resource=resources[i].lower(), | 388 | """data["distinct" + str(resources[i]) + " with tag " + Tag.objects.get(id=int(tags[i])).name] = Log.objects.filter(action="view", resource=resources[i].lower(), |
360 | user_id = student.id, context__contains = {'subject_id': subject.id}).distinct().count()""" | 389 | user_id = student.id, context__contains = {'subject_id': subject.id}).distinct().count()""" |
361 | 390 |