From 0ce99678c3e871fe8812d3ede6c64a15d8d480f4 Mon Sep 17 00:00:00 2001 From: Christopher Neugebauer Date: Sun, 19 Jun 2016 12:39:28 +1000 Subject: [PATCH 1/5] Updates ProposalBase to include information that LCA typically asks for --- symposion/proposals/models.py | 69 ++++++++++++++++++++++++++--------- 1 file changed, 51 insertions(+), 18 deletions(-) diff --git a/symposion/proposals/models.py b/symposion/proposals/models.py index 23f65608..34bd7f64 100644 --- a/symposion/proposals/models.py +++ b/symposion/proposals/models.py @@ -86,28 +86,60 @@ 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. You will " + "have an opportunity to update it once the proposal is " + "accepted, but it should reasonably reflect what you will " + "be presenting, and in any case it will appear as-is on " + "the website in the draft programme. Up to about 500 " + "words. Edit using Markdown.") ) 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 " - "Markdown.") ) - 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 Markdown.") + ) + technical_requirements_html = models.TextField(blank=True) + + project = models.TextField( + 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 +162,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): From aa56ac00c36aba92fe143e979d1e4f4529acddac Mon Sep 17 00:00:00 2001 From: Christopher Neugebauer Date: Sun, 19 Jun 2016 13:19:32 +1000 Subject: [PATCH 2/5] Updates speaker model to include information that LCA typically asks for --- symposion/speakers/forms.py | 3 +++ symposion/speakers/models.py | 43 +++++++++++++++++++++++++++++++----- 2 files changed, 41 insertions(+), 5 deletions(-) diff --git a/symposion/speakers/forms.py b/symposion/speakers/forms.py index 122b064c..a1c547b2 100644 --- a/symposion/speakers/forms.py +++ b/symposion/speakers/forms.py @@ -11,7 +11,10 @@ class SpeakerForm(forms.ModelForm): fields = [ "name", "biography", + "experience", "photo", + "telephone", + "homepage", "twitter_username", "accessibility", "travel_assistance", diff --git a/symposion/speakers/models.py b/symposion/speakers/models.py index a3542e8a..30d6490e 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, @@ -70,6 +102,7 @@ class Speaker(models.Model): def save(self, *args, **kwargs): self.biography_html = parse(self.biography) + self.experience_html = parse(self.experience) return super(Speaker, self).save(*args, **kwargs) def __str__(self): From 782e5c9ea21d90cba7693bbf38dec5e2956b3d4e Mon Sep 17 00:00:00 2001 From: Christopher Neugebauer Date: Sun, 19 Jun 2016 13:30:10 +1000 Subject: [PATCH 3/5] Tidies up some of the proposal fields --- symposion/proposals/models.py | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/symposion/proposals/models.py b/symposion/proposals/models.py index 34bd7f64..0a45b9d8 100644 --- a/symposion/proposals/models.py +++ b/symposion/proposals/models.py @@ -88,12 +88,8 @@ class ProposalBase(models.Model): title = models.CharField(max_length=100, verbose_name=_("Title")) abstract = models.TextField( _("Abstract"), - help_text=_("This will appear in the conference programme. You will " - "have an opportunity to update it once the proposal is " - "accepted, but it should reasonably reflect what you will " - "be presenting, and in any case it will appear as-is on " - "the website in the draft programme. Up to about 500 " - "words. Edit using Markdown.") ) abstract_html = models.TextField(blank=True) @@ -121,7 +117,7 @@ class ProposalBase(models.Model): ) technical_requirements_html = models.TextField(blank=True) - project = models.TextField( + project = models.CharField( max_length=100, blank=True, help_text=_("The name of the project you will be talking about."), From c0e9b90476d31651819d7955fe6d7433dc75f0f5 Mon Sep 17 00:00:00 2001 From: Christopher Neugebauer Date: Sun, 19 Jun 2016 14:00:17 +1000 Subject: [PATCH 4/5] Requires acceptance of the code of conduct and T&Cs --- symposion/speakers/forms.py | 5 +++++ symposion/speakers/models.py | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/symposion/speakers/forms.py b/symposion/speakers/forms.py index a1c547b2..d4643415 100644 --- a/symposion/speakers/forms.py +++ b/symposion/speakers/forms.py @@ -19,8 +19,13 @@ class SpeakerForm(forms.ModelForm): "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 30d6490e..a9b50163 100644 --- a/symposion/speakers/models.py +++ b/symposion/speakers/models.py @@ -85,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")) From 388c722ed631dc4e4fbbe04989f9a5af4cfa10f2 Mon Sep 17 00:00:00 2001 From: Christopher Neugebauer Date: Sun, 19 Jun 2016 14:07:43 +1000 Subject: [PATCH 5/5] Makes sure accessibility requirements are parsed --- symposion/speakers/models.py | 1 + 1 file changed, 1 insertion(+) diff --git a/symposion/speakers/models.py b/symposion/speakers/models.py index a9b50163..1e94693b 100644 --- a/symposion/speakers/models.py +++ b/symposion/speakers/models.py @@ -109,6 +109,7 @@ 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):