diff --git a/core/middleware.py b/core/middleware.py index 9d43747..0dae756 100644 --- a/core/middleware.py +++ b/core/middleware.py @@ -1,4 +1,6 @@ from datetime import datetime +import time +from django.core.urlresolvers import resolve from django.shortcuts import get_object_or_404 import json @@ -9,37 +11,24 @@ class TimeSpentMiddleware(object): self.get_response = get_response def process_request(self, request): - if not request.is_ajax(): - log_id = request.session.get('log_id', None) + app_names = resolve(request.path).app_names - if not log_id is None: - log = get_object_or_404(Log, id = log_id) + if not 'admin' in app_names: + if not request.is_ajax(): + log_id = request.session.get('log_id', None) - #date_time_click = datetime.strptime(request.session.get('time_spent'), "%Y-%m-%d %H:%M:%S.%f") - #_now = datetime.now() + if not log_id is None: + log = get_object_or_404(Log, id = log_id) - #time_spent = _now - date_time_click + if type(log.context) == dict: + log_context = log.context + else: + log_context = json.loads(log.context) - #secs = time_spent.total_seconds() - #hours = int(secs / 3600) - #minutes = int(secs / 60) % 60 - #secs = secs % 60 + log_context['timestamp_end'] = str(int(time.time())) + log.context = log_context - if type(log.context) == dict: - log_context = log.context - else: - log_context = json.loads(log.context) + log.save() - #time = {} - #time['hours'] = hours - #time['minutes'] = minutes - #time['seconds'] = secs - - log_context['timestamp_end'] = str(datetime.now()) - - log.context = log_context - - log.save() - - request.session['log_id'] = None + request.session['log_id'] = None diff --git a/courses/views.py b/courses/views.py index 4bfa9e0..a91ce98 100644 --- a/courses/views.py +++ b/courses/views.py @@ -25,6 +25,7 @@ from courses.models import Material from django.urls import reverse from datetime import date, datetime +import time #API IMPORTS from rest_framework import viewsets, permissions @@ -345,7 +346,7 @@ class CourseView(LogMixin, NotificationMixin, generic.DetailView): self.log_context['course_slug'] = course.slug self.log_context['course_category_id'] = course.category.id self.log_context['course_category_name'] = course.category.name - self.log_context['timestamp_start'] = str(datetime.now()) + self.log_context['timestamp_start'] = str(int(time.time())) super(CourseView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context) @@ -552,7 +553,7 @@ class SubjectsView(LoginRequiredMixin, LogMixin, generic.ListView): self.log_context['course_slug'] = subject.course.slug self.log_context['course_category_id'] = subject.course.category.id self.log_context['course_category_name'] = subject.course.category.name - self.log_context['timestamp_start'] = str(datetime.now()) + self.log_context['timestamp_start'] = str(int(time.time())) super(SubjectsView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context) @@ -657,7 +658,7 @@ class TopicsView(LoginRequiredMixin, LogMixin, generic.ListView): self.log_context['course_slug'] = topic.subject.course.slug self.log_context['course_category_id'] = topic.subject.course.category.id self.log_context['course_category_name'] = topic.subject.course.category.name - self.log_context['timestamp_start'] = str(datetime.now()) + self.log_context['timestamp_start'] = str(int(time.time())) super(TopicsView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context) @@ -1003,7 +1004,7 @@ class FileMaterialView(LoginRequiredMixin, LogMixin, generic.DetailView): self.log_context['course_slug'] = file.topic.subject.course.slug self.log_context['course_category_id'] = file.topic.subject.course.category.id self.log_context['course_category_name'] = file.topic.subject.course.category.name - self.log_context['timestamp_start'] = str(datetime.now()) + self.log_context['timestamp_start'] = str(int(time.time())) super(FileMaterialView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context) diff --git a/exam/views.py b/exam/views.py index ae4c172..20da912 100644 --- a/exam/views.py +++ b/exam/views.py @@ -10,6 +10,7 @@ from rolepermissions.verifications import has_role from rolepermissions.verifications import has_object_permission from django.db.models import Q from datetime import datetime +import time # from django.views.generic.edit import FormMixin from .forms import ExamForm @@ -59,7 +60,7 @@ class ViewExam(LoginRequiredMixin, LogMixin, generic.DetailView): self.log_context['course_slug'] = exam.topic.subject.course.slug self.log_context['course_category_id'] = exam.topic.subject.course.category.id self.log_context['course_category_name'] = exam.topic.subject.course.category.name - self.request.session['time_spent'] = str(datetime.now()) + self.request.session['time_spent'] = str(int(time.time())) super(ViewExam, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context) @@ -318,7 +319,7 @@ class AnswerStudentExam(LoginRequiredMixin, LogMixin, generic.CreateView): minutes = int(secs / 60) % 60 secs = secs % 60 - self.log_context['timestamp_end'] = str(datetime.now()) + self.log_context['timestamp_end'] = str(int(time.time())) self.log_context['time_spent'] = {} self.log_context['time_spent']['hours'] = hours self.log_context['time_spent']['minutes'] = minutes @@ -347,7 +348,7 @@ class AnswerStudentExam(LoginRequiredMixin, LogMixin, generic.CreateView): context['answers'] = answers context['keys'] = keys - self.log_context['timestamp_start'] = str(datetime.now()) + self.log_context['timestamp_start'] = str(int(time.time())) self.request.session['time_spent'] = str(datetime.now()) return context diff --git a/forum/views.py b/forum/views.py index 1a08cf3..fdb789d 100644 --- a/forum/views.py +++ b/forum/views.py @@ -8,6 +8,7 @@ from django.core.paginator import Paginator, EmptyPage from django.http import Http404, JsonResponse from django.urls import reverse from django.template.loader import render_to_string +import time from rolepermissions.mixins import HasRoleMixin from rolepermissions.verifications import has_object_permission @@ -229,7 +230,7 @@ class ForumDetailView(LoginRequiredMixin, LogMixin, generic.DetailView): self.log_context['course_slug'] = forum.topic.subject.course.slug self.log_context['course_category_id'] = forum.topic.subject.course.category.id self.log_context['course_category_name'] = forum.topic.subject.course.category.name - self.log_context['timestamp_start'] = str(datetime.now()) + self.log_context['timestamp_start'] = str(int(time.time())) super(ForumDetailView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context) diff --git a/links/views.py b/links/views.py index b61e524..4b5eca1 100644 --- a/links/views.py +++ b/links/views.py @@ -10,6 +10,7 @@ from core.mixins import NotificationMixin from django.urls import reverse from django.core.files.base import ContentFile from rolepermissions.verifications import has_role +import time from core.models import Log from core.mixins import LogMixin @@ -244,7 +245,7 @@ class ViewLink(LoginRequiredMixin, HasRoleMixin, LogMixin, generic.DetailView): self.log_context['course_slug'] = link.topic.subject.course.slug self.log_context['course_category_id'] = link.topic.subject.course.category.id self.log_context['course_category_name'] = link.topic.subject.course.category.name - self.log_context['timestamp_start'] = str(datetime.now()) + self.log_context['timestamp_start'] = str(int(time.time())) super(ViewLink, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context) diff --git a/poll/views.py b/poll/views.py index d475b32..bfcb08a 100644 --- a/poll/views.py +++ b/poll/views.py @@ -10,6 +10,7 @@ from rolepermissions.verifications import has_role from rolepermissions.verifications import has_object_permission from django.db.models import Q from django.urls import reverse +import time from .forms import PollForm from .models import Poll, Answer, AnswersStudent @@ -48,7 +49,7 @@ class ViewPoll(LoginRequiredMixin, LogMixin, generic.DetailView): self.log_context['course_slug'] = poll.topic.subject.course.slug self.log_context['course_category_id'] = poll.topic.subject.course.category.id self.log_context['course_category_name'] = poll.topic.subject.course.category.name - self.log_context['timestamp_start'] = str(datetime.now()) + self.log_context['timestamp_start'] = str(int(time.time())) super(ViewPoll, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context) @@ -315,7 +316,7 @@ class AnswerStudentPoll(LoginRequiredMixin, LogMixin, generic.CreateView): def dispatch(self, *args, **kwargs): if self.request.method == 'GET': self.request.session['time_spent'] = str(datetime.datetime.now()) - self.log_context['timestamp_start'] = str(datetime.now()) + self.log_context['timestamp_start'] = str(int(time.time())) return super(AnswerStudentPoll, self).dispatch(*args, **kwargs) @@ -345,7 +346,7 @@ class AnswerStudentPoll(LoginRequiredMixin, LogMixin, generic.CreateView): self.log_context['course_slug'] = poll.topic.subject.course.slug self.log_context['course_category_id'] = poll.topic.subject.course.category.id self.log_context['course_category_name'] = poll.topic.subject.course.category.name - self.log_context['timestamp_end'] = str(datetime.now()) + self.log_context['timestamp_end'] = str(int(time.time())) date_time_click = datetime.datetime.strptime(self.request.session.get('time_spent'), "%Y-%m-%d %H:%M:%S.%f") _now = datetime.datetime.now() -- libgit2 0.21.2