from django.contrib.auth import password_validation from django.contrib.auth.forms import UserCreationForm, AuthenticationForm from django import forms from django.contrib.auth.models import User from django.utils.translation import gettext_lazy as _ from crispy_forms.helper import FormHelper from crispy_forms.layout import Submit from users.models import Player from users.validators import usernameValidator, username_change_validator from bloonsa_game.models import Config as BloonsaConfig class UserRegisterForm(UserCreationForm): field_order = ("username", "password1", "password2") def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.helper = FormHelper() self.helper.form_id = 'id-register' self.helper.form_class = 'label' self.helper.form_method = 'post' self.helper.form_action = '/users/register' self.helper.add_input(Submit('submit', 'Create')) username = forms.CharField(min_length=3, max_length=16, label="Username", required=True, validators=[usernameValidator,], help_text=_("3-16 chars, alphanumeric and _- pls")) password1 = forms.CharField( label="Password", required=True, strip=False, widget=forms.PasswordInput(attrs={"autocomplete": "new-password"}), #help_text=password_validation.password_validators_help_text_html(), ) password2 = forms.CharField( #label="Password2", required=True, widget=forms.PasswordInput(attrs={"autocomplete": "new-password"}), strip=False, # help_text=_("yes again"), ) class Meta: model = User fields = [ "username", ] class UserLoginForm(AuthenticationForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.helper = FormHelper() self.helper.form_id = 'id-login' self.helper.form_class = 'label' self.helper.form_method = 'post' self.helper.form_action = '/users/login' self.helper.add_input(Submit('submit', 'Login')) username = forms.CharField(min_length=3, max_length=16, label="Username", required=True) class Meta: model = User fields = [ "username", ] class UserUpdateForm(forms.ModelForm): class Meta: model = User fields = [] class PlayerUpdateForm(forms.ModelForm): bio = forms.CharField(max_length=128, required=False) class Meta: model = Player fields = ["avatar", "bio"] class BloonsaConfigUpdateForm(forms.ModelForm): class Meta: model = BloonsaConfig fields = ["autoplay",]