Files
@ dadee611a059
Branch filter:
Location: copyleftconf-website-fork/pinaxcon/proposals/forms.py - annotation
dadee611a059
2.9 KiB
text/x-python
css: Navbar hover color is a function of the primary color.
04f246d85071 2ad649da3033 04f246d85071 1de0a5d46ab9 1de0a5d46ab9 6531b0e781d4 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 0107b24b37d6 e472ddff2c42 e472ddff2c42 e472ddff2c42 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 6531b0e781d4 6531b0e781d4 6531b0e781d4 6531b0e781d4 6531b0e781d4 6531b0e781d4 6531b0e781d4 6531b0e781d4 6531b0e781d4 6531b0e781d4 1de0a5d46ab9 04f246d85071 04f246d85071 2ad649da3033 2ad649da3033 2ad649da3033 2ad649da3033 2ad649da3033 2ad649da3033 6531b0e781d4 6531b0e781d4 6531b0e781d4 6531b0e781d4 6531b0e781d4 6531b0e781d4 6531b0e781d4 6531b0e781d4 b39136615cff 319466454c9d 319466454c9d 319466454c9d 319466454c9d 319466454c9d 04f246d85071 04f246d85071 04f246d85071 04f246d85071 04f246d85071 04f246d85071 04f246d85071 04f246d85071 04f246d85071 04f246d85071 04f246d85071 04f246d85071 04f246d85071 04f246d85071 04f246d85071 04f246d85071 04f246d85071 04f246d85071 2ad649da3033 04f246d85071 2ad649da3033 2ad649da3033 04f246d85071 04f246d85071 | from django import forms
from symposion.proposals.forms import ProposalMixIn
from .models import ConferenceSpeaker, TalkProposal
_MARKDOWN_CHEATSHEET_URL = 'https://www.markdownguide.org/cheat-sheet'
class ConferenceSpeakerForm(forms.ModelForm):
class Meta:
model = ConferenceSpeaker
exclude = [
'user',
'biography_html',
'experience_html',
'invite_email',
'invite_token',
'annotation',
'reviewer',
# Not happening for CopyleftConf 2019.
'travel_assistance',
'lodging_assistance',
]
def __init__(self, *a, **k):
super(ConferenceSpeakerForm, self).__init__(*a, **k)
self.fields['code_of_conduct'].required = True
for field in ('biography', 'experience'):
self.fields[field].help_text = self.fields[field].help_text.replace(
'http://warpedvisions.org/projects/markdown-cheat-sheet/',
_MARKDOWN_CHEATSHEET_URL,
).replace(
# Fix a typo in Symposion model help text:
# <https://github.com/pinax/symposion/blob/8cb001b16946e2d98e8e45b59c2b506e51b52937/symposion/speakers/models.py#L28-L29>
"{}target=".format(_MARKDOWN_CHEATSHEET_URL),
"{}' target=".format(_MARKDOWN_CHEATSHEET_URL),
)
class ProposalForm(forms.ModelForm, ProposalMixIn):
def __init__(self, *a, **k):
super(ProposalForm, self).__init__(*a, **k)
self.description_required()
self.abstract_required()
self.fields["additional_notes"].help_text = """
Anything else you'd like the program committee to know when making their
selection. This is not made public. Edit using
<a href='{}' target='_blank'>Markdown</a>.""".format(_MARKDOWN_CHEATSHEET_URL)
self.fields["abstract"].help_text = """
Detailed abstract. Will be made public if your proposal is accepted.
Edit using
<a href='{}' target='_blank'>Markdown</a>.""".format(_MARKDOWN_CHEATSHEET_URL)
for field in ("description", "abstract", "additional_notes"):
self.fields[field].help_text += (" Please do not include "
"any information that could identify you, as your proposal "
"will be reviewed anonymously.")
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 = TalkProposal
fields = [
"title",
"description",
"abstract",
"new_presentation",
"additional_notes",
"extra_av",
"slides_release",
"recording_release",
]
|