diff --git a/scipost/forms.py b/scipost/forms.py index bfb456f457a5fd92e0300817e6f396346a2b45f0..7e0f3e0871a7015a041bcf4befb52837a91fafd4 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 1c4b56d6ab40228c5f5c62cbd1c9dbfae1584f85..f7ddaaa73749419c343422f8a3223c3e8394da0c 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 9c64ca1ec458fa1485f26e85dd6c9307aafc1eec..246f83a7564bc8e48d6d949932c910713b86bc78 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)