Deprecated Verify Later Page
We are moving toward a single workflow for verification.
This commit is contained in:
@@ -1751,7 +1751,7 @@ class CertificateItem(OrderItem):
|
||||
|
||||
if is_enrollment_mode_verified:
|
||||
domain = microsite.get_value('SITE_NAME', settings.SITE_NAME)
|
||||
path = reverse('verify_student_verify_later', kwargs={'course_id': unicode(self.course_id)})
|
||||
path = reverse('verify_student_verify_now', kwargs={'course_id': unicode(self.course_id)})
|
||||
verification_url = "http://{domain}{path}".format(domain=domain, path=path)
|
||||
|
||||
verification_reminder = _(
|
||||
|
||||
@@ -275,20 +275,18 @@ class TestPayAndVerifyView(UrlResetMixin, ModuleStoreTestCase):
|
||||
|
||||
@ddt.data(
|
||||
"verify_student_verify_now",
|
||||
"verify_student_verify_later",
|
||||
"verify_student_payment_confirmation"
|
||||
)
|
||||
def test_verify_now_or_later_not_enrolled(self, page_name):
|
||||
def test_verify_now_not_enrolled(self, page_name):
|
||||
course = self._create_course("verified")
|
||||
response = self._get_page(page_name, course.id, expected_status_code=302)
|
||||
self._assert_redirects_to_start_flow(response, course.id)
|
||||
|
||||
@ddt.data(
|
||||
"verify_student_verify_now",
|
||||
"verify_student_verify_later",
|
||||
"verify_student_payment_confirmation"
|
||||
)
|
||||
def test_verify_now_or_later_unenrolled(self, page_name):
|
||||
def test_verify_now_unenrolled(self, page_name):
|
||||
course = self._create_course("verified")
|
||||
self._enroll(course.id, "verified")
|
||||
self._unenroll(course.id)
|
||||
@@ -297,46 +295,21 @@ class TestPayAndVerifyView(UrlResetMixin, ModuleStoreTestCase):
|
||||
|
||||
@ddt.data(
|
||||
"verify_student_verify_now",
|
||||
"verify_student_verify_later",
|
||||
"verify_student_payment_confirmation"
|
||||
)
|
||||
def test_verify_now_or_later_not_paid(self, page_name):
|
||||
def test_verify_now_not_paid(self, page_name):
|
||||
course = self._create_course("verified")
|
||||
self._enroll(course.id, "honor")
|
||||
response = self._get_page(page_name, course.id, expected_status_code=302)
|
||||
self._assert_redirects_to_upgrade(response, course.id)
|
||||
|
||||
def test_verify_later(self):
|
||||
""" The deprecated verify-later page should redirect to the verification start page. """
|
||||
course = self._create_course("verified")
|
||||
self._enroll(course.id, "verified")
|
||||
response = self._get_page("verify_student_verify_later", course.id)
|
||||
|
||||
self._assert_messaging(response, PayAndVerifyView.VERIFY_LATER_MSG)
|
||||
|
||||
# Expect that the payment steps are NOT displayed
|
||||
self._assert_steps_displayed(
|
||||
response,
|
||||
[PayAndVerifyView.INTRO_STEP] + PayAndVerifyView.VERIFICATION_STEPS,
|
||||
PayAndVerifyView.INTRO_STEP
|
||||
)
|
||||
self._assert_requirements_displayed(response, [
|
||||
PayAndVerifyView.PHOTO_ID_REQ,
|
||||
PayAndVerifyView.WEBCAM_REQ,
|
||||
])
|
||||
|
||||
def test_verify_later_already_verified(self):
|
||||
course = self._create_course("verified")
|
||||
self._enroll(course.id, "verified")
|
||||
self._set_verification_status("submitted")
|
||||
|
||||
# Already verified, so if we somehow end up here,
|
||||
# redirect immediately to the dashboard
|
||||
response = self._get_page(
|
||||
'verify_student_verify_later',
|
||||
course.id,
|
||||
expected_status_code=302
|
||||
)
|
||||
self._assert_redirects_to_dashboard(response)
|
||||
course_key = course.id
|
||||
self._enroll(course_key, "verified")
|
||||
response = self._get_page("verify_student_verify_later", course_key, expected_status_code=301)
|
||||
self._assert_redirects_to_verify_start(response, course_key, 301)
|
||||
|
||||
def test_payment_confirmation(self):
|
||||
course = self._create_course("verified")
|
||||
@@ -489,7 +462,7 @@ class TestPayAndVerifyView(UrlResetMixin, ModuleStoreTestCase):
|
||||
course.id,
|
||||
expected_status_code=302
|
||||
)
|
||||
self._assert_redirects_to_verify_later(response, course.id)
|
||||
self._assert_redirects_to_verify_start(response, course.id)
|
||||
|
||||
def test_upgrade_already_verified_and_paid(self):
|
||||
course = self._create_course("verified")
|
||||
@@ -531,7 +504,6 @@ class TestPayAndVerifyView(UrlResetMixin, ModuleStoreTestCase):
|
||||
pages = [
|
||||
'verify_student_start_flow',
|
||||
'verify_student_verify_now',
|
||||
'verify_student_verify_later',
|
||||
'verify_student_upgrade_and_verify',
|
||||
]
|
||||
|
||||
@@ -553,7 +525,6 @@ class TestPayAndVerifyView(UrlResetMixin, ModuleStoreTestCase):
|
||||
@ddt.data(
|
||||
"verify_student_start_flow",
|
||||
"verify_student_verify_now",
|
||||
"verify_student_verify_later",
|
||||
"verify_student_upgrade_and_verify",
|
||||
)
|
||||
def test_require_login(self, url_name):
|
||||
@@ -571,7 +542,6 @@ class TestPayAndVerifyView(UrlResetMixin, ModuleStoreTestCase):
|
||||
@ddt.data(
|
||||
"verify_student_start_flow",
|
||||
"verify_student_verify_now",
|
||||
"verify_student_verify_later",
|
||||
"verify_student_upgrade_and_verify",
|
||||
)
|
||||
def test_no_such_course(self, url_name):
|
||||
@@ -654,7 +624,7 @@ class TestPayAndVerifyView(UrlResetMixin, ModuleStoreTestCase):
|
||||
|
||||
# The course mode has expired, so expect an explanation
|
||||
# to the student that the deadline has passed
|
||||
response = self._get_page("verify_student_verify_later", course.id)
|
||||
response = self._get_page("verify_student_verify_now", course.id)
|
||||
self.assertContains(response, "verification deadline")
|
||||
self.assertContains(response, "Jan 02, 1999 at 00:00 UTC")
|
||||
|
||||
@@ -821,10 +791,10 @@ class TestPayAndVerifyView(UrlResetMixin, ModuleStoreTestCase):
|
||||
url = reverse('verify_student_start_flow', kwargs={'course_id': unicode(course_id)})
|
||||
self.assertRedirects(response, url)
|
||||
|
||||
def _assert_redirects_to_verify_later(self, response, course_id):
|
||||
def _assert_redirects_to_verify_start(self, response, course_id, status_code=302):
|
||||
"""Check that the page redirects to the "verify later" part of the flow. """
|
||||
url = reverse('verify_student_verify_later', kwargs={'course_id': unicode(course_id)})
|
||||
self.assertRedirects(response, url)
|
||||
url = reverse('verify_student_verify_now', kwargs={'course_id': unicode(course_id)})
|
||||
self.assertRedirects(response, url, status_code)
|
||||
|
||||
def _assert_redirects_to_upgrade(self, response, course_id):
|
||||
"""Check that the page redirects to the "upgrade" part of the flow. """
|
||||
@@ -1765,8 +1735,7 @@ class TestInCourseReverifyView(ModuleStoreTestCase):
|
||||
self._create_checkpoint()
|
||||
response = self.client.get(self._get_url(self.course_key, self.MIDTERM))
|
||||
|
||||
url = reverse('verify_student_verify_later',
|
||||
kwargs={"course_id": unicode(self.course_key)})
|
||||
url = reverse('verify_student_verify_now', kwargs={"course_id": unicode(self.course_key)})
|
||||
self.assertRedirects(response, url)
|
||||
|
||||
@override_settings(SEGMENT_IO_LMS_KEY="foobar")
|
||||
@@ -1810,8 +1779,7 @@ class TestInCourseReverifyView(ModuleStoreTestCase):
|
||||
self._create_checkpoint()
|
||||
|
||||
response = self.client.post(self._get_url(self.course_key, self.MIDTERM))
|
||||
url = reverse('verify_student_verify_later',
|
||||
kwargs={"course_id": unicode(self.course_key)})
|
||||
url = reverse('verify_student_verify_now', kwargs={"course_id": unicode(self.course_key)})
|
||||
|
||||
self.assertRedirects(response, url)
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
""" URL definitions for the verify_student app. """
|
||||
|
||||
from django.conf import settings
|
||||
from django.conf.urls import patterns, url
|
||||
|
||||
from verify_student import views
|
||||
from verify_student.views import PayAndVerifyView
|
||||
|
||||
from django.conf import settings
|
||||
|
||||
|
||||
urlpatterns = patterns(
|
||||
@@ -19,7 +19,7 @@ urlpatterns = patterns(
|
||||
views.PayAndVerifyView.as_view(), # pylint: disable=no-value-for-parameter
|
||||
name="verify_student_start_flow",
|
||||
kwargs={
|
||||
'message': PayAndVerifyView.FIRST_TIME_VERIFY_MSG
|
||||
'message': views.PayAndVerifyView.FIRST_TIME_VERIFY_MSG
|
||||
}
|
||||
),
|
||||
|
||||
@@ -31,7 +31,7 @@ urlpatterns = patterns(
|
||||
views.PayAndVerifyView.as_view(), # pylint: disable=no-value-for-parameter
|
||||
name="verify_student_upgrade_and_verify",
|
||||
kwargs={
|
||||
'message': PayAndVerifyView.UPGRADE_MSG
|
||||
'message': views.PayAndVerifyView.UPGRADE_MSG
|
||||
}
|
||||
),
|
||||
|
||||
@@ -47,8 +47,8 @@ urlpatterns = patterns(
|
||||
name="verify_student_verify_now",
|
||||
kwargs={
|
||||
'always_show_payment': True,
|
||||
'current_step': PayAndVerifyView.FACE_PHOTO_STEP,
|
||||
'message': PayAndVerifyView.VERIFY_NOW_MSG
|
||||
'current_step': views.PayAndVerifyView.FACE_PHOTO_STEP,
|
||||
'message': views.PayAndVerifyView.VERIFY_NOW_MSG
|
||||
}
|
||||
),
|
||||
|
||||
@@ -59,11 +59,8 @@ urlpatterns = patterns(
|
||||
# (since the user already paid).
|
||||
url(
|
||||
r'^verify-later/{course}/$'.format(course=settings.COURSE_ID_PATTERN),
|
||||
views.PayAndVerifyView.as_view(), # pylint: disable=no-value-for-parameter
|
||||
name="verify_student_verify_later",
|
||||
kwargs={
|
||||
'message': PayAndVerifyView.VERIFY_LATER_MSG
|
||||
}
|
||||
views.VerifyLaterView.as_view(), # pylint: disable=no-value-for-parameter
|
||||
name="verify_student_verify_later"
|
||||
),
|
||||
|
||||
# The user is returning to the flow after paying.
|
||||
@@ -75,8 +72,8 @@ urlpatterns = patterns(
|
||||
name="verify_student_payment_confirmation",
|
||||
kwargs={
|
||||
'always_show_payment': True,
|
||||
'current_step': PayAndVerifyView.PAYMENT_CONFIRMATION_STEP,
|
||||
'message': PayAndVerifyView.PAYMENT_CONFIRMATION_MSG
|
||||
'current_step': views.PayAndVerifyView.PAYMENT_CONFIRMATION_STEP,
|
||||
'message': views.PayAndVerifyView.PAYMENT_CONFIRMATION_MSG
|
||||
}
|
||||
),
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ from django.http import (
|
||||
from django.shortcuts import redirect
|
||||
from django.views.decorators.csrf import csrf_exempt
|
||||
from django.views.decorators.http import require_POST
|
||||
from django.views.generic.base import View
|
||||
from django.views.generic.base import View, RedirectView
|
||||
from django.utils.decorators import method_decorator
|
||||
from django.utils.translation import ugettext as _, ugettext_lazy
|
||||
from django.contrib.auth.decorators import login_required
|
||||
@@ -473,10 +473,9 @@ class PayAndVerifyView(View):
|
||||
url = reverse('verify_student_start_flow', kwargs=course_kwargs)
|
||||
elif message == self.UPGRADE_MSG:
|
||||
if is_enrolled:
|
||||
# If upgrading and we've paid but haven't verified,
|
||||
# then the "verify later" messaging makes more sense.
|
||||
if already_paid:
|
||||
url = reverse('verify_student_verify_later', kwargs=course_kwargs)
|
||||
# If the student has paid, but not verified, redirect to the verification flow.
|
||||
url = reverse('verify_student_verify_now', kwargs=course_kwargs)
|
||||
else:
|
||||
url = reverse('verify_student_start_flow', kwargs=course_kwargs)
|
||||
|
||||
@@ -1205,7 +1204,7 @@ class InCourseReverifyView(View):
|
||||
|
||||
Returns:
|
||||
HttpResponse with status_code 400 if photo is missing or any error
|
||||
or redirect to verify_student_verify_later url if initial verification doesn't exist otherwise
|
||||
or redirect to the verification flow if initial verification doesn't exist otherwise
|
||||
HttpsResponse with status code 200
|
||||
"""
|
||||
# Check the in-course re-verification is enabled or not
|
||||
@@ -1330,4 +1329,12 @@ class InCourseReverifyView(View):
|
||||
u"for the course %s.",
|
||||
user.id, course_key
|
||||
)
|
||||
return redirect(reverse('verify_student_verify_later', kwargs={'course_id': unicode(course_key)}))
|
||||
return redirect(reverse('verify_student_verify_now', kwargs={'course_id': unicode(course_key)}))
|
||||
|
||||
|
||||
class VerifyLaterView(RedirectView):
|
||||
""" This view has been deprecated and should redirect to the unified verification flow. """
|
||||
permanent = True
|
||||
|
||||
def get_redirect_url(self, course_id, **kwargs): # pylint: disable=unused-argument
|
||||
return reverse('verify_student_verify_now', kwargs={'course_id': unicode(course_id)})
|
||||
|
||||
@@ -292,7 +292,7 @@ from student.helpers import (
|
||||
% endif
|
||||
</div>
|
||||
<div class="verification-cta">
|
||||
<a href="${reverse('verify_student_verify_later', kwargs={'course_id': unicode(course.id)})}" class="cta" data-course-id="${course.id | h}">${_('Verify Now')}</a>
|
||||
<a href="${reverse('verify_student_verify_now', kwargs={'course_id': unicode(course.id)})}" class="cta" data-course-id="${course.id | h}">${_('Verify Now')}</a>
|
||||
</div>
|
||||
% elif verification_status['status'] == VERIFY_STATUS_SUBMITTED:
|
||||
<h4 class="message-title">${_('You have already verified your ID!')}</h4>
|
||||
|
||||
@@ -122,6 +122,7 @@ if settings.FEATURES["ENABLE_MOBILE_REST_API"]:
|
||||
|
||||
# if settings.FEATURES.get("MULTIPLE_ENROLLMENT_ROLES"):
|
||||
urlpatterns += (
|
||||
# TODO Namespace these!
|
||||
url(r'^verify_student/', include('verify_student.urls')),
|
||||
url(r'^course_modes/', include('course_modes.urls')),
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user