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