Commit 103fc8cce0108b85bb69aba3cba4e416e7bdb675

Authored by Zambom
1 parent 71437835

Changing timestamp format and make middleware ignore admin module requests [Issue: #231]

core/middleware.py
1 1 from datetime import datetime
  2 +import time
  3 +from django.core.urlresolvers import resolve
2 4 from django.shortcuts import get_object_or_404
3 5 import json
4 6  
... ... @@ -9,37 +11,24 @@ class TimeSpentMiddleware(object):
9 11 self.get_response = get_response
10 12  
11 13 def process_request(self, request):
12   - if not request.is_ajax():
13   - log_id = request.session.get('log_id', None)
  14 + app_names = resolve(request.path).app_names
14 15  
15   - if not log_id is None:
16   - log = get_object_or_404(Log, id = log_id)
  16 + if not 'admin' in app_names:
  17 + if not request.is_ajax():
  18 + log_id = request.session.get('log_id', None)
17 19  
18   - #date_time_click = datetime.strptime(request.session.get('time_spent'), "%Y-%m-%d %H:%M:%S.%f")
19   - #_now = datetime.now()
  20 + if not log_id is None:
  21 + log = get_object_or_404(Log, id = log_id)
20 22  
21   - #time_spent = _now - date_time_click
  23 + if type(log.context) == dict:
  24 + log_context = log.context
  25 + else:
  26 + log_context = json.loads(log.context)
22 27  
23   - #secs = time_spent.total_seconds()
24   - #hours = int(secs / 3600)
25   - #minutes = int(secs / 60) % 60
26   - #secs = secs % 60
  28 + log_context['timestamp_end'] = str(int(time.time()))
27 29  
  30 + log.context = log_context
28 31  
29   - if type(log.context) == dict:
30   - log_context = log.context
31   - else:
32   - log_context = json.loads(log.context)
  32 + log.save()
33 33  
34   - #time = {}
35   - #time['hours'] = hours
36   - #time['minutes'] = minutes
37   - #time['seconds'] = secs
38   -
39   - log_context['timestamp_end'] = str(datetime.now())
40   -
41   - log.context = log_context
42   -
43   - log.save()
44   -
45   - request.session['log_id'] = None
  34 + request.session['log_id'] = None
... ...
courses/views.py
... ... @@ -25,6 +25,7 @@ from courses.models import Material
25 25 from django.urls import reverse
26 26  
27 27 from datetime import date, datetime
  28 +import time
28 29  
29 30 #API IMPORTS
30 31 from rest_framework import viewsets, permissions
... ... @@ -345,7 +346,7 @@ class CourseView(LogMixin, NotificationMixin, generic.DetailView):
345 346 self.log_context['course_slug'] = course.slug
346 347 self.log_context['course_category_id'] = course.category.id
347 348 self.log_context['course_category_name'] = course.category.name
348   - self.log_context['timestamp_start'] = str(datetime.now())
  349 + self.log_context['timestamp_start'] = str(int(time.time()))
349 350  
350 351 super(CourseView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
351 352  
... ... @@ -552,7 +553,7 @@ class SubjectsView(LoginRequiredMixin, LogMixin, generic.ListView):
552 553 self.log_context['course_slug'] = subject.course.slug
553 554 self.log_context['course_category_id'] = subject.course.category.id
554 555 self.log_context['course_category_name'] = subject.course.category.name
555   - self.log_context['timestamp_start'] = str(datetime.now())
  556 + self.log_context['timestamp_start'] = str(int(time.time()))
556 557  
557 558 super(SubjectsView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
558 559  
... ... @@ -657,7 +658,7 @@ class TopicsView(LoginRequiredMixin, LogMixin, generic.ListView):
657 658 self.log_context['course_slug'] = topic.subject.course.slug
658 659 self.log_context['course_category_id'] = topic.subject.course.category.id
659 660 self.log_context['course_category_name'] = topic.subject.course.category.name
660   - self.log_context['timestamp_start'] = str(datetime.now())
  661 + self.log_context['timestamp_start'] = str(int(time.time()))
661 662  
662 663 super(TopicsView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
663 664  
... ... @@ -1003,7 +1004,7 @@ class FileMaterialView(LoginRequiredMixin, LogMixin, generic.DetailView):
1003 1004 self.log_context['course_slug'] = file.topic.subject.course.slug
1004 1005 self.log_context['course_category_id'] = file.topic.subject.course.category.id
1005 1006 self.log_context['course_category_name'] = file.topic.subject.course.category.name
1006   - self.log_context['timestamp_start'] = str(datetime.now())
  1007 + self.log_context['timestamp_start'] = str(int(time.time()))
1007 1008  
1008 1009 super(FileMaterialView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
1009 1010  
... ...
exam/views.py
... ... @@ -10,6 +10,7 @@ from rolepermissions.verifications import has_role
10 10 from rolepermissions.verifications import has_object_permission
11 11 from django.db.models import Q
12 12 from datetime import datetime
  13 +import time
13 14 # from django.views.generic.edit import FormMixin
14 15  
15 16 from .forms import ExamForm
... ... @@ -59,7 +60,7 @@ class ViewExam(LoginRequiredMixin, LogMixin, generic.DetailView):
59 60 self.log_context['course_slug'] = exam.topic.subject.course.slug
60 61 self.log_context['course_category_id'] = exam.topic.subject.course.category.id
61 62 self.log_context['course_category_name'] = exam.topic.subject.course.category.name
62   - self.request.session['time_spent'] = str(datetime.now())
  63 + self.request.session['time_spent'] = str(int(time.time()))
63 64  
64 65 super(ViewExam, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
65 66  
... ... @@ -318,7 +319,7 @@ class AnswerStudentExam(LoginRequiredMixin, LogMixin, generic.CreateView):
318 319 minutes = int(secs / 60) % 60
319 320 secs = secs % 60
320 321  
321   - self.log_context['timestamp_end'] = str(datetime.now())
  322 + self.log_context['timestamp_end'] = str(int(time.time()))
322 323 self.log_context['time_spent'] = {}
323 324 self.log_context['time_spent']['hours'] = hours
324 325 self.log_context['time_spent']['minutes'] = minutes
... ... @@ -347,7 +348,7 @@ class AnswerStudentExam(LoginRequiredMixin, LogMixin, generic.CreateView):
347 348 context['answers'] = answers
348 349 context['keys'] = keys
349 350  
350   - self.log_context['timestamp_start'] = str(datetime.now())
  351 + self.log_context['timestamp_start'] = str(int(time.time()))
351 352 self.request.session['time_spent'] = str(datetime.now())
352 353  
353 354 return context
... ...
forum/views.py
... ... @@ -8,6 +8,7 @@ from django.core.paginator import Paginator, EmptyPage
8 8 from django.http import Http404, JsonResponse
9 9 from django.urls import reverse
10 10 from django.template.loader import render_to_string
  11 +import time
11 12  
12 13 from rolepermissions.mixins import HasRoleMixin
13 14 from rolepermissions.verifications import has_object_permission
... ... @@ -229,7 +230,7 @@ class ForumDetailView(LoginRequiredMixin, LogMixin, generic.DetailView):
229 230 self.log_context['course_slug'] = forum.topic.subject.course.slug
230 231 self.log_context['course_category_id'] = forum.topic.subject.course.category.id
231 232 self.log_context['course_category_name'] = forum.topic.subject.course.category.name
232   - self.log_context['timestamp_start'] = str(datetime.now())
  233 + self.log_context['timestamp_start'] = str(int(time.time()))
233 234  
234 235 super(ForumDetailView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
235 236  
... ...
links/views.py
... ... @@ -10,6 +10,7 @@ from core.mixins import NotificationMixin
10 10 from django.urls import reverse
11 11 from django.core.files.base import ContentFile
12 12 from rolepermissions.verifications import has_role
  13 +import time
13 14  
14 15 from core.models import Log
15 16 from core.mixins import LogMixin
... ... @@ -244,7 +245,7 @@ class ViewLink(LoginRequiredMixin, HasRoleMixin, LogMixin, generic.DetailView):
244 245 self.log_context['course_slug'] = link.topic.subject.course.slug
245 246 self.log_context['course_category_id'] = link.topic.subject.course.category.id
246 247 self.log_context['course_category_name'] = link.topic.subject.course.category.name
247   - self.log_context['timestamp_start'] = str(datetime.now())
  248 + self.log_context['timestamp_start'] = str(int(time.time()))
248 249  
249 250 super(ViewLink, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
250 251  
... ...
poll/views.py
... ... @@ -10,6 +10,7 @@ from rolepermissions.verifications import has_role
10 10 from rolepermissions.verifications import has_object_permission
11 11 from django.db.models import Q
12 12 from django.urls import reverse
  13 +import time
13 14  
14 15 from .forms import PollForm
15 16 from .models import Poll, Answer, AnswersStudent
... ... @@ -48,7 +49,7 @@ class ViewPoll(LoginRequiredMixin, LogMixin, generic.DetailView):
48 49 self.log_context['course_slug'] = poll.topic.subject.course.slug
49 50 self.log_context['course_category_id'] = poll.topic.subject.course.category.id
50 51 self.log_context['course_category_name'] = poll.topic.subject.course.category.name
51   - self.log_context['timestamp_start'] = str(datetime.now())
  52 + self.log_context['timestamp_start'] = str(int(time.time()))
52 53  
53 54 super(ViewPoll, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
54 55  
... ... @@ -315,7 +316,7 @@ class AnswerStudentPoll(LoginRequiredMixin, LogMixin, generic.CreateView):
315 316 def dispatch(self, *args, **kwargs):
316 317 if self.request.method == 'GET':
317 318 self.request.session['time_spent'] = str(datetime.datetime.now())
318   - self.log_context['timestamp_start'] = str(datetime.now())
  319 + self.log_context['timestamp_start'] = str(int(time.time()))
319 320  
320 321 return super(AnswerStudentPoll, self).dispatch(*args, **kwargs)
321 322  
... ... @@ -345,7 +346,7 @@ class AnswerStudentPoll(LoginRequiredMixin, LogMixin, generic.CreateView):
345 346 self.log_context['course_slug'] = poll.topic.subject.course.slug
346 347 self.log_context['course_category_id'] = poll.topic.subject.course.category.id
347 348 self.log_context['course_category_name'] = poll.topic.subject.course.category.name
348   - self.log_context['timestamp_end'] = str(datetime.now())
  349 + self.log_context['timestamp_end'] = str(int(time.time()))
349 350  
350 351 date_time_click = datetime.datetime.strptime(self.request.session.get('time_spent'), "%Y-%m-%d %H:%M:%S.%f")
351 352 _now = datetime.datetime.now()
... ...