Free and open source ticket system written in python
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Add username validation to registration forms

+18 -8
+15 -5
core/forms.py
··· 1 1 from django import forms 2 2 from django.conf import settings 3 3 from .models import PawUser 4 - 4 + from django.utils.translation import gettext_lazy as _ 5 5 6 6 class UserChangeForm(forms.Form): 7 7 email = forms.EmailField(required=True, widget=forms.EmailInput( ··· 20 20 fields = ('email', 'profile_picture', 21 21 'language', 'telegram_username', 'use_darkmode') 22 22 23 + USERNAME_REGEX_FIELD = forms.RegexField( 24 + required=True, 25 + label='Username', 26 + max_length=50, 27 + regex=r'^[a-zA-Z0-9-_@]+$', 28 + error_messages={ 29 + 'required': _('Please enter your name'), 30 + 'invalid': _('Alphanumeric characters and underscores and dashes only (a-z, 0-9, _, -, @)') 31 + }, 32 + widget=forms.TextInput( 33 + attrs={'placeholder': _('Username'), 'class': 'input input-bordered w-full'}), 34 + ) 23 35 24 36 class RegisterForm(forms.Form): 25 - username = forms.CharField(required=True, widget=forms.TextInput( 26 - attrs={'class': 'input input-bordered w-full'})) 37 + username = USERNAME_REGEX_FIELD 27 38 email = forms.EmailField(required=True, widget=forms.EmailInput( 28 39 attrs={'class': 'input input-bordered w-full'})) 29 40 password = forms.CharField(required=True, widget=forms.PasswordInput( ··· 61 72 62 73 63 74 class AccountFinishForm(forms.Form): 64 - username = forms.CharField(required=True, widget=forms.TextInput( 65 - attrs={'class': 'input input-bordered w-full'})) 75 + username = USERNAME_REGEX_FIELD 66 76 67 77 class Meta: 68 78 model = PawUser
+3 -3
core/views.py
··· 89 89 except Exception: 90 90 return redirect("login") 91 91 92 - user, created = PawUser.objects.get_or_create(email=user_info["email"]) 92 + user, created = PawUser.objects.get_or_create(email=user_info["email"], username=user_info["email"]) 93 93 94 94 if created: 95 - GoogleSSOUser.objects.create(user=user, google_id=user_info["id"]) 95 + GoogleSSOUser.objects.create(paw_user=user, google_id=user_info["id"]) 96 96 97 97 login(request, user) 98 - if created or not user.username: 98 + if created or user.username == user.email: 99 99 form = AccountFinishForm() 100 100 return render(request, "core/account_finish.html", {"form": form}) 101 101