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):