Merge pull request #15316 from edx/ret/planning-prompt-population
Planning Prompts experiment: check content availability date
This commit is contained in:
@@ -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):
|
||||
|
||||
@@ -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:
|
||||
<script type="text/plain"
|
||||
id="upgrade_user"
|
||||
@@ -9,3 +9,9 @@
|
||||
</script>
|
||||
% endif
|
||||
## 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
|
||||
<%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" />
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user