import random from django import forms from django.core.exceptions import ValidationError from django.utils.translation import gettext_lazy as _ from core.models import User from core.views.forms import SelectDateTime from core.views.widgets.select import AutoCompleteSelectUser from subscription.models import Subscription class SelectionDateForm(forms.Form): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.fields["start_date"] = forms.DateTimeField( label=_("Start date"), widget=SelectDateTime, required=True ) self.fields["end_date"] = forms.DateTimeField( label=_("End date"), widget=SelectDateTime, required=True ) class SubscriptionNewUserForm(forms.Form): def clean(self): cleaned_data = super().clean() if ( "last_name" not in self.errors.as_data() and "first_name" not in self.errors.as_data() and "email" not in self.errors.as_data() and "date_of_birth" not in self.errors.as_data() ): if self.errors: return cleaned_data if User.objects.filter(email=cleaned_data.get("email")).first() is not None: self.add_error( "email", ValidationError(_("A user with that email address already exists")), ) else: u = User( last_name=self.cleaned_data.get("last_name"), first_name=self.cleaned_data.get("first_name"), email=self.cleaned_data.get("email"), date_of_birth=self.cleaned_data.get("date_of_birth"), ) u.generate_username() u.set_password(str(random.randrange(1000000, 10000000))) u.save() cleaned_data["member"] = u class SubscriptionForm(forms.ModelForm): """Form to add a subscription to an existing user.""" template_name = "subscription/fragments/existing_user_form.html" class Meta: model = Subscription fields = ["member", "subscription_type", "payment_method", "location"] widgets = {"member": AutoCompleteSelectUser} def clean_subscription_type(self): raise ValidationError("ptdr non")