From ec4538ac65a762790e5141365cb0c0fccfaca870 Mon Sep 17 00:00:00 2001 From: Piotr Mitros Date: Wed, 22 Feb 2012 21:06:41 -0500 Subject: [PATCH 1/2] Untested patch to eliminate AJAX DB writes --HG-- branch : pmitros_cut_writes --- courseware/module_render.py | 11 +++++++---- track/views.py | 3 +++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/courseware/module_render.py b/courseware/module_render.py index 92a78528f9..99e13031af 100644 --- a/courseware/module_render.py +++ b/courseware/module_render.py @@ -55,6 +55,8 @@ def modx_dispatch(request, module=None, dispatch=None, id=None): raise Http404 s=s[0] + oldgrade = s.grade + oldstate = s.state dispatch=dispatch.split('?')[0] @@ -65,9 +67,9 @@ def modx_dispatch(request, module=None, dispatch=None, id=None): # Create the module instance=courseware.modules.get_module_class(module)(xml, - s.module_id, + id, ajax_url=ajax_url, - state=s.state, + state=oldstate, track_function = make_track_function(request), render_function = None) # Let the module handle the AJAX @@ -76,7 +78,8 @@ def modx_dispatch(request, module=None, dispatch=None, id=None): s.state=instance.get_state() if instance.get_score(): s.grade=instance.get_score()['score'] - s.save() + if s.grade != oldgrade or s.state != oldstate: + s.save() # Return whatever the module wanted to return to the client/caller return HttpResponse(ajax_return) @@ -113,7 +116,7 @@ def render_x_module(user, request, xml_module, module_object_preload): module_type = module_type, module_id=module_id, state=instance.get_state()) - smod.save() # This may be optional (at least in the case of no instance in the dB) + smod.save() module_object_preload.append(smod) # Grab content content = instance.get_html() diff --git a/track/views.py b/track/views.py index a06baa6212..4825394413 100644 --- a/track/views.py +++ b/track/views.py @@ -1,3 +1,4 @@ +import time import json import logging import os @@ -39,6 +40,7 @@ def user_track(request): "event" : request.GET['event'], "agent" : agent, "page" : request.GET['page'], + "time": time.time() } log_event(event) return HttpResponse('success') @@ -62,5 +64,6 @@ def server_track(request, event_type, event, page=None): "event" : event, "agent" : agent, "page" : page, + "time": time.time() } log_event(event) From 05aad2359a9d01e3d7a48126e3a16c08cdaaec5a Mon Sep 17 00:00:00 2001 From: Piotr Mitros Date: Fri, 24 Feb 2012 12:40:44 -0500 Subject: [PATCH 2/2] Only keeping session cookie; no Askbot stuff --HG-- branch : pmitros_cut_writes --- track/views.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/track/views.py b/track/views.py index 6b7256c756..6f2e0e5155 100644 --- a/track/views.py +++ b/track/views.py @@ -21,7 +21,8 @@ def user_track(request): username = "anonymous" try: - scookie = request.META['HTTP_COOKIE'] + scookie = request.META['HTTP_COOKIE'] # Get cookies + scookie = ";".join([c.split('=')[1] for c in scookie.split(";") if "sessionid" in c]).strip() # Extract session ID except: scookie = ""