Only prompt to upgrade in order to completed graded content (or shift dates) when content_type_gating is enabled

This commit is contained in:
Calen Pennington
2020-05-28 15:04:27 -04:00
parent 07d9d74b7c
commit 7c4585ebfe
5 changed files with 23 additions and 23 deletions

View File

@@ -67,7 +67,7 @@ class DatesTabView(RetrieveAPIView):
course_key = CourseKey.from_string(course_key_string)
course = get_course_with_access(request.user, 'load', course_key, check_if_enrolled=False)
blocks = get_course_date_blocks(course, request.user, request, include_access=True, include_past_dates=True)
display_reset_dates_text, _ = dates_banner_should_display(course_key, request)
display_reset_dates_text = dates_banner_should_display(course_key, request)
learner_is_verified = False
enrollment = get_enrollment(request.user.username, course_key_string)

View File

@@ -1063,7 +1063,7 @@ def dates(request, course_id):
user_timezone = user_timezone_locale['user_timezone']
user_language = user_timezone_locale['user_language']
missed_deadlines, enrollment_mode = dates_banner_should_display(course_key, request)
missed_deadlines = dates_banner_should_display(course_key, request)
context = {
'course': course,
@@ -1081,7 +1081,6 @@ def dates(request, course_id):
course_key=course_key,
),
'missed_deadlines': missed_deadlines,
'enrollment_mode': enrollment_mode,
'reset_deadlines_url': reverse(RESET_COURSE_DEADLINES_NAME),
'reset_deadlines_redirect_url_base': COURSE_DATES_NAME,
'reset_deadlines_redirect_url_id_dict': {'course_id': str(course.id)}
@@ -1667,7 +1666,7 @@ def render_xblock(request, usage_key_string, check_if_enrolled=True):
'mark-completed-on-view-after-delay': completion_service.get_complete_on_view_delay_ms()
}
missed_deadlines, enrollment_mode = dates_banner_should_display(course_key, request)
missed_deadlines = dates_banner_should_display(course_key, request)
context = {
'fragment': block.render('student_view', context=student_view_context),
@@ -1682,7 +1681,6 @@ def render_xblock(request, usage_key_string, check_if_enrolled=True):
'staff_access': bool(request.user.has_perm(VIEW_XQA_INTERFACE, course)),
'xqa_server': settings.FEATURES.get('XQA_SERVER', 'http://your_xqa_server.com'),
'missed_deadlines': missed_deadlines,
'enrollment_mode': enrollment_mode,
'web_app_course_url': reverse(COURSE_HOME_VIEW_NAME, args=[course.id]),
'on_courseware_page': True,
'content_type_gating_enabled': ContentTypeGatingConfig.enabled_for_enrollment(

View File

@@ -17,9 +17,6 @@ from course_modes.models import CourseMode
</div>
% endif
<%
has_locked_assignments = any(hasattr(block, 'contains_gated_content') and block.contains_gated_content for block in course_date_blocks if isinstance(block, CourseAssignmentDate)) if (course_date_blocks and on_dates_tab) else False
is_verified = enrollment_mode == CourseMode.VERIFIED
is_audit = enrollment_mode == CourseMode.AUDIT
additional_styling_class = 'on-mobile' if is_mobile_app else 'has-button'
%>
@@ -98,13 +95,13 @@ additional_styling_class = 'on-mobile' if is_mobile_app else 'has-button'
% endif
</div>
</%def>
% if on_dates_tab and is_audit and has_locked_assignments and not missed_deadlines:
% if on_dates_tab and content_type_gating_enabled and not missed_deadlines:
${upgrade_to_complete_graded_banner()}
% elif missed_deadlines:
% if is_verified:
${reset_dates_banner()}
% elif is_audit:
% if content_type_gating_enabled:
${upgrade_to_reset_banner()}
% else:
${reset_dates_banner()}
% endif
% endif

View File

@@ -25,6 +25,7 @@ from waffle.models import Switch
from waffle.testutils import override_switch
from course_modes.models import CourseMode
from course_modes.tests.factories import CourseModeFactory
from lms.djangoapps.courseware.tests.factories import StaffFactory
from lms.urls import RESET_COURSE_DEADLINES_NAME
from gating import api as lms_gating_api
@@ -33,6 +34,7 @@ from openedx.core.djangoapps.schedules.models import Schedule
from openedx.core.djangoapps.schedules.tests.factories import ScheduleFactory
from openedx.core.lib.gating import api as gating_api
from openedx.features.course_experience import RELATIVE_DATES_FLAG
from openedx.features.content_type_gating.models import ContentTypeGatingConfig
from openedx.features.course_experience.views.course_outline import (
DEFAULT_COMPLETION_TRACKING_START,
CourseOutlineFragmentView
@@ -170,20 +172,29 @@ class TestCourseOutlinePage(SharedModuleStoreTestCase):
@RELATIVE_DATES_FLAG.override(active=True)
@ddt.data(
(CourseMode.AUDIT, False, True),
(CourseMode.VERIFIED, False, True),
(CourseMode.MASTERS, False, False),
(CourseMode.VERIFIED, True, False),
([CourseMode.AUDIT, CourseMode.VERIFIED], CourseMode.AUDIT, False, True),
([CourseMode.AUDIT, CourseMode.VERIFIED], CourseMode.VERIFIED, False, True),
([CourseMode.AUDIT, CourseMode.VERIFIED, CourseMode.MASTERS], CourseMode.MASTERS, False, True),
([CourseMode.PROFESSIONAL], CourseMode.PROFESSIONAL, False, True),
([CourseMode.AUDIT, CourseMode.VERIFIED], CourseMode.VERIFIED, True, False),
)
@ddt.unpack
def test_reset_course_deadlines_banner_shows_for_self_paced_course(
self,
course_modes,
enrollment_mode,
is_course_staff,
should_display
):
ContentTypeGatingConfig.objects.create(
enabled=True,
enabled_as_of=datetime.datetime(2018, 1, 1),
)
course = self.courses[0]
enrollment = CourseEnrollment.objects.get(course_id=course.id)
for mode in course_modes:
CourseModeFactory.create(course_id=course.id, mode_slug=mode)
enrollment = CourseEnrollment.objects.get(course_id=course.id, user=self.user)
enrollment.mode = enrollment_mode
enrollment.save()
self.user.is_staff = is_course_staff

View File

@@ -97,15 +97,9 @@ class CourseOutlineFragmentView(EdxFragmentView):
reset_deadlines_url = reverse(RESET_COURSE_DEADLINES_NAME)
reset_deadlines_redirect_url_base = COURSE_HOME_VIEW_NAME
course_enrollment = None
if not request.user.is_anonymous:
course_enrollment = CourseEnrollment.objects.filter(course=course_overview, user=request.user).filter(
Q(mode=CourseMode.AUDIT) | Q(mode=CourseMode.VERIFIED)).first()
context['reset_deadlines_url'] = reset_deadlines_url
context['reset_deadlines_redirect_url_base'] = reset_deadlines_redirect_url_base
context['reset_deadlines_redirect_url_id_dict'] = {'course_id': str(course.id)}
context['enrollment_mode'] = getattr(course_enrollment, 'mode', None)
context['verified_upgrade_link'] = verified_upgrade_deadline_link(request.user, course=course)
context['on_course_outline_page'] = True
context['content_type_gating_enabled'] = ContentTypeGatingConfig.enabled_for_enrollment(