diff --git a/common/djangoapps/track/views.py b/common/djangoapps/track/views.py index 221bab5468..31c5d02b3c 100644 --- a/common/djangoapps/track/views.py +++ b/common/djangoapps/track/views.py @@ -34,9 +34,10 @@ def log_event(event): def user_track(request): """ - Log when GET call to "event" URL is made by a user. + Log when POST call to "event" URL is made by a user. Uses request.REQUEST + to allow for GET calls. - GET call should provide "event_type", "event", and "page" arguments. + GET or POST call should provide "event_type", "event", and "page" arguments. """ try: # TODO: Do the same for many of the optional META parameters username = request.user.username @@ -59,13 +60,13 @@ def user_track(request): "session": scookie, "ip": request.META['REMOTE_ADDR'], "event_source": "browser", - "event_type": request.GET['event_type'], - "event": request.GET['event'], + "event_type": request.REQUEST['event_type'], + "event": request.REQUEST['event'], "agent": agent, - "page": request.GET['page'], + "page": request.REQUEST['page'], "time": datetime.datetime.now(UTC).isoformat(), "host": request.META['SERVER_NAME'], - } + } log_event(event) return HttpResponse('success') @@ -92,7 +93,7 @@ def server_track(request, event_type, event, page=None): "page": page, "time": datetime.datetime.now(UTC).isoformat(), "host": request.META['SERVER_NAME'], - } + } if event_type.startswith("/event_logs") and request.user.is_staff: # don't log return @@ -136,7 +137,7 @@ def task_track(request_info, task_info, event_type, event, page=None): "page": page, "time": datetime.datetime.utcnow().isoformat(), "host": request_info.get('host', 'unknown') - } + } log_event(event) diff --git a/common/static/coffee/spec/logger_spec.coffee b/common/static/coffee/spec/logger_spec.coffee index 7fe734d8b5..4a53b8c455 100644 --- a/common/static/coffee/spec/logger_spec.coffee +++ b/common/static/coffee/spec/logger_spec.coffee @@ -14,9 +14,9 @@ describe 'Logger', -> expect(analytics.track).toHaveBeenCalledWith 'seq_goto', value: 'data' it 'send a request to log event', -> - spyOn $, 'getWithPrefix' + spyOn $, 'postWithPrefix' Logger.log 'example', 'data' - expect($.getWithPrefix).toHaveBeenCalledWith '/event', + expect($.postWithPrefix).toHaveBeenCalledWith '/event', event_type: 'example' event: '"data"' page: window.location.href diff --git a/common/static/coffee/src/logger.coffee b/common/static/coffee/src/logger.coffee index 6eaa497255..dffc14e067 100644 --- a/common/static/coffee/src/logger.coffee +++ b/common/static/coffee/src/logger.coffee @@ -28,7 +28,7 @@ class @Logger callback(event_type, data, element) # Regardless of whether any callbacks were made, log this event. - $.getWithPrefix '/event', + $.postWithPrefix '/event', event_type: event_type event: JSON.stringify(data) page: window.location.href