diff --git a/pinaxcon/urls.py b/pinaxcon/urls.py index d0c192300ec45330bcec7aed0964e24cd81ff2c9..ec121e6e8d38c58e9f7f25426c30e0456492867a 100644 --- a/pinaxcon/urls.py +++ b/pinaxcon/urls.py @@ -1,6 +1,9 @@ +from account.forms import LoginUsernameForm +from account.views import LoginView import debug_toolbar from django.conf import settings from django.conf.urls.static import static +from django.core.exceptions import ValidationError from django.views.generic import RedirectView from django.views.generic import TemplateView from django.urls import include, path @@ -11,6 +14,22 @@ from django.contrib import admin import symposion.views +class CustomLoginForm(LoginUsernameForm): + def clean(self): + # To use account.forms.LoginEmailForm, we need to enforce unique + # emails. Since we probably already have duplicate emails in the system, + # we'll defer that to next year. + try: + super().clean() + except ValidationError as e: + if '@' in self.cleaned_data['username']: + raise ValidationError( + f'{e.message} Please login with your username, rather than your email.' + ) + else: + raise + + urlpatterns = [ # Trialling homepage via flatpages. # path('', TemplateView.as_view(template_name="homepage.html")), @@ -27,6 +46,7 @@ urlpatterns = [ path("teams/", include("symposion.teams.urls")), path('raffle/', include("pinaxcon.raffle.urls")), + path("account/login/", LoginView.as_view(form_class=CustomLoginForm, template_name='account/login.html'), name="account_login"), path("account/", include("account.urls")), # Required by registrasion