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', ] 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: # "{}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 Markdown.""".format(_MARKDOWN_CHEATSHEET_URL) self.fields["abstract"].help_text = """ Detailed abstract. Will be made public if your proposal is accepted. Edit using Markdown.""".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", "extended_presentation", "additional_notes", "extra_av", "slides_release", "recording_release", ]