Files @ 7fac10241ec7
Branch filter:

Location: symposion_app/vendor/symposion/proposals/forms.py

Joel Addison
Improve attendee reports

Display attendee profile data in normal table without DataTables so
sorting is not applied, causing data to be confusing to read.
Include item quantity in attendee data report for accurate schwag packing.
from django import forms
from django.db.models import Q
from django.utils.translation import ugettext_lazy as _

from symposion.proposals.models import SupportingDocument


# @@@ generic proposal form


class AddSpeakerForm(forms.Form):

    required_css_class = 'label-required'

    email = forms.EmailField(
        label=_("Email address of new speaker (use their email address, not yours)")
    )

    def __init__(self, *args, **kwargs):
        self.proposal = kwargs.pop("proposal")
        super(AddSpeakerForm, self).__init__(*args, **kwargs)

    def clean_email(self):
        value = self.cleaned_data["email"]
        exists = self.proposal.additional_speakers.filter(
            Q(user=None, invite_email=value) |
            Q(user__email=value)
        ).exists()
        if exists:
            raise forms.ValidationError(
                _("This email address has already been invited to your talk proposal")
            )
        return value


class SupportingDocumentCreateForm(forms.ModelForm):

    required_css_class = 'label-required'

    class Meta:
        model = SupportingDocument
        fields = [
            "file",
            "description",
        ]