from django import forms
from ..models import Event, Proposal, Speaker, SessionType

class ProposalForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        self.cfp = kwargs.pop('cfp', None)
        self.user = kwargs.pop('user', None)
        super().__init__(*args, **kwargs)
        
        # Add Bootstrap classes and placeholders
        self.fields['title'].widget.attrs.update({
            'class': 'form-control',
            'placeholder': 'Enter a descriptive title for your proposal'
        })
        self.fields['organisation'].widget.attrs.update({
            'class': 'form-control',
            'placeholder': 'Your organization or company name'
        })
        self.fields['contact_number'].widget.attrs.update({
            'class': 'form-control',
            'placeholder': 'Your contact phone number'
        })
        self.fields['abstract'].widget.attrs.update({
            'class': 'form-control',
            'placeholder': 'Provide a clear and concise description of your presentation'
        })
        self.fields['sub_theme'].widget.attrs.update({
            'class': 'form-control',
            'placeholder': 'Optional sub-theme for your proposal'
        })
        self.fields['session_type'].widget.attrs.update({
            'class': 'form-select'
        })
        self.fields['learning_objectives'].widget.attrs.update({
            'class': 'form-control',
            'placeholder': 'What attendees will learn from your session'
        })
        self.fields['sponsorship'].widget.attrs.update({
            'class': 'form-check-input'
        })
        self.fields['additional_notes'].widget.attrs.update({
            'class': 'form-control',
            'placeholder': 'Any additional information you\'d like to share with the reviewers'
        })
        self.fields['supporting_document'].widget.attrs.update({
            'class': 'form-control',
            'accept': '.pdf'
        })

    def save(self, commit=True):
        proposal = super().save(commit=False)
        if self.cfp:
            proposal.cfp = self.cfp
        if self.user:
            proposal.submitter = self.user
        if commit:
            proposal.save()
        return proposal

    class Meta:
        model = Proposal
        fields = (
            'title',
            'organisation',
            'contact_number',
            'abstract',
            'sub_theme',
            'session_type',
            'learning_objectives',
            'sponsorship',
            'supporting_document',
            'additional_notes'
        )
        widgets = {
            'title': forms.TextInput(attrs={
                'class': 'form-control',
                'placeholder': 'Enter a descriptive title for your proposal'
            }),
            'organisation': forms.TextInput(attrs={
                'class': 'form-control',
                'placeholder': 'Your organization or company name'
            }),
            'contact_number': forms.TextInput(attrs={
                'class': 'form-control',
                'placeholder': 'Your contact phone number'
            }),
            'abstract': forms.Textarea(attrs={
                'rows': 5,
                'class': 'form-control',
                'placeholder': 'Provide a clear and concise description of your presentation'
            }),
            'sub_theme': forms.TextInput(attrs={
                'class': 'form-control',
                'placeholder': 'Optional sub-theme for your proposal'
            }),
            'session_type': forms.Select(attrs={
                'class': 'form-select'
            }),
            'learning_objectives': forms.Textarea(attrs={
                'rows': 4,
                'class': 'form-control',
                'placeholder': 'What attendees will learn from your session'
            }),
            'sponsorship': forms.RadioSelect(attrs={
                'class': 'form-check-input'
            }),
            'additional_notes': forms.Textarea(attrs={
                'rows': 3,
                'class': 'form-control',
                'placeholder': 'Any additional information you\'d like to share with the reviewers'
            }),
            'supporting_document': forms.FileInput(attrs={
                'class': 'form-control',
                'accept': '.pdf'
            })
        }

class SpeakerForm(forms.ModelForm):
    class Meta:
        model = Speaker
        fields = ('name', 'bio', 'photo', 'organization', 'website', 'social_media')
        widgets = {
            'name': forms.TextInput(attrs={
                'class': 'form-control',
                'placeholder': 'Speaker\'s full name'
            }),
            'bio': forms.Textarea(attrs={
                'class': 'form-control',
                'rows': 4,
                'placeholder': 'Speaker\'s biography and expertise'
            }),
            'photo': forms.FileInput(attrs={
                'class': 'form-control',
                'accept': 'image/*'
            }),
            'organization': forms.TextInput(attrs={
                'class': 'form-control',
                'placeholder': 'Speaker\'s organization or company'
            }),
            'website': forms.URLInput(attrs={
                'class': 'form-control',
                'placeholder': 'https://example.com'
            }),
            'social_media': forms.TextInput(attrs={
                'class': 'form-control',
                'placeholder': 'JSON format: {"twitter": "@username", "linkedin": "https://..."}'
            })
        }
