Delete visual_progress_enabled waffle flag.

https://openedx.atlassian.net/browse/EDUCATOR-2333
This commit is contained in:
Gregory Martin
2018-04-03 11:12:35 -04:00
parent ba130c87e3
commit 62775c891a
11 changed files with 48 additions and 200 deletions

View File

@@ -37,7 +37,7 @@ from openedx.core.djangolib.markup import HTML, Text
id="${ section['id'] }">
<span class="fa fa-chevron-right ${ 'fa-rotate-90' if section_is_auto_opened else '' }" aria-hidden="true"></span>
<h3 class="section-title">${ section['display_name'] }</h3>
% if show_visual_progress and section.get('complete'):
% if section.get('complete'):
<span class="complete-checkmark fa fa-check"></span>
% endif
</button>
@@ -83,7 +83,7 @@ from openedx.core.djangolib.markup import HTML, Text
<span class="subsection-title">
${ subsection['display_name'] }
</span>
% if subsection.get('complete') and show_visual_progress:
% if subsection.get('complete'):
<span class="complete-checkmark fa fa-check"></span>
% endif
% endif
@@ -168,7 +168,7 @@ from openedx.core.djangolib.markup import HTML, Text
${ vertical['display_name'] }
</span>
</div>
% if vertical.get('complete') and show_visual_progress:
% if vertical.get('complete'):
<span class="complete-checkmark fa fa-check"></span>
% endif
</a>

View File

@@ -307,11 +307,6 @@ class TestCourseOutlineResumeCourse(SharedModuleStoreTestCase, CompletionWaffleT
cls.user = UserFactory(password=TEST_PASSWORD)
CourseEnrollment.enroll(cls.user, cls.course.id)
cls.site = Site.objects.get_current()
SiteConfiguration.objects.get_or_create(
site=cls.site,
enabled=True,
values={waffle.ENABLE_SITE_VISUAL_PROGRESS: True}
)
@classmethod
def create_test_course(cls):
@@ -354,6 +349,27 @@ class TestCourseOutlineResumeCourse(SharedModuleStoreTestCase, CompletionWaffleT
)
self.assertEqual(200, self.client.get(last_accessed_url).status_code)
@override_switch(
'{}.{}'.format(
waffle.WAFFLE_NAMESPACE, waffle.ENABLE_COMPLETION_TRACKING
),
active=True
)
def complete_sequential(self, course, sequential):
"""
Completes provided sequential.
"""
course_key = CourseKey.from_string(str(course.id))
# Fake a visit to sequence2/vertical2
block_key = UsageKey.from_string(unicode(sequential.location))
completion = 1.0
BlockCompletion.objects.submit_completion(
user=self.user,
course_key=course_key,
block_key=block_key,
completion=completion
)
def visit_course_home(self, course, start_count=0, resume_count=0):
"""
Helper function to navigates to course home page, test for resume buttons
@@ -384,37 +400,12 @@ class TestCourseOutlineResumeCourse(SharedModuleStoreTestCase, CompletionWaffleT
self.assertTrue(content('.action-resume-course').attr('href').endswith('/course/' + course.url_name))
def test_resume_course(self):
"""
Tests that two resume course buttons appear when the course has been accessed.
"""
course = self.course
# first navigate to a sequential to make it the last accessed
chapter = course.children[0]
sequential = chapter.children[0]
vertical = sequential.children[0]
self.visit_sequential(course, chapter, sequential)
# check resume course buttons
response = self.visit_course_home(course, resume_count=2)
content = pq(response.content)
self.assertTrue(content('.action-resume-course').attr('href').endswith('/vertical/' + vertical.url_name))
@override_switch(
'{}.{}'.format(
waffle.WAFFLE_NAMESPACE, waffle.ENABLE_VISUAL_PROGRESS
),
active=True
)
@override_settings(LMS_BASE='test_url:9999')
@patch('completion.waffle.get_current_site')
def test_resume_course_with_completion_api(self, get_patched_current_site):
def test_resume_course_with_completion_api(self):
"""
Tests completion API resume button functionality
"""
self.override_waffle_switch(True)
get_patched_current_site.return_value = self.site
# Course tree
course = self.course
@@ -422,16 +413,7 @@ class TestCourseOutlineResumeCourse(SharedModuleStoreTestCase, CompletionWaffleT
vertical1 = course.children[0].children[0].children[0]
vertical2 = course.children[0].children[1].children[0]
# Fake a visit to sequence1/vertical1
block_key = UsageKey.from_string(unicode(vertical1.location))
completion = 1.0
BlockCompletion.objects.submit_completion(
user=self.user,
course_key=course_key,
block_key=block_key,
completion=completion
)
self.complete_sequential(self.course, vertical1)
# Test for 'resume' link
response = self.visit_course_home(course, resume_count=2)
@@ -439,15 +421,8 @@ class TestCourseOutlineResumeCourse(SharedModuleStoreTestCase, CompletionWaffleT
content = pq(response.content)
self.assertTrue(content('.action-resume-course').attr('href').endswith('/vertical/' + vertical1.url_name))
# Fake a visit to sequence2/vertical2
block_key = UsageKey.from_string(unicode(vertical2.location))
completion = 1.0
BlockCompletion.objects.submit_completion(
user=self.user,
course_key=course_key,
block_key=block_key,
completion=completion
)
self.complete_sequential(self.course, vertical2)
# Test for 'resume' link
response = self.visit_course_home(course, resume_count=2)
# Test for 'resume' link URL - should be vertical 2
@@ -465,7 +440,7 @@ class TestCourseOutlineResumeCourse(SharedModuleStoreTestCase, CompletionWaffleT
def test_resume_course_deleted_sequential(self):
"""
Tests resume course when the last accessed sequential is deleted and
Tests resume course when the last completed sequential is deleted and
there is another sequential in the vertical.
"""
@@ -476,7 +451,8 @@ class TestCourseOutlineResumeCourse(SharedModuleStoreTestCase, CompletionWaffleT
self.assertGreaterEqual(len(chapter.children), 2)
sequential = chapter.children[0]
sequential2 = chapter.children[1]
self.visit_sequential(course, chapter, sequential)
self.complete_sequential(course, sequential)
self.complete_sequential(course, sequential2)
# remove one of the sequentials from the chapter
with self.store.branch_setting(ModuleStoreEnum.Branch.draft_preferred, course.id):
@@ -490,7 +466,7 @@ class TestCourseOutlineResumeCourse(SharedModuleStoreTestCase, CompletionWaffleT
def test_resume_course_deleted_sequentials(self):
"""
Tests resume course when the last accessed sequential is deleted and
Tests resume course when the last completed sequential is deleted and
there are no sequentials left in the vertical.
"""
@@ -500,7 +476,7 @@ class TestCourseOutlineResumeCourse(SharedModuleStoreTestCase, CompletionWaffleT
chapter = course.children[0]
self.assertEqual(len(chapter.children), 2)
sequential = chapter.children[0]
self.visit_sequential(course, chapter, sequential)
self.complete_sequential(course, sequential)
# remove all sequentials from chapter
with self.store.branch_setting(ModuleStoreEnum.Branch.draft_preferred, course.id):
@@ -508,22 +484,14 @@ class TestCourseOutlineResumeCourse(SharedModuleStoreTestCase, CompletionWaffleT
self.store.delete_item(sequential.location, self.user.id)
# check resume course buttons
self.visit_course_home(course, resume_count=1)
self.visit_course_home(course, start_count=1, resume_count=0)
@override_switch(
'{}.{}'.format(
waffle.WAFFLE_NAMESPACE, waffle.ENABLE_VISUAL_PROGRESS
),
active=True
)
@patch('completion.waffle.get_current_site')
def test_course_home_for_global_staff(self, get_patched_current_site):
def test_course_home_for_global_staff(self):
"""
Tests that staff user can access the course home without being enrolled
in the course.
"""
course = self.course
get_patched_current_site.return_value = self.site
self.user.is_staff = True
self.user.save()

View File

@@ -2,7 +2,6 @@
Common utilities for the course experience, including course outline.
"""
from completion.models import BlockCompletion
from completion.waffle import visual_progress_enabled
from lms.djangoapps.course_api.blocks.api import get_blocks
from lms.djangoapps.course_blocks.utils import get_student_module_as_dict
@@ -154,14 +153,11 @@ def get_course_outline_block_tree(request, course_id):
populate_children(course_outline_root_block, all_blocks['blocks'])
set_last_accessed_default(course_outline_root_block)
if visual_progress_enabled(course_key=course_key):
mark_blocks_completed(
block=course_outline_root_block,
user=request.user,
course_key=course_key
)
else:
mark_last_accessed(request.user, course_key, course_outline_root_block)
mark_blocks_completed(
block=course_outline_root_block,
user=request.user,
course_key=course_key
)
return course_outline_root_block

View File

@@ -43,18 +43,11 @@ class CourseOutlineFragmentView(EdxFragmentView):
if not course_block_tree:
return None
# TODO: EDUCATOR-2283 Remove 'show_visual_progress' from context
# and remove the check for it in the HTML file
show_visual_progress = (
completion_waffle.visual_progress_enabled(course_key) and
self.user_enrolled_after_completion_collection(request.user, course_key)
)
context = {
'csrf': csrf(request)['csrf_token'],
'course': course_overview,
'blocks': course_block_tree,
'show_visual_progress': show_visual_progress,
'due_date_display_format': course.due_date_display_format,
'blocks': course_block_tree
}
# TODO: EDUCATOR-2283 Remove this check when the waffle flag is turned on in production