Ei kuvausta

forms.py 1.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. from __future__ import annotations
  2. from django import forms
  3. class MultiFileInput(forms.ClearableFileInput):
  4. allow_multiple_selected = True
  5. class MultiFileField(forms.Field):
  6. widget = MultiFileInput
  7. def __init__(self, *args, **kwargs):
  8. kwargs.setdefault("required", False)
  9. super().__init__(*args, **kwargs)
  10. def to_python(self, data):
  11. # Accept a list of UploadedFile or an empty list/None
  12. return data
  13. def validate(self, value):
  14. # Only enforce presence if required=True
  15. if self.required and not value:
  16. raise forms.ValidationError("This field is required.")
  17. class PickupRequestForm(forms.Form):
  18. name = forms.CharField(max_length=255)
  19. email = forms.EmailField(required=False)
  20. phone = forms.CharField(max_length=64, required=False)
  21. address = forms.CharField(widget=forms.Textarea)
  22. preferred_at = forms.DateTimeField(required=False, widget=forms.DateTimeInput(attrs={"type": "datetime-local"}))
  23. materials = forms.CharField(label="Materials/Notes", widget=forms.Textarea, required=False)
  24. photos = MultiFileField(widget=MultiFileInput, help_text="Optional: upload photos of scrap")
  25. class ContactForm(forms.Form):
  26. name = forms.CharField(max_length=255)
  27. email = forms.EmailField()
  28. phone = forms.CharField(max_length=64, required=False)
  29. subject = forms.CharField(max_length=255, required=False)
  30. message = forms.CharField(widget=forms.Textarea)