Files
@ 4f0871b0322a
Branch filter:
Location: symposion_app/pinaxcon/proposals/forms.py - annotation
4f0871b0322a
2.3 KiB
text/x-python
Update social image
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | 9b0d83053895 9b0d83053895 04f246d85071 04f246d85071 665415779f8e 246bbcb324aa be35d21102c7 9b0d83053895 9b0d83053895 9b0d83053895 f60e37072525 9b0d83053895 f60e37072525 9b0d83053895 9b0d83053895 9b0d83053895 9b0d83053895 9b0d83053895 f72490b1eb01 f60e37072525 9b0d83053895 9b0d83053895 9b0d83053895 9b0d83053895 f72490b1eb01 39b556b7ac4f 04f246d85071 04f246d85071 8fa8fc4012a5 8fa8fc4012a5 04f246d85071 04f246d85071 04f246d85071 04f246d85071 04f246d85071 04f246d85071 04f246d85071 04f246d85071 04f246d85071 04f246d85071 04f246d85071 04f246d85071 246bbcb324aa f72490b1eb01 4c458fd584d3 2cdb554623e5 4c458fd584d3 4c458fd584d3 4c458fd584d3 246bbcb324aa f72490b1eb01 4c458fd584d3 2cdb554623e5 4c458fd584d3 4c458fd584d3 4c458fd584d3 246bbcb324aa 4c458fd584d3 4c458fd584d3 4c458fd584d3 4c458fd584d3 4c458fd584d3 10b6358b9271 10b6358b9271 4c458fd584d3 246bbcb324aa f72490b1eb01 38aebda92e5f 38aebda92e5f f60e37072525 f60e37072525 f60e37072525 f60e37072525 f60e37072525 f60e37072525 f60e37072525 f60e37072525 f60e37072525 f60e37072525 f60e37072525 f60e37072525 f60e37072525 f60e37072525 f60e37072525 f60e37072525 f60e37072525 f60e37072525 f60e37072525 f60e37072525 f60e37072525 38aebda92e5f 38aebda92e5f f60e37072525 f60e37072525 f60e37072525 f60e37072525 f60e37072525 f60e37072525 f60e37072525 f60e37072525 f60e37072525 f60e37072525 f60e37072525 f60e37072525 f60e37072525 | 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",
"technical_requirements",
"project",
"project_url",
"video_url",
"require_approval",
"recording_release",
"materials_release",
]
MINICONF_SESSION_FORMAT_FIELDS = copy.copy(DEFAULT_FIELDS)
class ProposalForm(forms.ModelForm):
required_css_class = 'label-required'
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):
class Meta:
model = models.MiniconfProposal
fields = [
"title",
"abstract",
"private_abstract",
"technical_requirements",
"recording_release",
"materials_release",
]
### LCA2022 Miniconfs
class MiniconfSessionProposalForm(ProposalForm):
pass
class GlamCommunityProposalForm(MiniconfSessionProposalForm):
class Meta:
model = models.GlamCommunityProposal
fields = MINICONF_SESSION_FORMAT_FIELDS
class KernelProposalForm(MiniconfSessionProposalForm):
class Meta:
model = models.KernelProposal
fields = MINICONF_SESSION_FORMAT_FIELDS
HARDWARE_FIELDS = copy.copy(MINICONF_SESSION_FORMAT_FIELDS)
HARDWARE_FIELDS.insert(4, "talk_format")
class OpenHardwareProposalForm(MiniconfSessionProposalForm):
def __init__(self, *a, **k):
super(OpenHardwareProposalForm, self).__init__(*a, **k)
self.fields['talk_format'].required = True
class Meta:
model = models.OpenHardwareProposal
fields = HARDWARE_FIELDS
class SysAdminProposalForm(MiniconfSessionProposalForm):
class Meta:
model = models.SysAdminProposal
fields = MINICONF_SESSION_FORMAT_FIELDS
|