Merge pull request #18482 from edx/LEARNER-5257/update-sailthru-audit-purchase

Update sailthru audit purchase calls
This commit is contained in:
Uzair Rasheed
2018-07-11 12:01:22 +05:00
committed by GitHub
7 changed files with 25 additions and 11 deletions

View File

@@ -9,13 +9,13 @@ import urllib
import waffle
from babel.dates import format_datetime
from django.contrib.auth.decorators import login_required
from django.urls import reverse
from django.db import transaction
from django.http import HttpResponse, HttpResponseBadRequest
from django.shortcuts import redirect
from django.urls import reverse
from django.utils.decorators import method_decorator
from django.utils.translation import ugettext as _
from django.utils.translation import get_language, to_locale
from django.utils.translation import ugettext as _
from django.views.generic.base import View
from ipware.ip import get_ip
from opaque_keys.edx.keys import CourseKey

View File

@@ -2,5 +2,6 @@ from student.signals.signals import (
ENROLLMENT_TRACK_UPDATED,
UNENROLL_DONE,
ENROLL_STATUS_CHANGE,
REFUND_ORDER
REFUND_ORDER,
SAILTHRU_AUDIT_PURCHASE
)

View File

@@ -7,3 +7,4 @@ ENROLLMENT_TRACK_UPDATED = Signal(providing_args=['user', 'course_key'])
UNENROLL_DONE = Signal(providing_args=["course_enrollment", "skip_refund"])
ENROLL_STATUS_CHANGE = Signal(providing_args=["event", "user", "course_id", "mode", "cost", "currency"])
REFUND_ORDER = Signal(providing_args=["course_enrollment"])
SAILTHRU_AUDIT_PURCHASE = Signal(providing_args=["event", "user", "course_id", "mode"])

View File

@@ -1,7 +1,6 @@
""" API v0 views. """
import logging
from courseware import courses
from django.urls import reverse
from edx_rest_api_client import exceptions
from opaque_keys import InvalidKeyError
@@ -13,6 +12,7 @@ from rest_framework.views import APIView
from six import text_type
from course_modes.models import CourseMode
from courseware import courses
from enrollment.api import add_enrollment
from enrollment.views import EnrollmentCrossDomainSessionAuth
from entitlements.models import CourseEntitlement
@@ -21,7 +21,9 @@ from openedx.core.djangoapps.embargo import api as embargo_api
from openedx.core.djangoapps.user_api.preferences.api import update_email_opt_in
from openedx.core.lib.api.authentication import OAuth2AuthenticationAllowInactiveUser
from student.models import CourseEnrollment
from student.signals import SAILTHRU_AUDIT_PURCHASE
from util.json_request import JsonResponse
from ...constants import Messages
from ...http import DetailResponse
@@ -139,6 +141,10 @@ class BasketsView(APIView):
)
log.info(msg)
self._enroll(course_key, user, default_enrollment_mode.slug)
mode = CourseMode.AUDIT if audit_mode else CourseMode.HONOR
SAILTHRU_AUDIT_PURCHASE.send(
sender=None, event='enroll', user=user, mode=mode, course_id=course_key
)
self._handle_marketing_opt_in(request, course_key, user)
return DetailResponse(msg)
else:

View File

@@ -16,14 +16,15 @@ from six import text_type
import third_party_auth
from course_modes.models import CourseMode
from email_marketing.models import EmailMarketingConfiguration
from lms.djangoapps.email_marketing.tasks import get_email_cookies_via_sailthru, update_user, update_user_email
from openedx.core.djangoapps.lang_pref import LANGUAGE_KEY
from openedx.core.djangoapps.user_api.accounts.signals import USER_RETIRE_THIRD_PARTY_MAILINGS
from openedx.core.djangoapps.waffle_utils import WaffleSwitchNamespace
from lms.djangoapps.email_marketing.tasks import update_user, update_user_email, get_email_cookies_via_sailthru
from openedx.core.djangoapps.lang_pref import LANGUAGE_KEY
from student.cookies import CREATE_LOGON_COOKIE
from student.signals import ENROLL_STATUS_CHANGE
from student.signals import SAILTHRU_AUDIT_PURCHASE
from student.views import REGISTER_USER
from util.model_utils import USER_FIELD_CHANGED
from .tasks import update_course_enrollment
log = logging.getLogger(__name__)
@@ -39,7 +40,7 @@ WAFFLE_SWITCHES = WaffleSwitchNamespace(name=WAFFLE_NAMESPACE)
SAILTHRU_AUDIT_PURCHASE_ENABLED = 'audit_purchase_enabled'
@receiver(ENROLL_STATUS_CHANGE)
@receiver(SAILTHRU_AUDIT_PURCHASE)
def update_sailthru(sender, event, user, mode, course_id, **kwargs):
"""
Receives signal and calls a celery task to update the
@@ -51,7 +52,7 @@ def update_sailthru(sender, event, user, mode, course_id, **kwargs):
None
"""
if WAFFLE_SWITCHES.is_enabled(SAILTHRU_AUDIT_PURCHASE_ENABLED) and mode in CourseMode.AUDIT_MODES:
course_key = str(course_id)
course_key = course_id
email = str(user.email)
update_course_enrollment.delay(email, course_key, mode)

View File

@@ -1,6 +1,7 @@
"""
This file contains celery tasks for email marketing signal handler.
"""
import logging
import time
from datetime import datetime, timedelta
@@ -320,7 +321,7 @@ def update_course_enrollment(self, email, course_key, mode):
course_data = _get_course_content(course_key, course_url, sailthru_client, config)
item = _build_purchase_item(course_key, course_url, cost_in_cents, mode, course_data, None)
item = _build_purchase_item(course_key, course_url, cost_in_cents, mode, course_data)
options = {}
if send_template:
@@ -433,7 +434,7 @@ def _get_course_content(course_id, course_url, sailthru_client, config):
return response
def _build_purchase_item(course_id, course_url, cost_in_cents, mode, course_data, sku):
def _build_purchase_item(course_id, course_url, cost_in_cents, mode, course_data):
"""Build and return Sailthru purchase item object"""
# build item description
@@ -454,6 +455,9 @@ def _build_purchase_item(course_id, course_url, cost_in_cents, mode, course_data
if 'tags' in course_data:
item['tags'] = course_data['tags']
# add vars to item
item['vars'] = dict(course_data.get('vars', {}), mode=mode, course_run_id=unicode(course_id))
return item

View File

@@ -704,6 +704,7 @@ class SailthruTests(TestCase):
m.return_value = self.course_url
update_course_enrollment(TEST_EMAIL, self.course_id, 'audit')
item = [{
'vars': {'course_run_id': u'edX/toy/2012_Fall', 'mode': 'audit'},
'url': self.course_url,
'price': 0,
'qty': 1,