from django.contrib.auth import authenticate, login, logout from django.contrib.auth.decorators import login_required from django.contrib import messages from django.http import HttpResponseRedirect from django.urls import reverse from core.custom_annotations import in_groups __all__ = ('user_login', 'user_logout') def is_disabled(user): if in_groups(user, ('Students',)): if not user.student.has_logged_in: user.student.disable() return False else: return True return False def user_login(request): if request.method == 'POST': username = request.POST['username'] password = request.POST['password'] user = authenticate(username=username, password=password) if user is not None: if user.is_active and not is_disabled(user): login(request, user) return HttpResponseRedirect(reverse('start')) else: messages.warning(request, "Your Grady account is disabled.") return HttpResponseRedirect(reverse('index')) else: # Bad login details were provided. So we can't log the user in. print("Invalid login details: {0}, {1}".format(username, password)) messages.error(request, "Invalid login details supplied.") return HttpResponseRedirect(reverse('index')) else: return HttpResponseRedirect(reverse('index')) @login_required(login_url='/') def user_logout(request): logout(request) return HttpResponseRedirect(reverse('index'))