Skip to content
Snippets Groups Projects
Commit 7c4585eb authored by Calen Pennington's avatar Calen Pennington
Browse files

Only prompt to upgrade in order to completed graded content (or shift dates)...

Only prompt to upgrade in order to completed graded content (or shift dates) when content_type_gating is enabled
parent 07d9d74b
No related branches found
No related tags found
No related merge requests found
......@@ -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)
......
......@@ -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(
......
......@@ -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
......@@ -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
......
......@@ -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(
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment