Merge pull request #23963 from edx/ndalfonso/AA-157-dates-page-missed-deadlines

AA-157 dates page missed deadlines
This commit is contained in:
Nick
2020-05-13 10:24:10 -04:00
committed by GitHub
5 changed files with 48 additions and 9 deletions

View File

@@ -1043,6 +1043,8 @@ def dates(request, course_id):
Display the course's dates.html, or 404 if there is no such course.
Assumes the course_id is in a valid format.
"""
from lms.urls import COURSE_DATES_NAME, RESET_COURSE_DEADLINES_NAME
course_key = CourseKey.from_string(course_id)
# Enable NR tracing for this view based on course
@@ -1076,6 +1078,10 @@ def dates(request, course_id):
user_timezone = user_timezone_locale['user_timezone']
user_language = user_timezone_locale['user_language']
display_reset_dates_text = False
if RELATIVE_DATES_FLAG.is_enabled(course.id):
display_reset_dates_text = reset_deadlines_banner_should_display(course_key, request)
context = {
'course': course,
'course_date_blocks': course_date_blocks,
@@ -1086,6 +1092,10 @@ def dates(request, course_id):
'supports_preview_menu': True,
'can_masquerade': can_masquerade,
'masquerade': masquerade,
'display_reset_dates_text': display_reset_dates_text,
'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)}
}
return render_to_response('courseware/dates.html', context)

View File

@@ -18,7 +18,7 @@
padding: 24px;
display: flex;
flex-wrap: wrap;
gap: 24px;
justify-content: space-between;
max-width: $text-width-readability-max;
.upgrade-banner-text {
@@ -26,6 +26,7 @@
line-height: 24px;
color: #414141;
flex: 1 1 20em;
max-width: 70%;
}
.upgrade-button {

View File

@@ -30,19 +30,43 @@ from openedx.core.djangolib.markup import HTML, Text
% if has_locked_assignments and verified_upgrade_link:
<div class="upgrade-banner">
<div class="upgrade-banner-text">
<strong>${_('You are auditing this course.')}</strong>
${_('This means that you are unable to participate in graded assignments.')}
${_('To complete graded assignments as part of this course, you can upgrade today.')}
<strong>${_('You are auditing this course,')}</strong>
${_(' which means that you are unable to participate in graded assignments.')}
% if display_reset_dates_text:
${_(' It looks like you missed some important deadlines based on our suggested schedule. To complete graded assignments as part of this course and shift the past due assignments into the future, you can upgrade today.')}
% else:
${_(' To complete graded assignments as part of this course, you can upgrade today.')}
% endif
</div>
<div class="upgrade-button">
<a href="${verified_upgrade_link}">
<button type="button">
${_('Upgrade now')}
% if display_reset_dates_text:
${_('Upgrade to shift due dates')}
% else:
${_('Upgrade now')}
% endif
</button>
</a>
</div>
</div>
% endif
% if display_reset_dates_text and learner_is_verified:
<div class="upgrade-banner">
<div class="upgrade-banner-text">
<strong>${_('It looks like you missed some important deadlines based on our suggested schedule.')}</strong>
${_('To keep yourself on track, you can update this schedule and shift the past due assignments into the future. Dont worry—you wont lose any of the progress youve made when you shift your due dates. ')}
</div>
<div class="upgrade-button">
<form method="post" action="${reset_deadlines_url}">
<input type="hidden" id="csrf_token" name="csrfmiddlewaretoken" value="${csrf_token}">
<input type="hidden" name="reset_deadlines_redirect_url_base" value="${reset_deadlines_redirect_url_base}">
<input type="hidden" name="reset_deadlines_redirect_url_id_dict" value="${reset_deadlines_redirect_url_id_dict}">
<button class="upgrade-button">${_("Reset my deadlines")}</button>
</form>
</div>
</div>
% endif
<% due_next_set = False %>
% for block in course_date_blocks:

View File

@@ -57,6 +57,7 @@ from util import views as util_views
RESET_COURSE_DEADLINES_NAME = 'reset_course_deadlines'
RENDER_XBLOCK_NAME = 'render_xblock'
COURSE_DATES_NAME = 'dates'
if settings.DEBUG or settings.FEATURES.get('ENABLE_DJANGO_ADMIN_SITE'):
django_autodiscover()
@@ -486,7 +487,7 @@ urlpatterns += [
settings.COURSE_ID_PATTERN,
),
courseware_views.dates,
name='dates',
name=COURSE_DATES_NAME,
),
# Takes optional student_id for instructor use--shows profile as that student sees it.

View File

@@ -6,6 +6,7 @@ Common utilities for the course experience, including course outline.
from datetime import timedelta
from completion.models import BlockCompletion
from django.db.models import Q
from django.utils import timezone
from opaque_keys.edx.keys import CourseKey
from six.moves import range
@@ -266,9 +267,11 @@ def reset_deadlines_banner_should_display(course_key, request):
request.user and course_overview and has_access(request.user, 'staff', course_overview, course_overview.id)
)
if is_self_paced and (not is_course_staff) and (not course_end_date or timezone.now() < course_end_date):
if (CourseEnrollment.objects.filter(
course=course_overview, user=request.user, mode=CourseMode.VERIFIED
).exists()):
if CourseEnrollment.objects.filter(
course=course_overview, user=request.user,
).filter(
Q(mode=CourseMode.AUDIT) | Q(mode=CourseMode.VERIFIED)
).exists():
course_block_tree = get_course_outline_block_tree(
request, str(course_key), request.user
)