Files @ b195a34723a2
Branch filter:

Location: symposion_app/pinaxcon/proposals/forms.py - annotation

bsturmfels
Fix homepage links
9b0d83053895
9b0d83053895
04f246d85071
04f246d85071
665415779f8e
246bbcb324aa
be35d21102c7
9b0d83053895
9b0d83053895
9b0d83053895
bfaa7d911538
9b0d83053895
f60e37072525
9b0d83053895
9b0d83053895
827a482d32e0
9b0d83053895
bfaa7d911538
bfaa7d911538
827a482d32e0
f60e37072525
9b0d83053895
9b0d83053895
c56a80514106
9b0d83053895
9b0d83053895
4cf869c9fa74
4cf869c9fa74
4cf869c9fa74
4cf869c9fa74
04f246d85071
04f246d85071
8fa8fc4012a5
c56a80514106
c56a80514106
c56a80514106
8fa8fc4012a5
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
04f246d85071
246bbcb324aa
f72490b1eb01
4c458fd584d3
2cdb554623e5
4c458fd584d3
4c458fd584d3
4c458fd584d3
246bbcb324aa
f72490b1eb01
4cf869c9fa74
4cf869c9fa74
4cf869c9fa74
4cf869c9fa74
4cf869c9fa74
4cf869c9fa74
4cf869c9fa74
4cf869c9fa74
4cf869c9fa74
4cf869c9fa74
4cf869c9fa74
4cf869c9fa74
4cf869c9fa74
4cf869c9fa74
4cf869c9fa74
4cf869c9fa74
4cf869c9fa74
4cf869c9fa74
4cf869c9fa74
4cf869c9fa74
4cf869c9fa74
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
3f6dbc09c1ad
3f6dbc09c1ad
3f6dbc09c1ad
3f6dbc09c1ad
3f6dbc09c1ad
3f6dbc09c1ad
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
827a482d32e0
bf9735eae386
bf9735eae386
bf9735eae386
bf9735eae386
bf9735eae386
bf9735eae386
import copy

from django import forms

from pinaxcon.proposals.fields import HelpTextField
from pinaxcon.proposals import models


DEFAULT_FIELDS =  [
    "title",
    # "primary_topic",
    "target_audience",
    "experience_level",
    "abstract",
    "private_abstract",
    # "content_warning",
    "technical_requirements",
    # "project",
    # "project_url",
    # "video_url",
    "require_approval",
    "recording_release",
    "materials_release",
    "indicate_use_of_proprietary_software",
]

TALK_FORMAT_FIELDS = copy.copy(DEFAULT_FIELDS)
TALK_FORMAT_FIELDS.insert(2, "talk_format")
TALK_FORMAT_FIELDS.append("ticket_acknowledgement")

class ProposalForm(forms.ModelForm):

    required_css_class = 'label-required'
    indicate_use_of_proprietary_software = forms.BooleanField(
        help_text="Attendees at FOSSY need to be able to assume that any software mentioned is FOSS by default. I understand that I must indicate the use of any proprietary software on slides and any physical materials present.")


    def clean_description(self):
        value = self.cleaned_data["description"]
        if len(value) > 400:
            raise forms.ValidationError(
                u"The description must be less than 400 characters"
            )
        return value


class TalkProposalForm(ProposalForm):

    class Meta:
        model = models.TalkProposal
        fields = copy.copy(DEFAULT_FIELDS)


class TutorialProposalForm(ProposalForm):

    class Meta:
        model = models.TutorialProposal
        fields = copy.copy(DEFAULT_FIELDS)


class MiniconfProposalForm(ProposalForm):

    def __init__(self, *a, **k):
        super(MiniconfProposalForm, self).__init__(*a, **k)
        self.fields['ticket_acknowledgement'].required = True


class CopyleftComplianceProposalForm(MiniconfProposalForm):

    class Meta:
        model = models.CopyleftComplianceProposal
        fields = TALK_FORMAT_FIELDS


class MemberProjectProposalForm(MiniconfProposalForm):

    class Meta:
        model = models.MemberProjectProposal
        fields = TALK_FORMAT_FIELDS


class ContainerDaysProposalForm(MiniconfProposalForm):
    class Meta:
        model = models.ContainerDaysProposal
        fields = TALK_FORMAT_FIELDS


class SustainableOpenSourceBusinessProposalForm(MiniconfProposalForm):
    class Meta:
        model = models.SustainableOpenSourceBusinessProposal
        fields = TALK_FORMAT_FIELDS


class SoftwareWorkerCoopsProposalForm(MiniconfProposalForm):
    class Meta:
        model = models.SoftwareWorkerCoopsProposal
        fields = TALK_FORMAT_FIELDS


class DiversityEquityInclusionProposalForm(MiniconfProposalForm):
    class Meta:
        model = models.DiversityEquityInclusionProposal
        fields = TALK_FORMAT_FIELDS


class FOSSAtPlayProposalForm(MiniconfProposalForm):
    class Meta:
        model = models.FOSSAtPlayProposal
        fields = TALK_FORMAT_FIELDS


class OpenSourcAIDataProposalForm(MiniconfProposalForm):
    class Meta:
        model = models.OpenSourcAIDataProposal
        fields = TALK_FORMAT_FIELDS


class OpenWorkProposalForm(MiniconfProposalForm):
    class Meta:
        model = models.OpenWorkProposal
        fields = TALK_FORMAT_FIELDS


class CommunityProposalForm(MiniconfProposalForm):
    class Meta:
        model = models.CommunityProposal
        fields = TALK_FORMAT_FIELDS


class BSDUnixProposalForm(MiniconfProposalForm):
    class Meta:
        model = models.BSDUnixProposal
        fields = TALK_FORMAT_FIELDS


class XMPPProposalForm(MiniconfProposalForm):
    class Meta:
        model = models.XMPPProposal
        fields = TALK_FORMAT_FIELDS


class ScienceOfCommunityProposalForm(MiniconfProposalForm):
    class Meta:
        model = models.ScienceOfCommunityProposal
        fields = TALK_FORMAT_FIELDS


class AArch64ARM64ProposalForm(MiniconfProposalForm):
    class Meta:
        model = models.AArch64ARM64Proposal
        fields = TALK_FORMAT_FIELDS


class FOSSForEducationProposalForm(MiniconfProposalForm):
    class Meta:
        model = models.FOSSForEducationProposal
        fields = TALK_FORMAT_FIELDS


class FOSSInDailyLifeProposalForm(MiniconfProposalForm):
    class Meta:
        model = models.FOSSInDailyLifeProposal
        fields = TALK_FORMAT_FIELDS


class WildCardProposalForm(MiniconfProposalForm):
    class Meta:
        model = models.WildCardProposal
        fields = TALK_FORMAT_FIELDS