Files @ e58a1891d554
Branch filter:

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

bsturmfels
Add migration for profile change, update CONFERENCE_ID for 2024
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
04f246d85071
04f246d85071
8fa8fc4012a5
c56a80514106
20d7b43efcb1
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
6af1e594ade8
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
354825a85b56
354825a85b56
354825a85b56
354825a85b56
354825a85b56
354825a85b56
bf9735eae386
bf9735eae386
bf9735eae386
bf9735eae386
87987e9ce945
87987e9ce945
87987e9ce945
87987e9ce945
87987e9ce945
87987e9ce945
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")

class ProposalForm(forms.ModelForm):

    required_css_class = 'label-required'
    indicate_use_of_proprietary_software = forms.BooleanField(
        help_text="Attendees expect to see only FOSS presented at all FOSSY talks. I affirm that I will clearly mark any proprietary and/or trade secret software on talk slides, in any printed materially and will verbally indicate any non-FOSS mentioned in my talk.")


    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):
    pass


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 SecurityProposalForm(MiniconfProposalForm):
    class Meta:
        model = models.SecurityProposal
        fields = TALK_FORMAT_FIELDS


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


class RightToRepairProposalForm(MiniconfProposalForm):
    class Meta:
        model = models.RightToRepairProposal
        fields = TALK_FORMAT_FIELDS