Sith/subscription/forms.py

65 lines
2.3 KiB
Python
Raw Permalink Normal View History

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
2024-11-18 23:41:49 +00:00
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
)
2024-11-18 23:41:49 +00:00
class SubscriptionNewUserForm(forms.Form):
def clean(self):
cleaned_data = super().clean()
if (
2024-11-18 23:41:49 +00:00
"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
2024-11-18 23:41:49 +00:00
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")