Commit 103fc8cce0108b85bb69aba3cba4e416e7bdb675
1 parent
71437835
Exists in
master
and in
5 other branches
Changing timestamp format and make middleware ignore admin module requests [Issue: #231]
Showing
6 changed files
with
33 additions
and
39 deletions
Show diff stats
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() | ... | ... |