Commit 7d6ab173 by Nimisha Asthagiri Committed by GitHub

Merge pull request #15316 from edx/ret/planning-prompt-population

Planning Prompts experiment: check content availability date
parents 5b400bc0 3bbeb75c
...@@ -5,10 +5,10 @@ import json ...@@ -5,10 +5,10 @@ import json
import logging import logging
import urllib import urllib
from collections import OrderedDict, namedtuple from collections import OrderedDict, namedtuple
from datetime import datetime from datetime import datetime, timedelta
from pytz import utc
import analytics import analytics
import waffle
from django.conf import settings from django.conf import settings
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
from django.contrib.auth.models import AnonymousUser, User from django.contrib.auth.models import AnonymousUser, User
...@@ -502,6 +502,9 @@ class CourseTabView(EdxFragmentView): ...@@ -502,6 +502,9 @@ class CourseTabView(EdxFragmentView):
'upgrade_link': check_and_get_upgrade_link(request, request.user, course.id), 'upgrade_link': check_and_get_upgrade_link(request, request.user, course.id),
'upgrade_price': get_cosmetic_verified_display_price(course), 'upgrade_price': get_cosmetic_verified_display_price(course),
# ENDTODO # 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): def render_to_fragment(self, request, course=None, page_context=None, **kwargs):
...@@ -521,6 +524,24 @@ class CourseTabView(EdxFragmentView): ...@@ -521,6 +524,24 @@ class CourseTabView(EdxFragmentView):
return render_to_response('courseware/tab-view.html', page_context) 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_csrf_cookie
@ensure_valid_course_key @ensure_valid_course_key
def syllabus(request, course_id): def syllabus(request, course_id):
......
## TODO: (Experimental Code). See https://openedx.atlassian.net/wiki/display/RET/2.+In-course+Verification+Prompts
<%page expression_filter="h"/> <%page expression_filter="h"/>
## TODO: (Experimental Code). See https://openedx.atlassian.net/wiki/display/RET/2.+In-course+Verification+Prompts
% if upgrade_link: % if upgrade_link:
<script type="text/plain" <script type="text/plain"
id="upgrade_user" id="upgrade_user"
...@@ -9,3 +9,9 @@ ...@@ -9,3 +9,9 @@
</script> </script>
% endif % endif
## ENDTODO ## ENDTODO
## TODO: (Experimental Code). See https://openedx.atlassian.net/wiki/display/RET/3.+Planning+Prompts
% if display_planning_prompt:
<script type="text/plain" id="display_planning_prompt"></script>
% endif
## ENDTODO
...@@ -98,7 +98,7 @@ from pipeline_mako import render_require_js_path_overrides ...@@ -98,7 +98,7 @@ from pipeline_mako import render_require_js_path_overrides
<%block name="headextra"/> <%block name="headextra"/>
<%block name="head_extra"/> <%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" /> <%static:optional_include_mako file="head-extra.html" is_theming_enabled="True" />
<%include file="widgets/optimizely.html" /> <%include file="widgets/optimizely.html" />
......
...@@ -124,7 +124,7 @@ class TestCourseUpdatesPage(SharedModuleStoreTestCase): ...@@ -124,7 +124,7 @@ class TestCourseUpdatesPage(SharedModuleStoreTestCase):
course_updates_url(self.course) course_updates_url(self.course)
# Fetch the view and verify that the query counts haven't changed # 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): with check_mongo_calls(4):
url = course_updates_url(self.course) url = course_updates_url(self.course)
self.client.get(url) self.client.get(url)
""" """
Views to show a course outline. Views to show a course outline.
""" """
from django.core.context_processors import csrf from django.core.context_processors import csrf
from django.template.loader import render_to_string from django.template.loader import render_to_string
from opaque_keys.edx.keys import CourseKey from opaque_keys.edx.keys import CourseKey
from web_fragments.fragment import Fragment from web_fragments.fragment import Fragment
from courseware.courses import get_course_overview_with_access 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 openedx.core.djangoapps.plugin_api.views import EdxFragmentView
from ..utils import get_course_outline_block_tree from ..utils import get_course_outline_block_tree
...@@ -32,10 +30,6 @@ class CourseOutlineFragmentView(EdxFragmentView): ...@@ -32,10 +30,6 @@ class CourseOutlineFragmentView(EdxFragmentView):
'csrf': csrf(request)['csrf_token'], 'csrf': csrf(request)['csrf_token'],
'course': course_overview, 'course': course_overview,
'blocks': course_block_tree, '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) html = render_to_string('course_experience/course-outline-fragment.html', context)
return Fragment(html) return Fragment(html)
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