Commit b118f436 by Piotr Mitros

Tracking improvements. Calculator is tracked

parent 3a8a1bbb
...@@ -245,6 +245,10 @@ class LoncapaModule(XModule): ...@@ -245,6 +245,10 @@ class LoncapaModule(XModule):
correct_map = self.lcp.grade_answers(answers) correct_map = self.lcp.grade_answers(answers)
except: except:
self.lcp = LoncapaProblem(filename, id=lcp_id, state=old_state) self.lcp = LoncapaProblem(filename, id=lcp_id, state=old_state)
print {'error':sys.exc_info(),
'answers':answers,
'seed':self.lcp.seed,
'filename':self.lcp.filename}
return json.dumps({'success':'syntax'}) return json.dumps({'success':'syntax'})
self.attempts = self.attempts + 1 self.attempts = self.attempts + 1
......
...@@ -125,7 +125,12 @@ LOGGING = { ...@@ -125,7 +125,12 @@ LOGGING = {
} }
} }
TRACK_DIR = None #TRACK_DIR = None
DEBUG_TRACK_LOG = False
# Maximum length of a tracking string. We don't want e.g. a file upload in our log
TRACK_MAX_EVENT = 1000
# Maximum length of log file before starting a new one.
MAXLOG = 500
execfile("../settings.py") execfile("../settings.py")
......
...@@ -14,7 +14,6 @@ else: ...@@ -14,7 +14,6 @@ else:
logfile = None logfile = None
file_index = 0 file_index = 0
log_index = 0 log_index = 0
MAXLOG = 5
filename = None filename = None
def make_file(): def make_file():
...@@ -31,20 +30,28 @@ def make_file(): ...@@ -31,20 +30,28 @@ def make_file():
def log_event(event): def log_event(event):
global logfile, log_index global logfile, log_index
event_str = json.dumps(event)
if settings.TRACK_DIR == None: if settings.TRACK_DIR == None:
# print event # print event
return return
if logfile == None or log_index >= MAXLOG: if logfile == None or log_index >= settings.MAXLOG:
make_file() make_file()
event_str = json.dumps(event) logfile.write(event_str[:settings.TRACK_MAX_EVENT]+'\n')
logfile.write(event_str+'\n') if settings.DEBUG_TRACK_LOG:
print event_str
log_index = log_index + 1 log_index = log_index + 1
def user_track(request): def user_track(request):
try: # TODO: Do the same for many of the optional META parameters
username = request.user.username
except:
username = "anonymous"
# TODO: Move a bunch of this into log_event
event = { event = {
"username" : request.user.username, "username" : username,
"session" : request.META['HTTP_COOKIE'], "session" : request.META['HTTP_COOKIE'],
"ip" : request.META['REMOTE_ADDR'], "ip" : request.META['REMOTE_ADDR'],
"event_source" : "browser", "event_source" : "browser",
...@@ -57,8 +64,13 @@ def user_track(request): ...@@ -57,8 +64,13 @@ def user_track(request):
return HttpResponse('success') return HttpResponse('success')
def server_track(request, event_type, event, page=None): def server_track(request, event_type, event, page=None):
try:
username = request.user.username
except:
username = "anonymous"
event = { event = {
"username" : request.user.username, "username" : username,
"ip" : request.META['REMOTE_ADDR'], "ip" : request.META['REMOTE_ADDR'],
"event_source" : "server", "event_source" : "server",
"event_type" : event_type, "event_type" : event_type,
......
...@@ -10,6 +10,8 @@ import courseware.capa.calc ...@@ -10,6 +10,8 @@ import courseware.capa.calc
from django.core.mail import send_mail from django.core.mail import send_mail
from django.conf import settings from django.conf import settings
import datetime import datetime
import sys
import track.views
def calculate(request): def calculate(request):
# if not request.user.is_authenticated(): # if not request.user.is_authenticated():
...@@ -18,6 +20,9 @@ def calculate(request): ...@@ -18,6 +20,9 @@ def calculate(request):
try: try:
result = courseware.capa.calc.evaluator({}, {}, equation) result = courseware.capa.calc.evaluator({}, {}, equation)
except: except:
event = {'error':map(str,sys.exc_info()),
'equation':equation}
track.views.server_track(request, 'error:calc', event, page='calc')
return HttpResponse(json.dumps({'result':'Invalid syntax'})) return HttpResponse(json.dumps({'result':'Invalid syntax'}))
return HttpResponse(json.dumps({'result':result})) return HttpResponse(json.dumps({'result':result}))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment