import logging

from django.http import HttpResponse, HttpResponseNotFound, HttpResponseRedirect
from django.contrib.auth import get_user_model
from django.urls import reverse

from .models import LoginAttemptLogger
from . import middleware


logger = logging.getLogger("django.security")

login_attempt_logger = LoginAttemptLogger()


def test_request_available(request):
    thread_request = middleware.get_request()
    if thread_request == request:
        return HttpResponse('OK')
    return HttpResponseNotFound()


def reactivate_user(request, user_id):
    user = _get_user(user_id)
    user.is_active = True
    user.save()
    login_attempt_logger.reset(user.username)
    return HttpResponseRedirect(reverse("admin:useraudit_loginattempt_changelist"))


def _get_user(user_id):
    UserModel = get_user_model()
    try:
        return UserModel.objects.get(id=user_id)
    except UserModel.DoesNotExist:
        logger.warning("User model for user_id %d not found" % user_id)
        return None