Commit 4c77cbb2 by Bessie Steinberg Committed by Bill Filler

now it says when a subsection is gated

parent 9d6bbff0
...@@ -344,12 +344,41 @@ def add_course_content_milestone(course_id, content_id, relationship, milestone) ...@@ -344,12 +344,41 @@ def add_course_content_milestone(course_id, content_id, relationship, milestone)
return milestones_api.add_course_content_milestone(course_id, content_id, relationship, milestone) return milestones_api.add_course_content_milestone(course_id, content_id, relationship, milestone)
def get_course_content_milestones_by_course(course_id, relationship, user_id=None):
"""
Client API operation adapter/wrapper
Uses the request cache to store all of a user's
milestones
"""
#TODO: better name
if not settings.FEATURES.get('MILESTONES_APP'):
return []
if user_id is None:
return milestones_api.get_course_content_milestones(course_id, content_id, relationship)
request_cache_dict = request_cache.get_cache(REQUEST_CACHE_NAME)
if user_id not in request_cache_dict:
request_cache_dict[user_id] = {}
if relationship not in request_cache_dict[user_id]:
request_cache_dict[user_id][relationship] = milestones_api.get_course_content_milestones(
course_key=course_id,
relationship=relationship,
user={"id": user_id}
)
return request_cache_dict[user_id][relationship]
def get_course_content_milestones(course_id, content_id, relationship, user_id=None): def get_course_content_milestones(course_id, content_id, relationship, user_id=None):
""" """
Client API operation adapter/wrapper Client API operation adapter/wrapper
Uses the request cache to store all of a user's Uses the request cache to store all of a user's
milestones milestones
""" """
#TODO: refactor and call get course content by course
if not settings.FEATURES.get('MILESTONES_APP'): if not settings.FEATURES.get('MILESTONES_APP'):
return [] return []
......
...@@ -38,6 +38,11 @@ from openedx.core.djangolib.markup import HTML, Text ...@@ -38,6 +38,11 @@ from openedx.core.djangolib.markup import HTML, Text
<span class="subsection-title">${ subsection['display_name'] }</span> <span class="subsection-title">${ subsection['display_name'] }</span>
<div class="details"> <div class="details">
% if subsection['id'] in milestones:
<span class="subtitle">
THIS IS GATED CONTENT!
</span>
% endif
## There are behavior differences between rendering of subsections which have ## There are behavior differences between rendering of subsections which have
## exams (timed, graded, etc) and those that do not. ## exams (timed, graded, etc) and those that do not.
## ##
......
...@@ -11,7 +11,7 @@ from courseware.courses import get_course_overview_with_access ...@@ -11,7 +11,7 @@ from courseware.courses import get_course_overview_with_access
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
from util.milestones_helpers import get_course_content_milestones from util.milestones_helpers import get_course_content_milestones, get_course_content_milestones_by_course
class CourseOutlineFragmentView(EdxFragmentView): class CourseOutlineFragmentView(EdxFragmentView):
...@@ -33,25 +33,20 @@ class CourseOutlineFragmentView(EdxFragmentView): ...@@ -33,25 +33,20 @@ class CourseOutlineFragmentView(EdxFragmentView):
if not course_block_tree: if not course_block_tree:
return None return None
block_id_0 = course_block_tree.get('children')[0].get('children')[0].get('id') milestones = get_course_content_milestones_by_course(
prereq_0 = get_course_content_milestones(
course_id=course_key, course_id=course_key,
content_id=block_id_0,
relationship='requires', relationship='requires',
user_id=request.user.id) user_id=request.user.id)
block_id_1 = course_block_tree.get('children')[0].get('children')[1].get('id') content_block_milestones = []
prereq_1 = get_course_content_milestones( for milestone in milestones:
course_id=course_key, content_block_milestones.append( milestone['content_id'] )
content_id=block_id_1,
relationship='requires',
user_id=request.user.id)
context = { context = {
'csrf': csrf(request)['csrf_token'], 'csrf': csrf(request)['csrf_token'],
'course': course_overview, 'course': course_overview,
'blocks': course_block_tree #, 'blocks': course_block_tree,
# 'has_prereq': has_prereq 'milestones': content_block_milestones
} }
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