diff --git a/common/djangoapps/student/views.py b/common/djangoapps/student/views.py index b19833bbed6a6cf5f6ed95768f6f71abc041cb13..bca8ff9d76267d651b6ea30d10e56b21521e562e 100644 --- a/common/djangoapps/student/views.py +++ b/common/djangoapps/student/views.py @@ -517,6 +517,17 @@ def password_reset(request): ''' Attempts to send a password reset e-mail. ''' if request.method != "POST": raise Http404 + + # By default, Django doesn't allow Users with is_active = False to reset their passwords, + # but this bites people who signed up a long time ago, never activated, and forgot their + # password. So for their sake, we'll auto-activate a user for whome password_reset is called. + try: + user = User.objects.get(email=request.POST['email']) + user.is_active = True + user.save() + except: + log.exception("Tried to auto-activate user to enable password reset, but failed.") + form = PasswordResetForm(request.POST) if form.is_valid(): form.save(use_https = request.is_secure(), @@ -541,10 +552,6 @@ def reactivation_email(request): return HttpResponse(json.dumps({'success': False, 'error': 'No inactive user with this e-mail exists'})) - if user.is_active: - return HttpResponse(json.dumps({'success': False, - 'error': 'User is already active'})) - reg = Registration.objects.get(user=user) reg.register(user)