'Render the reverification flow.
Most of the work is done client-side by composing the same
Backbone views used in the initial verification flow.'

@method_decorator(login_required)
def get(self, request):

    (status, __) = SoftwareSecurePhotoVerification.user_status(request.user)
    expiration_datetime = SoftwareSecurePhotoVerification.get_expiration_datetime(request.user)
    can_reverify = False
    if expiration_datetime:
        if SoftwareSecurePhotoVerification.is_verification_expiring_soon(expiration_datetime):
            can_reverify = True
    if ((status in ['none', 'must_reverify', 'expired', 'pending']) or can_reverify):
        context = {'user_full_name': request.user.profile.name, 'platform_name': configuration_helpers.get_value('PLATFORM_NAME', settings.PLATFORM_NAME), 'capture_sound': staticfiles_storage.url('audio/camera_capture.wav')}
        return render_to_response('verify_student/reverify.html', context)
    else:
        context = {'status': status}
        return render_to_response('verify_student/reverify_not_allowed.html', context)
