From 1af78e6ff75ec900a135e02500922ce9699c8eda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=AD=C3=B0ir=20Valberg=20Gu=C3=B0mundsson?= Date: Sat, 18 Aug 2018 14:11:30 +0200 Subject: [PATCH] Add email to SpeakerProposal and Speaker models. --- .../templates/manage_proposals.html | 2 +- src/program/forms.py | 2 +- .../migrations/0065_speakerproposal_email.py | 18 ++++++++++++++++++ src/program/migrations/0066_speaker_email.py | 18 ++++++++++++++++++ src/program/models.py | 19 +++++++++++++++++++ src/program/views.py | 6 ++++++ 6 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 src/program/migrations/0065_speakerproposal_email.py create mode 100644 src/program/migrations/0066_speaker_email.py diff --git a/src/backoffice/templates/manage_proposals.html b/src/backoffice/templates/manage_proposals.html index 8eeee84a..5a6d47de 100644 --- a/src/backoffice/templates/manage_proposals.html +++ b/src/backoffice/templates/manage_proposals.html @@ -36,7 +36,7 @@ {% for proposal in speakerproposals %} {{ proposal.name }} - {{ proposal.user.email }} + {{ proposal.email }} {{ proposal.needs_oneday_ticket|truefalseicon }} {{ proposal.event|truefalseicon }} {{ proposal.user }} diff --git a/src/program/forms.py b/src/program/forms.py index bcd20b57..6a9a70ee 100644 --- a/src/program/forms.py +++ b/src/program/forms.py @@ -17,7 +17,7 @@ class SpeakerProposalForm(forms.ModelForm): """ class Meta: model = SpeakerProposal - fields = ['name', 'biography', 'needs_oneday_ticket', 'submission_notes'] + fields = ['name', 'email', 'biography', 'needs_oneday_ticket', 'submission_notes'] def __init__(self, camp, eventtype=None, *args, **kwargs): # initialise the form diff --git a/src/program/migrations/0065_speakerproposal_email.py b/src/program/migrations/0065_speakerproposal_email.py new file mode 100644 index 00000000..31c9ae2e --- /dev/null +++ b/src/program/migrations/0065_speakerproposal_email.py @@ -0,0 +1,18 @@ +# Generated by Django 2.1 on 2018-08-18 11:42 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('program', '0064_auto_20180810_1748'), + ] + + operations = [ + migrations.AddField( + model_name='speakerproposal', + name='email', + field=models.EmailField(blank=True, help_text='The email of the speaker (defaults to the logged in user if empty.', max_length=150, null=True), + ), + ] diff --git a/src/program/migrations/0066_speaker_email.py b/src/program/migrations/0066_speaker_email.py new file mode 100644 index 00000000..9cc36b5d --- /dev/null +++ b/src/program/migrations/0066_speaker_email.py @@ -0,0 +1,18 @@ +# Generated by Django 2.1 on 2018-08-18 12:08 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('program', '0065_speakerproposal_email'), + ] + + operations = [ + migrations.AddField( + model_name='speaker', + name='email', + field=models.EmailField(blank=True, help_text='The email of the speaker.', max_length=150, null=True), + ), + ] diff --git a/src/program/models.py b/src/program/models.py index 486021b2..37b12d11 100644 --- a/src/program/models.py +++ b/src/program/models.py @@ -234,6 +234,13 @@ class SpeakerProposal(UserSubmittedModel): help_text='Name or alias of the speaker/artist/host', ) + email = models.EmailField( + max_length=150, + help_text="The email of the speaker (defaults to the logged in user if empty.", + null=True, + blank=True, + ) + biography = models.TextField( help_text='Biography of the speaker/artist/host. Markdown is supported.' ) @@ -268,6 +275,11 @@ class SpeakerProposal(UserSubmittedModel): # set Speaker data speaker.camp = self.camp + if self.email: + email = self.email + else: + email = request.user.email + speaker.email = email speaker.name = self.name speaker.biography = self.biography speaker.needs_oneday_ticket = self.needs_oneday_ticket @@ -770,6 +782,13 @@ class Speaker(CampRelatedModel): help_text='Name or alias of the speaker', ) + email = models.EmailField( + max_length=150, + help_text="The email of the speaker.", + null=True, + blank=True + ) + biography = models.TextField( help_text='Markdown is supported.' ) diff --git a/src/program/views.py b/src/program/views.py index bc9bf221..a4b6219f 100644 --- a/src/program/views.py +++ b/src/program/views.py @@ -158,6 +158,10 @@ class SpeakerProposalCreateView(LoginRequiredMixin, CampViewMixin, EnsureWritabl # set user before saving form.instance.user = self.request.user form.instance.camp = self.camp + + if not form.instance.email: + form.instance.email = self.request.user.email + speakerproposal = form.save() # add speakerproposal to eventproposal @@ -574,6 +578,8 @@ class CombinedProposalSubmitView(LoginRequiredMixin, CampViewMixin, CreateView): speakerproposal = form['speakerproposal'].save(commit=False) speakerproposal.camp = self.camp speakerproposal.user = self.request.user + if not speakerproposal.email: + speakerproposal.email = self.request.user.email speakerproposal.save() # then save the eventproposal