Commit 4bd15cf2 by Clinton Blackburn

Merge pull request #7911 from edx/clintonb/deprecate-verify-later

Deprecated Verify Later Page
parents f7e8b2e4 5e687531
......@@ -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)
......
""" 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')),
)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment