from django import forms
from .models import ContactMessage


class ContactForm(forms.ModelForm):
    class Meta:
        model = ContactMessage
        fields = ['name', 'email', 'purpose', 'message', 'attachment']
        widgets = {
            'name': forms.TextInput(attrs={
                'placeholder': 'Your full name',
                'id': 'contact-name',
                'autocomplete': 'name',
            }),
            'email': forms.EmailInput(attrs={
                'placeholder': 'your.email@example.com',
                'id': 'contact-email',
                'autocomplete': 'email',
            }),
            'purpose': forms.Select(attrs={
                'id': 'contact-purpose',
            }),
            'message': forms.Textarea(attrs={
                'placeholder': 'Write your message here...',
                'id': 'contact-message',
                'rows': 6,
            }),
            'attachment': forms.ClearableFileInput(attrs={
                'id': 'contact-attachment',
                'accept': '.pdf,.doc,.docx,.txt,.jpg,.jpeg,.png,.gif,.webp',
            }),
        }
        labels = {
            'name': 'Full Name',
            'email': 'Email Address',
            'purpose': 'Purpose of Contact',
            'message': 'Your Message',
            'attachment': 'Attachment (Optional)',
        }

    def clean_attachment(self):
        attachment = self.cleaned_data.get('attachment')
        if attachment:
            # Limit file size to 10MB
            if attachment.size > 10 * 1024 * 1024:
                raise forms.ValidationError("File size must be under 10MB.")
        return attachment
