Commit 5fea8b8b by Matthew Piatetsky Committed by GitHub

Merge pull request #15664 from edx/LEARNER-2016

LEARNER-2016 Cannot Track Campaigns to Checkout Page Using UTM Codes
parents 82bc92b4 7be1f310
...@@ -6,6 +6,7 @@ import datetime ...@@ -6,6 +6,7 @@ import datetime
import decimal import decimal
import json import json
import logging import logging
import urllib
import analytics import analytics
import waffle import waffle
...@@ -434,6 +435,21 @@ class PayAndVerifyView(View): ...@@ -434,6 +435,21 @@ class PayAndVerifyView(View):
return render_to_response("verify_student/pay_and_verify.html", context) return render_to_response("verify_student/pay_and_verify.html", context)
def add_utm_params_to_url(self, url):
# utm_params is [(u'utm_content', u'course-v1:IDBx IDB20.1x 1T2017'),...
utm_params = [item for item in self.request.GET.items() if 'utm_' in item[0]]
# utm_params is utm_content=course-v1%3AIDBx+IDB20.1x+1T2017&...
utm_params = urllib.urlencode(utm_params, True)
# utm_params is utm_content=course-v1:IDBx+IDB20.1x+1T2017&...
# (course-keys do not have url encoding)
utm_params = urllib.unquote(utm_params)
if utm_params:
if '?' in url:
url = url + '&' + utm_params
else:
url = url + '?' + utm_params
return url
def _redirect_if_necessary( def _redirect_if_necessary(
self, message, already_verified, already_paid, is_enrolled, course_key, # pylint: disable=bad-continuation self, message, already_verified, already_paid, is_enrolled, course_key, # pylint: disable=bad-continuation
user_is_trying_to_pay, user, sku # pylint: disable=bad-continuation user_is_trying_to_pay, user, sku # pylint: disable=bad-continuation
...@@ -504,6 +520,8 @@ class PayAndVerifyView(View): ...@@ -504,6 +520,8 @@ class PayAndVerifyView(View):
# Redirect if necessary, otherwise implicitly return None # Redirect if necessary, otherwise implicitly return None
if url is not None: if url is not None:
if waffle.switch_is_active('add-utm-params'):
url = self.add_utm_params_to_url(url)
return redirect(url) return redirect(url)
def _get_paid_mode(self, course_key): def _get_paid_mode(self, course_key):
......
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