Commit 238a2d53 by Diana Huang

Don't allow people into the verification flow if they've already been verified

parent 5ece6443
......@@ -22,6 +22,8 @@ class ChooseModeView(View):
@method_decorator(login_required)
def get(self, request, course_id, error=None):
if CourseEnrollment.enrollment_mode_for_user(request.user, course_id) == 'verified':
return redirect(reverse('dashboard'))
modes = CourseMode.modes_for_course_dict(course_id)
context = {
"course_id": course_id,
......
......@@ -844,6 +844,23 @@ class CourseEnrollment(models.Model):
return False
@classmethod
def enrollment_mode_for_user(cls, user, course_id):
"""
Returns the enrollment mode for the given user for the given course
`user` is a Django User object
`course_id` is our usual course_id string (e.g. "edX/Test101/2013_Fall)
"""
try:
record = CourseEnrollment.objects.get(user=user, course_id=course_id)
if record.is_active:
return record.mode
else:
return None
except cls.DoesNotExist:
return None
@classmethod
def enrollments_for_user(cls, user):
return CourseEnrollment.objects.filter(user=user, is_active=1)
......
......@@ -41,6 +41,8 @@ class VerifyView(View):
return redirect(
reverse('verify_student_verified',
kwargs={'course_id': course_id}))
elif CourseEnrollment.enrollment_mode_for_user(request.user, course_id) == 'verified':
return redirect(reverse('dashboard'))
else:
# If they haven't completed a verification attempt, we have to
# restart with a new one. We can't reuse an older one because we
......@@ -65,7 +67,7 @@ class VerifyView(View):
],
"currency": verify_mode.currency.upper(),
"chosen_price": chosen_price,
"min_price" : verify_mode.min_price,
"min_price": verify_mode.min_price,
}
return render_to_response('verify_student/photo_verification.html', context)
......@@ -81,6 +83,8 @@ class VerifiedView(View):
"""
Handle the case where we have a get request
"""
if CourseEnrollment.enrollment_mode_for_user(request.user, course_id) == 'verified':
return redirect(reverse('dashboard'))
verify_mode = CourseMode.mode_for_course(course_id, "verified")
if course_id in request.session.get("donation_for_course", {}):
chosen_price = request.session["donation_for_course"][course_id]
......@@ -138,15 +142,18 @@ def create_order(request):
return HttpResponse(json.dumps(params), content_type="text/json")
@login_required
def show_requirements(request, course_id):
"""
Show the requirements necessary for
"""
if CourseEnrollment.enrollment_mode_for_user(request.user, course_id) == 'verified':
return redirect(reverse('dashboard'))
context = {
"course_id": course_id,
"is_not_active": not request.user.is_active,
"course_name" : course_from_id(course_id).display_name,
"course_name": course_from_id(course_id).display_name,
}
return render_to_response("verify_student/show_requirements.html", context)
......
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