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