Merge pull request #23550 from edx/ndalfonso/AA-85-reset-dates-mobile

AA-85 mobile reset dates
This commit is contained in:
Nick
2020-04-02 09:53:50 -04:00
committed by GitHub
16 changed files with 245 additions and 69 deletions

View File

@@ -1,5 +1,6 @@
import ast
import json
import logging
import sys
@@ -10,10 +11,15 @@ import crum
from django.conf import settings
from django.contrib.auth.decorators import login_required
from django.http import Http404, HttpResponse, HttpResponseForbidden, HttpResponseServerError
from django.views.decorators.csrf import requires_csrf_token
from django.views.decorators.csrf import ensure_csrf_cookie, requires_csrf_token
from django.views.defaults import server_error
from django.shortcuts import redirect
from django.urls import reverse
from lms.djangoapps.courseware.access import has_access
from lms.djangoapps.courseware.masquerade import setup_masquerade
from opaque_keys import InvalidKeyError
from opaque_keys.edx.keys import CourseKey, UsageKey
from openedx.core.djangoapps.schedules.utils import reset_self_paced_schedule
from six.moves import map
import track.views
@@ -187,3 +193,34 @@ def add_p3p_header(view_func):
response['P3P'] = settings.P3P_HEADER
return response
return inner
@ensure_csrf_cookie
def reset_course_deadlines(request):
"""
Set the start_date of a schedule to today, which in turn will adjust due dates for
sequentials belonging to a self paced course
"""
from lms.urls import RENDER_XBLOCK_NAME
from openedx.features.course_experience.urls import COURSE_HOME_VIEW_NAME
detail_id_dict = ast.literal_eval(request.POST.get('reset_deadlines_redirect_url_id_dict'))
print('***************', detail_id_dict)
redirect_url = request.POST.get('reset_deadlines_redirect_url_base', COURSE_HOME_VIEW_NAME)
course_key = CourseKey.from_string(detail_id_dict['course_id'])
masquerade_details, masquerade_user = setup_masquerade(
request,
course_key,
has_access(request.user, 'staff', course_key)
)
if masquerade_details and masquerade_details.role == 'student' and masquerade_details.user_name and (
redirect_url == COURSE_HOME_VIEW_NAME
):
# Masquerading as a specific student, so reset that student's schedule
user = masquerade_user
else:
user = request.user
reset_self_paced_schedule(user, course_key)
if redirect_url == RENDER_XBLOCK_NAME:
detail_id_dict.pop('course_id')
return redirect(reverse(redirect_url, kwargs=detail_id_dict))