Commit 83ad421d by Bessie Steinberg Committed by Bill Filler

show which prereq is needed

parent 257a63de
......@@ -104,6 +104,13 @@ from openedx.core.djangolib.markup import HTML, Text
% endif
</span>
% endif
% if subsection['id'] in milestones and not milestones[subsection['id']]['completed_prereqs']:
<span class="subtitle">
<span class="subtitle-name">
Prereq is: ${milestones[subsection['id']]['prereq']}
</span>
</span>
% endif
</div> <!-- /details -->
</div> <!-- /subsection-text -->
<div class="subsection-actions">
......
......@@ -8,6 +8,26 @@ from lms.djangoapps.course_blocks.utils import get_student_module_as_dict
from request_cache.middleware import request_cached
from xmodule.modulestore.django import modulestore
#TODO: what does request_cached do?
@request_cached
def get_all_course_blocks(request, course_id):
#TODO: add description
course_key = CourseKey.from_string(course_id)
course_usage_key = modulestore().make_course_usage_key(course_key)
# TODO: dedup this code
# TODO: :have this only be called once per outline render fragment
all_blocks = get_blocks(
request,
course_usage_key,
user=request.user,
nav_depth=3,
requested_fields=['children', 'display_name', 'type',
'due', 'graded', 'special_exam_info', 'format'],
block_types_filter=['course', 'chapter', 'sequential']
)
return all_blocks
@request_cached
def get_course_outline_block_tree(request, course_id):
......@@ -62,6 +82,8 @@ def get_course_outline_block_tree(request, course_id):
course_key = CourseKey.from_string(course_id)
course_usage_key = modulestore().make_course_usage_key(course_key)
# TODO: dedup this code
# TODO: :have this only be called once per outline render fragment
all_blocks = get_blocks(
request,
course_usage_key,
......@@ -77,3 +99,6 @@ def get_course_outline_block_tree(request, course_id):
set_last_accessed_default(course_outline_root_block)
mark_last_accessed(request.user, course_key, course_outline_root_block)
return course_outline_root_block
......@@ -6,11 +6,11 @@ from django.template.loader import render_to_string
from opaque_keys.edx.keys import CourseKey
from web_fragments.fragment import Fragment
from lms.djangoapps.course_api.blocks.api import get_blocks
from courseware.courses import get_course_overview_with_access
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, get_all_course_blocks
from util.milestones_helpers import get_all_course_content_milestones, get_course_content_milestones_by_course, milestones_achieved_by_user, get_course_content_milestones
......@@ -26,6 +26,7 @@ class CourseOutlineFragmentView(EdxFragmentView):
course_key = CourseKey.from_string(course_id)
course_overview = get_course_overview_with_access(request.user, 'load', course_key, check_if_enrolled=True)
course_block_tree = get_course_outline_block_tree(request, course_id)
all_course_blocks = get_all_course_blocks(request, course_id)
if not course_block_tree:
return None
......@@ -33,6 +34,7 @@ class CourseOutlineFragmentView(EdxFragmentView):
content_milestones = {}
#TODO: should i be using a user id here? probably
course_prereqs = get_all_course_content_milestones(course_key) #, relationship='requires')
unfulfilled_prereqs = get_course_content_milestones_by_course(
......@@ -49,7 +51,9 @@ class CourseOutlineFragmentView(EdxFragmentView):
}
for milestone in unfulfilled_prereqs:
content_milestones[ milestone['content_id'] ]['completed_prereqs'] = False
content_milestones[milestone['content_id']]['completed_prereqs'] = False
content_milestones[milestone['content_id']]['prereq'] = all_course_blocks['blocks'][milestone['namespace'].replace('.gating','')]['display_name']
#TODO: can there be multiple prereqs?
context = {
'csrf': csrf(request)['csrf_token'],
......
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