48 lines
1.8 KiB
Python
48 lines
1.8 KiB
Python
from django import forms
|
|
from django.utils import timezone
|
|
|
|
from .models import ConsultationRequest
|
|
|
|
|
|
class ConsultationRequestForm(forms.ModelForm):
|
|
class Meta:
|
|
model = ConsultationRequest
|
|
fields = (
|
|
"name",
|
|
"phone",
|
|
"contact",
|
|
"subject",
|
|
"exam",
|
|
"preferred_date",
|
|
"preferred_time",
|
|
"comment",
|
|
)
|
|
widgets = {
|
|
"name": forms.TextInput(attrs={"placeholder": "Как к вам обращаться"}),
|
|
"phone": forms.TelInput(attrs={"placeholder": "+7 (999) 123-45-67"}),
|
|
"contact": forms.TextInput(attrs={"placeholder": "@username, WhatsApp и т. п."}),
|
|
"preferred_date": forms.DateInput(attrs={"type": "date"}),
|
|
"preferred_time": forms.TimeInput(attrs={"type": "time"}),
|
|
"comment": forms.Textarea(
|
|
attrs={
|
|
"placeholder": "Например: текущий класс, темы, которые вызывают сложности",
|
|
"rows": 4,
|
|
}
|
|
),
|
|
}
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
super().__init__(*args, **kwargs)
|
|
for field in self.fields.values():
|
|
field.widget.attrs["class"] = "form-control"
|
|
self.fields["preferred_date"].widget.attrs["min"] = timezone.localdate().isoformat()
|
|
self.fields["contact"].required = False
|
|
self.fields["comment"].required = False
|
|
|
|
def clean_preferred_date(self):
|
|
preferred_date = self.cleaned_data["preferred_date"]
|
|
if preferred_date < timezone.localdate():
|
|
raise forms.ValidationError("Выберите сегодняшнюю дату или более позднюю.")
|
|
return preferred_date
|
|
|