Merge pull request #18 from lca2017/chrisjrn/017-cfp-models-and-forms

CFP models and forms
This commit is contained in:
Scott Bragg 2016-06-21 09:57:56 +10:00 committed by GitHub
commit f56ce51459
3 changed files with 100 additions and 23 deletions

View file

@ -86,28 +86,56 @@ class ProposalBase(models.Model):
kind = models.ForeignKey(ProposalKind, verbose_name=_("Kind"))
title = models.CharField(max_length=100, verbose_name=_("Title"))
description = models.TextField(
_("Brief Description"),
max_length=400, # @@@ need to enforce 400 in UI
help_text=_("If your proposal is accepted this will be made public and printed in the "
"program. Should be one paragraph, maximum 400 characters.")
)
abstract = models.TextField(
_("Detailed Abstract"),
help_text=_("Detailed outline. Will be made public if your proposal is accepted. Edit "
"using <a href='http://daringfireball.net/projects/markdown/basics' "
"target='_blank'>Markdown</a>.")
_("Abstract"),
help_text=_("This will appear in the conference programme. Up to about "
"500 words. Edit using <a "
"href='http://daringfireball.net/projects/markdown/basics' " "target='_blank'>Markdown</a>.")
)
abstract_html = models.TextField(blank=True)
additional_notes = models.TextField(
_("Addtional Notes"),
blank=True,
help_text=_("Anything else you'd like the program committee to know when making their "
"selection: your past experience, etc. This is not made public. Edit using "
"<a href='http://daringfireball.net/projects/markdown/basics' "
private_abstract = models.TextField(
_("Private Abstract"),
help_text=_("This will only be shown to organisers and reviewers. You "
"should provide any details about your proposal that you "
"don't want to be public here. Edit using <a " "href='http://daringfireball.net/projects/markdown/basics' "
"target='_blank'>Markdown</a>.")
)
additional_notes_html = models.TextField(blank=True)
private_abstract_html = models.TextField(blank=True)
technical_requirements = models.TextField(
_("Special Requirements"),
blank=True,
help_text=_("Speakers will be provided with: Internet access, power, "
"projector, audio. If you require anything in addition, "
"please list your technical requirements here. Such as: a "
"static IP address, A/V equipment or will be demonstrating "
"security-related techniques on the conference network. "
"Edit using <a "
"href='http://daringfireball.net/projects/markdown/basics' "
"target='_blank'>Markdown</a>.")
)
technical_requirements_html = models.TextField(blank=True)
project = models.CharField(
max_length=100,
blank=True,
help_text=_("The name of the project you will be talking about."),
)
project_url = models.URLField(
_("Project URL"),
blank=True,
help_text=_("If your project has a webpage, specify the URL here so "
"the committee can find out more about your proposal.")
)
video_url = models.URLField(
_("Video"),
blank=True,
help_text=_("You may optionally provide us with a link to a video of "
"you speaking at another event, or of a short 'elevator "
"pitch' of your proposed talk.")
)
submitted = models.DateTimeField(
default=now,
editable=False,
@ -130,7 +158,8 @@ class ProposalBase(models.Model):
def save(self, *args, **kwargs):
self.abstract_html = parse(self.abstract)
self.additional_notes_html = parse(self.additional_notes)
self.private_abstract_html = parse(self.private_abstract)
self.technical_requirements_html = parse(self.technical_requirements)
return super(ProposalBase, self).save(*args, **kwargs)
def can_edit(self):

View file

@ -11,13 +11,21 @@ class SpeakerForm(forms.ModelForm):
fields = [
"name",
"biography",
"experience",
"photo",
"telephone",
"homepage",
"twitter_username",
"accessibility",
"travel_assistance",
"accommodation_assistance",
"agreement",
]
def __init__(self, *a, **k):
super(SpeakerForm, self).__init__(*a, **k)
self.fields['agreement'].required = True
def clean_twitter_username(self):
value = self.cleaned_data["twitter_username"]
if value.startswith("@"):

View file

@ -24,12 +24,40 @@ class Speaker(models.Model):
name = models.CharField(verbose_name=_("Name"), max_length=100,
help_text=_("As you would like it to appear in the"
" conference program."))
biography = models.TextField(blank=True, help_text=_("A little bit about you. Edit using "
"<a href='http://warpedvisions.org/projects/"
"markdown-cheat-sheet/target='_blank'>"
"Markdown</a>."), verbose_name=_("Biography"))
biography = models.TextField(
blank=True,
help_text=_("This will appear on the conference website and in the "
"programme. Please write in the third person, eg 'Alice "
"is a Moblin hacker...', 150-200 words. Edit using "
"<a href='http://warpedvisions.org/projects/"
"markdown-cheat-sheet/target='_blank'>"
"Markdown</a>."),
verbose_name=_("Biography"),
)
biography_html = models.TextField(blank=True)
experience = models.TextField(
blank=True,
help_text=_("Have you had any experience presenting elsewhere? If so, "
"we'd like to know. Anything you put here will only be "
"seen by the organisers and reviewers; use it to convince "
"them why they should accept your proposal. Edit using "
"<a href='http://warpedvisions.org/projects/"
"markdown-cheat-sheet/target='_blank'>"
"Markdown</a>."),
verbose_name=_("Speaking experience"),
)
experience_html = models.TextField(blank=True)
photo = models.ImageField(upload_to="speaker_photos", blank=True, verbose_name=_("Photo"))
telephone = models.CharField(
max_length=15,
help_text=_(u"The conference team will need this to contact you "
"during the conference week. If you don't have one, or do "
"not wish to provide it, then enter NONE in this field.")
)
homepage = models.URLField(
blank=True,
help_text=_(u"Your home page, if you have one")
)
twitter_username = models.CharField(
max_length=15,
blank=True,
@ -37,8 +65,12 @@ class Speaker(models.Model):
)
accessibility = models.TextField(
blank=True,
help_text=_("Please describe any special accessibility requirements that you may have."),
help_text=_("Please describe any special accessibility requirements "
"that you may have. Edit using "
"<a href='http://warpedvisions.org/projects/"
"markdown-cheat-sheet/target='_blank'>Markdown</a>."),
verbose_name=_("Accessibility requirements"))
accessibility_html = models.TextField(blank=True)
travel_assistance = models.BooleanField(
blank=True,
default=False,
@ -53,6 +85,12 @@ class Speaker(models.Model):
"accommodation in order to present your proposed sessions."),
verbose_name=_("Accommodation assistance required"),
)
agreement = models.BooleanField(
default=False,
help_text=_("I agree to the terms and confitions of attendance, and "
"I have read, understood, and agree to act according to "
"the standards set forth in our Code of Conduct ")
)
annotation = models.TextField(verbose_name=_("Annotation")) # staff only
invite_email = models.CharField(max_length=200, unique=True, null=True, db_index=True, verbose_name=_("Invite_email"))
@ -70,6 +108,8 @@ class Speaker(models.Model):
def save(self, *args, **kwargs):
self.biography_html = parse(self.biography)
self.experience_html = parse(self.experience)
self.accessibility_html = parse(self.accessibility)
return super(Speaker, self).save(*args, **kwargs)
def __str__(self):