Merge pull request #20367 from edx/dcs/ada-reason

Added a reason field for due date extensions
This commit is contained in:
Dave St.Germain
2019-05-02 14:27:07 -04:00
committed by GitHub
4 changed files with 27 additions and 16 deletions

View File

@@ -2856,7 +2856,9 @@ def change_due_date(request, course_id):
student = require_student_from_identifier(request.POST.get('student'))
unit = find_unit(course, request.POST.get('url'))
due_date = parse_datetime(request.POST.get('due_datetime'))
set_due_date_extension(course, unit, student, due_date, request.user)
reason = strip_tags(request.POST.get('reason', ''))
set_due_date_extension(course, unit, student, due_date, request.user, reason=reason)
return JsonResponse(_(
u'Successfully changed due date for student {0} for {1} '
@@ -2877,7 +2879,9 @@ def reset_due_date(request, course_id):
course = get_course_by_id(CourseKey.from_string(course_id))
student = require_student_from_identifier(request.POST.get('student'))
unit = find_unit(course, request.POST.get('url'))
set_due_date_extension(course, unit, student, None, request.user)
reason = strip_tags(request.POST.get('reason', ''))
set_due_date_extension(course, unit, student, None, request.user, reason=reason)
if not getattr(unit, "due", None):
# It's possible the normal due date was deleted after an extension was granted:
return JsonResponse(

View File

@@ -150,20 +150,20 @@ def title_or_url(node):
return title
def set_due_date_extension(course, unit, student, due_date, actor=None):
def set_due_date_extension(course, unit, student, due_date, actor=None, reason=''):
"""
Sets a due date extension. Raises DashboardError if the unit or extended
due date is invalid.
"""
if due_date:
try:
api.set_date_for_block(course.id, unit.location, 'due', due_date, user=student, reason=None, actor=actor)
api.set_date_for_block(course.id, unit.location, 'due', due_date, user=student, reason=reason, actor=actor)
except api.MissingDateError:
raise DashboardError(_(u"Unit {0} has no due date to extend.").format(unit.location))
except api.InvalidDateError:
raise DashboardError(_("An extended due date must be later than the original due date."))
else:
api.set_date_for_block(course.id, unit.location, 'due', None, user=student, reason=None, actor=actor)
api.set_date_for_block(course.id, unit.location, 'due', None, user=student, reason=reason, actor=actor)
def dump_module_extensions(course, unit):