diff --git a/symposion/proposals/models.py b/symposion/proposals/models.py
index 23f6560891a6c8c94aa90b7612c4b6ef4afea210..0a45b9d8accc52fec0244a4bd93cfa4750f53d23 100644
--- a/symposion/proposals/models.py
+++ b/symposion/proposals/models.py
@@ -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 Markdown.")
+ _("Abstract"),
+ help_text=_("This will appear in the conference programme. Up to about "
+ "500 words. Edit using Markdown.")
)
abstract_html = models.TextField(blank=True)
- additional_notes = models.TextField(
- _("Addtional Notes"),
+
+ 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 Markdown.")
+ )
+ private_abstract_html = models.TextField(blank=True)
+
+ technical_requirements = models.TextField(
+ _("Special Requirements"),
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 "
- "Markdown.")
)
- additional_notes_html = models.TextField(blank=True)
+ 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):
diff --git a/symposion/speakers/forms.py b/symposion/speakers/forms.py
index 122b064c7dedc075acbceabf69f08a747a35458d..d46434158dbeac7705187c7e2a1aba2e6eaeea9d 100644
--- a/symposion/speakers/forms.py
+++ b/symposion/speakers/forms.py
@@ -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("@"):
diff --git a/symposion/speakers/models.py b/symposion/speakers/models.py
index a3542e8ad5a0118373d8918b01729b0645b4bcfc..1e94693b1ca28d030de05241ad96a4e76d7f102f 100644
--- a/symposion/speakers/models.py
+++ b/symposion/speakers/models.py
@@ -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 "
- ""
- "Markdown."), 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 "
+ ""
+ "Markdown."),
+ 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 "
+ ""
+ "Markdown."),
+ 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 "
+ "Markdown."),
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):