feat: remove course_home_course_tools upsell link (REV-2131)
This commit is contained in:
@@ -1,82 +1,20 @@
|
||||
"""
|
||||
Platform plugins to support a verified upgrade tool.
|
||||
Platform plugins to support course tools.
|
||||
"""
|
||||
|
||||
|
||||
import datetime
|
||||
|
||||
import pytz
|
||||
from crum import get_current_request
|
||||
from django.conf import settings
|
||||
from django.utils.translation import ugettext as _
|
||||
from django.urls import reverse
|
||||
from common.djangoapps.course_modes.models import CourseMode
|
||||
from lms.djangoapps.courseware.utils import verified_upgrade_deadline_link
|
||||
from openedx.features.course_experience.course_tools import CourseTool
|
||||
from common.djangoapps.student.models import CourseEnrollment
|
||||
from openedx.core.djangoapps.content.course_overviews.models import CourseOverview
|
||||
|
||||
|
||||
class VerifiedUpgradeTool(CourseTool):
|
||||
"""
|
||||
The verified upgrade tool.
|
||||
"""
|
||||
@classmethod
|
||||
def analytics_id(cls):
|
||||
"""
|
||||
Returns an id to uniquely identify this tool in analytics events.
|
||||
"""
|
||||
return 'edx.tool.verified_upgrade'
|
||||
|
||||
@classmethod
|
||||
def is_enabled(cls, request, course_key):
|
||||
"""
|
||||
Show this tool to all learners who are eligible to upgrade.
|
||||
"""
|
||||
enrollment = CourseEnrollment.get_enrollment(request.user, course_key)
|
||||
if enrollment is None:
|
||||
return False
|
||||
|
||||
if enrollment.dynamic_upgrade_deadline is None:
|
||||
return False
|
||||
|
||||
if not enrollment.is_active:
|
||||
return False
|
||||
|
||||
if enrollment.mode not in CourseMode.UPSELL_TO_VERIFIED_MODES:
|
||||
return False
|
||||
|
||||
if enrollment.course_upgrade_deadline is None:
|
||||
return False
|
||||
|
||||
if datetime.datetime.now(pytz.UTC) >= enrollment.course_upgrade_deadline:
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
@classmethod
|
||||
def title(cls): # lint-amnesty, pylint: disable=arguments-differ
|
||||
"""
|
||||
Returns the title of this tool.
|
||||
"""
|
||||
return _('Upgrade to Verified')
|
||||
|
||||
@classmethod
|
||||
def icon_classes(cls): # lint-amnesty, pylint: disable=arguments-differ
|
||||
"""
|
||||
Returns the icon classes needed to represent this tool.
|
||||
"""
|
||||
return 'fa fa-certificate'
|
||||
|
||||
@classmethod
|
||||
def url(cls, course_key):
|
||||
"""
|
||||
Returns the URL for this tool for the specified course key.
|
||||
"""
|
||||
request = get_current_request()
|
||||
return verified_upgrade_deadline_link(request.user, course_id=course_key)
|
||||
|
||||
|
||||
class FinancialAssistanceTool(CourseTool):
|
||||
"""
|
||||
The financial assistance tool.
|
||||
|
||||
@@ -420,8 +420,8 @@ class SelfPacedCourseInfoTestCase(LoginEnrollmentTestCase, SharedModuleStoreTest
|
||||
|
||||
def test_num_queries_instructor_paced(self):
|
||||
# TODO: decrease query count as part of REVO-28
|
||||
self.fetch_course_info_with_queries(self.instructor_paced_course, 43, 3)
|
||||
self.fetch_course_info_with_queries(self.instructor_paced_course, 42, 3)
|
||||
|
||||
def test_num_queries_self_paced(self):
|
||||
# TODO: decrease query count as part of REVO-28
|
||||
self.fetch_course_info_with_queries(self.self_paced_course, 43, 3)
|
||||
self.fetch_course_info_with_queries(self.self_paced_course, 42, 3)
|
||||
|
||||
@@ -12,90 +12,14 @@ from django.test import RequestFactory
|
||||
|
||||
from common.djangoapps.course_modes.models import CourseMode
|
||||
from common.djangoapps.course_modes.tests.factories import CourseModeFactory
|
||||
from lms.djangoapps.courseware.course_tools import FinancialAssistanceTool, VerifiedUpgradeTool
|
||||
from lms.djangoapps.courseware.course_tools import FinancialAssistanceTool
|
||||
from lms.djangoapps.courseware.models import DynamicUpgradeDeadlineConfiguration
|
||||
from openedx.core.djangoapps.content.course_overviews.models import CourseOverview
|
||||
from common.djangoapps.student.tests.factories import CourseEnrollmentFactory, UserFactory
|
||||
from common.djangoapps.student.tests.factories import CourseEnrollmentFactory
|
||||
from xmodule.modulestore.tests.django_utils import SharedModuleStoreTestCase
|
||||
from xmodule.modulestore.tests.factories import CourseFactory
|
||||
|
||||
|
||||
class VerifiedUpgradeToolTest(SharedModuleStoreTestCase): # lint-amnesty, pylint: disable=missing-class-docstring
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super().setUpClass()
|
||||
cls.now = datetime.datetime.now(pytz.UTC)
|
||||
|
||||
cls.course = CourseFactory.create(
|
||||
org='edX',
|
||||
number='test',
|
||||
display_name='Test Course',
|
||||
self_paced=True,
|
||||
start=cls.now - datetime.timedelta(days=30),
|
||||
)
|
||||
cls.course_overview = CourseOverview.get_from_id(cls.course.id)
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
|
||||
self.course_verified_mode = CourseModeFactory(
|
||||
course_id=self.course.id,
|
||||
mode_slug=CourseMode.VERIFIED,
|
||||
expiration_datetime=self.now + datetime.timedelta(days=30),
|
||||
)
|
||||
|
||||
DynamicUpgradeDeadlineConfiguration.objects.create(enabled=True)
|
||||
|
||||
self.request = RequestFactory().request()
|
||||
crum.set_current_request(self.request)
|
||||
self.addCleanup(crum.set_current_request, None)
|
||||
self.enrollment = CourseEnrollmentFactory(
|
||||
course_id=self.course.id,
|
||||
mode=CourseMode.AUDIT,
|
||||
course=self.course_overview,
|
||||
)
|
||||
self.request.user = self.enrollment.user
|
||||
|
||||
def test_tool_visible(self):
|
||||
assert VerifiedUpgradeTool().is_enabled(self.request, self.course.id)
|
||||
|
||||
def test_not_visible_when_no_enrollment_exists(self):
|
||||
self.enrollment.delete()
|
||||
|
||||
request = RequestFactory().request()
|
||||
request.user = UserFactory()
|
||||
assert not VerifiedUpgradeTool().is_enabled(self.request, self.course.id)
|
||||
|
||||
def test_not_visible_when_using_deadline_from_course_mode(self):
|
||||
DynamicUpgradeDeadlineConfiguration.objects.create(enabled=False)
|
||||
assert not VerifiedUpgradeTool().is_enabled(self.request, self.course.id)
|
||||
|
||||
def test_not_visible_when_enrollment_is_inactive(self):
|
||||
self.enrollment.is_active = False
|
||||
self.enrollment.save()
|
||||
assert not VerifiedUpgradeTool().is_enabled(self.request, self.course.id)
|
||||
|
||||
def test_not_visible_when_already_verified(self):
|
||||
self.enrollment.mode = CourseMode.VERIFIED
|
||||
self.enrollment.save()
|
||||
assert not VerifiedUpgradeTool().is_enabled(self.request, self.course.id)
|
||||
|
||||
def test_not_visible_when_no_verified_track(self):
|
||||
self.course_verified_mode.delete()
|
||||
assert not VerifiedUpgradeTool().is_enabled(self.request, self.course.id)
|
||||
|
||||
def test_not_visible_when_course_deadline_has_passed(self):
|
||||
self.course_verified_mode.expiration_datetime = self.now - datetime.timedelta(days=1)
|
||||
self.course_verified_mode.save()
|
||||
assert not VerifiedUpgradeTool().is_enabled(self.request, self.course.id)
|
||||
|
||||
def test_not_visible_when_course_mode_has_no_deadline(self):
|
||||
self.course_verified_mode.expiration_datetime = None
|
||||
self.course_verified_mode.save()
|
||||
assert not VerifiedUpgradeTool().is_enabled(self.request, self.course.id)
|
||||
|
||||
|
||||
class FinancialAssistanceToolTest(SharedModuleStoreTestCase):
|
||||
"""
|
||||
Tests for FinancialAssistanceTool
|
||||
|
||||
@@ -198,7 +198,6 @@ from openedx.features.course_experience.course_tools import HttpMethod
|
||||
var sockLink = $("#sock");
|
||||
var upgradeDateLink = $("#course_home_dates");
|
||||
var GreenUpgradeLink = $("#green_upgrade");
|
||||
var courseToolsUpgradeLink = $(document.querySelectorAll("[data-analytics-id='edx.tool.verified_upgrade']"));
|
||||
var GreenUpgradeLink = $("#green_upgrade");
|
||||
var certificateUpsellLink = $("#certificate_upsell");
|
||||
|
||||
@@ -238,12 +237,6 @@ from openedx.features.course_experience.course_tools import HttpMethod
|
||||
linkCategory: "green_upgrade"
|
||||
});
|
||||
|
||||
TrackECommerceEvents.trackUpsellClick(courseToolsUpgradeLink, 'course_home_course_tools', {
|
||||
pageName: "course_home",
|
||||
linkType: "link",
|
||||
linkCategory: "(none)"
|
||||
});
|
||||
|
||||
TrackECommerceEvents.trackUpsellClick(certificateUpsellLink, 'course_home_certificate', {
|
||||
pageName: "course_home",
|
||||
linkType: "link",
|
||||
|
||||
1
setup.py
1
setup.py
@@ -42,7 +42,6 @@ setup(
|
||||
"calendar_sync_toggle = openedx.features.calendar_sync.plugins:CalendarSyncToggleTool",
|
||||
"course_bookmarks = openedx.features.course_bookmarks.plugins:CourseBookmarksTool",
|
||||
"course_updates = openedx.features.course_experience.plugins:CourseUpdatesTool",
|
||||
"verified_upgrade = lms.djangoapps.courseware.course_tools:VerifiedUpgradeTool",
|
||||
"financial_assistance = lms.djangoapps.courseware.course_tools:FinancialAssistanceTool",
|
||||
],
|
||||
"openedx.user_partition_scheme": [
|
||||
|
||||
Reference in New Issue
Block a user