From 5a403c3cfa0210d02c940b2aa30478ec8362ebf2 Mon Sep 17 00:00:00 2001 From: "J.-S. Caux" <J.S.Caux@uva.nl> Date: Fri, 23 Sep 2016 10:02:19 +0200 Subject: [PATCH] Improve group emailing facilities --- scipost/forms.py | 12 +++++- .../scipost/email_group_members.html | 5 +-- scipost/views.py | 37 ++++++++++++------- 3 files changed, 36 insertions(+), 18 deletions(-) diff --git a/scipost/forms.py b/scipost/forms.py index bfb456f45..7e0f3e087 100644 --- a/scipost/forms.py +++ b/scipost/forms.py @@ -156,7 +156,14 @@ class SearchForm(forms.Form): class EmailGroupMembersForm(forms.Form): group = forms.ModelChoiceField(queryset=Group.objects.all()) email_subject = forms.CharField(widget=forms.Textarea(), label='') + personalize = forms.BooleanField( + required=False, initial=False, + label='Personalize (Dear Prof. AAA)?') email_text = forms.CharField(widget=forms.Textarea(), label='') + include_scipost_summary = forms.BooleanField( + required=False, initial=False, + label='include SciPost summary at end of message') + def __init__(self, *args, **kwargs): super(EmailGroupMembersForm, self).__init__(*args, **kwargs) @@ -165,11 +172,14 @@ class EmailGroupMembersForm(forms.Form): self.fields['email_text'].widget.attrs.update( {'rows': 15, 'cols': 50, 'placeholder': 'Write your message in this box.'}) + class EmailParticularForm(forms.Form): email_address = forms.EmailField(label='') email_subject = forms.CharField(widget=forms.Textarea(), label='') email_text = forms.CharField(widget=forms.Textarea(), label='') - include_scipost_summary = forms.BooleanField(label='include SciPost summary at end of message') + include_scipost_summary = forms.BooleanField( + required=False, initial=False, + label='Include SciPost summary at end of message') def __init__(self, *args, **kwargs): super(EmailParticularForm, self).__init__(*args, **kwargs) diff --git a/scipost/templates/scipost/email_group_members.html b/scipost/templates/scipost/email_group_members.html index 1c4b56d6a..f7ddaaa73 100644 --- a/scipost/templates/scipost/email_group_members.html +++ b/scipost/templates/scipost/email_group_members.html @@ -13,17 +13,16 @@ <section> {% if errormessage %} <p>{{ errormessage }}</p> - {% else %} + {% endif %} <div class="flex-greybox"> <h1>Email a Group of Contributors</h1> </div> <form action="{% url 'scipost:email_group_members' %}" method="post"> {% csrf_token %} - {{ form }} + {{ form.as_p }} <input type="submit" value="Send email"/> </form> - {% endif %} </section> diff --git a/scipost/views.py b/scipost/views.py index 9c64ca1ec..246f83a75 100644 --- a/scipost/views.py +++ b/scipost/views.py @@ -1020,20 +1020,25 @@ def email_group_members(request): with mail.get_connection() as connection: for member in page.object_list: if member.contributor.accepts_SciPost_emails: - email_text = ('Dear ' + title_dict[member.contributor.title] + ' ' + - member.last_name + ', \n\n' - + form.cleaned_data['email_text'] - + EMAIL_UNSUBSCRIBE_LINK_PLAIN) - html_template = Template( - 'Dear {{ title }} ' + - member.last_name + ', \n\n{{ email_text|linebreaks }}' - + '\n\n' + EMAIL_FOOTER + EMAIL_UNSUBSCRIBE_LINK - ) - context = Context( - {'title': title_dict[member.contributor.title], - 'email_text': form.cleaned_data['email_text'], - }) - html_version = html_template.render(context) + email_text = '' + email_text_html = '' + if form.cleaned_data['personalize']: + email_text = ('Dear ' + title_dict[member.contributor.title] + ' ' + + member.last_name + ', \n\n') + email_text_html = 'Dear {{ title }} {{ last_name }},<br/>' + email_text += form.cleaned_data['email_text'] + email_text_html += '{{ email_text|linebreaks }}' + email_text_html += EMAIL_FOOTER + if form.cleaned_data['personalize']: + email_text += EMAIL_UNSUBSCRIBE_LINK_PLAIN + email_text_html += EMAIL_UNSUBSCRIBE_LINK_HTML + email_context = Context({ + 'title': title_dict[member.contributor.title], + 'last_name': member.last_name, + 'email_text': form.cleaned_data['email_text'], + }) + html_template = Template(email_text_html) + html_version = html_template.render(email_context) # mail.EmailMessage(form.cleaned_data['email_subject'], # email_text, 'SciPost Admin <admin@scipost.org>', # [member.email], connection=connection).send() @@ -1048,6 +1053,10 @@ def email_group_members(request): 'followup_link': reverse('scipost:personal_page'), 'followup_link_label': 'personal page'} return render(request, 'scipost/acknowledgement.html', context) + else: + errormessage = 'The form was invalidly filled.' + context = {'errormessage': errormessage, 'form': form} + return render(request, 'scipost/email_group_members.html', context) form = EmailGroupMembersForm() context = {'form': form} return render(request, 'scipost/email_group_members.html', context) -- GitLab