diff --git a/lms/djangoapps/courseware/views/views.py b/lms/djangoapps/courseware/views/views.py index a5467c1e7d..e564ccc191 100644 --- a/lms/djangoapps/courseware/views/views.py +++ b/lms/djangoapps/courseware/views/views.py @@ -5,10 +5,10 @@ import json import logging import urllib from collections import OrderedDict, namedtuple -from datetime import datetime +from datetime import datetime, timedelta +from pytz import utc import analytics -import waffle from django.conf import settings from django.contrib.auth.decorators import login_required from django.contrib.auth.models import AnonymousUser, User @@ -502,6 +502,9 @@ class CourseTabView(EdxFragmentView): 'upgrade_link': check_and_get_upgrade_link(request, request.user, course.id), 'upgrade_price': get_cosmetic_verified_display_price(course), # ENDTODO + # TODO: (Experimental Code). See https://openedx.atlassian.net/wiki/display/RET/3.+Planning+Prompts + 'display_planning_prompt': _should_display_planning_prompt(request, course), + # ENDTODO } def render_to_fragment(self, request, course=None, page_context=None, **kwargs): @@ -521,6 +524,24 @@ class CourseTabView(EdxFragmentView): return render_to_response('courseware/tab-view.html', page_context) +# TODO: (Experimental Code). See https://openedx.atlassian.net/wiki/display/RET/3.+Planning+Prompts +def _should_display_planning_prompt(request, course_overview): + """ + A planning prompt is enabled in the experiment for all enrollments whose + content availability date is less than 14 days from today. + + The content availability date is defined as either the course start date + or the enrollment date, whichever was most recent. + """ + enrollment = CourseEnrollment.get_enrollment(request.user, course_overview.id) + if enrollment: + content_availability_date = max(course_overview.start, enrollment.created) + return content_availability_date > (datetime.now(utc) - timedelta(days=14)) + else: + return False +# ENDTODO + + @ensure_csrf_cookie @ensure_valid_course_key def syllabus(request, course_id): diff --git a/lms/templates/courseware/upgrade.html b/lms/templates/courseware/experiments.html similarity index 58% rename from lms/templates/courseware/upgrade.html rename to lms/templates/courseware/experiments.html index b224bdb276..49065f0e96 100644 --- a/lms/templates/courseware/upgrade.html +++ b/lms/templates/courseware/experiments.html @@ -1,6 +1,6 @@ -## TODO: (Experimental Code). See https://openedx.atlassian.net/wiki/display/RET/2.+In-course+Verification+Prompts <%page expression_filter="h"/> +## TODO: (Experimental Code). See https://openedx.atlassian.net/wiki/display/RET/2.+In-course+Verification+Prompts % if upgrade_link: +% endif +## ENDTODO diff --git a/lms/templates/main.html b/lms/templates/main.html index ff2a074725..cb1ed90d6a 100644 --- a/lms/templates/main.html +++ b/lms/templates/main.html @@ -98,7 +98,7 @@ from pipeline_mako import render_require_js_path_overrides <%block name="headextra"/> <%block name="head_extra"/> - <%include file="/courseware/upgrade.html"/> + <%include file="/courseware/experiments.html"/> <%static:optional_include_mako file="head-extra.html" is_theming_enabled="True" /> <%include file="widgets/optimizely.html" /> diff --git a/openedx/features/course_experience/tests/views/test_course_updates.py b/openedx/features/course_experience/tests/views/test_course_updates.py index 86fa677ecd..6521812d57 100644 --- a/openedx/features/course_experience/tests/views/test_course_updates.py +++ b/openedx/features/course_experience/tests/views/test_course_updates.py @@ -124,7 +124,7 @@ class TestCourseUpdatesPage(SharedModuleStoreTestCase): course_updates_url(self.course) # Fetch the view and verify that the query counts haven't changed - with self.assertNumQueries(34): + with self.assertNumQueries(35): with check_mongo_calls(4): url = course_updates_url(self.course) self.client.get(url) diff --git a/openedx/features/course_experience/views/course_outline.py b/openedx/features/course_experience/views/course_outline.py index 929336361a..ad745f2cdd 100644 --- a/openedx/features/course_experience/views/course_outline.py +++ b/openedx/features/course_experience/views/course_outline.py @@ -1,14 +1,12 @@ """ Views to show a course outline. """ - from django.core.context_processors import csrf from django.template.loader import render_to_string from opaque_keys.edx.keys import CourseKey from web_fragments.fragment import Fragment from courseware.courses import get_course_overview_with_access -from lms.djangoapps.courseware.views.views import check_and_get_upgrade_link, get_cosmetic_verified_display_price from openedx.core.djangoapps.plugin_api.views import EdxFragmentView from ..utils import get_course_outline_block_tree @@ -32,10 +30,6 @@ class CourseOutlineFragmentView(EdxFragmentView): 'csrf': csrf(request)['csrf_token'], 'course': course_overview, 'blocks': course_block_tree, - # TODO: (Experimental Code). See https://openedx.atlassian.net/wiki/display/RET/2.+In-course+Verification+Prompts - 'upgrade_link': check_and_get_upgrade_link(request, request.user, course_key), - 'upgrade_price': get_cosmetic_verified_display_price(course_overview), - # ENDTODO } html = render_to_string('course_experience/course-outline-fragment.html', context) return Fragment(html)