SciPost Code Repository

Skip to content
Snippets Groups Projects
Commit 5a403c3c authored by Jean-Sébastien Caux's avatar Jean-Sébastien Caux
Browse files

Improve group emailing facilities

parent 25e2f522
No related branches found
No related tags found
No related merge requests found
...@@ -156,7 +156,14 @@ class SearchForm(forms.Form): ...@@ -156,7 +156,14 @@ class SearchForm(forms.Form):
class EmailGroupMembersForm(forms.Form): class EmailGroupMembersForm(forms.Form):
group = forms.ModelChoiceField(queryset=Group.objects.all()) group = forms.ModelChoiceField(queryset=Group.objects.all())
email_subject = forms.CharField(widget=forms.Textarea(), label='') 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='') 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): def __init__(self, *args, **kwargs):
super(EmailGroupMembersForm, self).__init__(*args, **kwargs) super(EmailGroupMembersForm, self).__init__(*args, **kwargs)
...@@ -165,11 +172,14 @@ class EmailGroupMembersForm(forms.Form): ...@@ -165,11 +172,14 @@ class EmailGroupMembersForm(forms.Form):
self.fields['email_text'].widget.attrs.update( self.fields['email_text'].widget.attrs.update(
{'rows': 15, 'cols': 50, 'placeholder': 'Write your message in this box.'}) {'rows': 15, 'cols': 50, 'placeholder': 'Write your message in this box.'})
class EmailParticularForm(forms.Form): class EmailParticularForm(forms.Form):
email_address = forms.EmailField(label='') email_address = forms.EmailField(label='')
email_subject = forms.CharField(widget=forms.Textarea(), label='') email_subject = forms.CharField(widget=forms.Textarea(), label='')
email_text = 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): def __init__(self, *args, **kwargs):
super(EmailParticularForm, self).__init__(*args, **kwargs) super(EmailParticularForm, self).__init__(*args, **kwargs)
......
...@@ -13,17 +13,16 @@ ...@@ -13,17 +13,16 @@
<section> <section>
{% if errormessage %} {% if errormessage %}
<p>{{ errormessage }}</p> <p>{{ errormessage }}</p>
{% else %} {% endif %}
<div class="flex-greybox"> <div class="flex-greybox">
<h1>Email a Group of Contributors</h1> <h1>Email a Group of Contributors</h1>
</div> </div>
<form action="{% url 'scipost:email_group_members' %}" method="post"> <form action="{% url 'scipost:email_group_members' %}" method="post">
{% csrf_token %} {% csrf_token %}
{{ form }} {{ form.as_p }}
<input type="submit" value="Send email"/> <input type="submit" value="Send email"/>
</form> </form>
{% endif %}
</section> </section>
......
...@@ -1020,20 +1020,25 @@ def email_group_members(request): ...@@ -1020,20 +1020,25 @@ def email_group_members(request):
with mail.get_connection() as connection: with mail.get_connection() as connection:
for member in page.object_list: for member in page.object_list:
if member.contributor.accepts_SciPost_emails: if member.contributor.accepts_SciPost_emails:
email_text = ('Dear ' + title_dict[member.contributor.title] + ' ' + email_text = ''
member.last_name + ', \n\n' email_text_html = ''
+ form.cleaned_data['email_text'] if form.cleaned_data['personalize']:
+ EMAIL_UNSUBSCRIBE_LINK_PLAIN) email_text = ('Dear ' + title_dict[member.contributor.title] + ' ' +
html_template = Template( member.last_name + ', \n\n')
'Dear {{ title }} ' + email_text_html = 'Dear {{ title }} {{ last_name }},<br/>'
member.last_name + ', \n\n{{ email_text|linebreaks }}' email_text += form.cleaned_data['email_text']
+ '\n\n' + EMAIL_FOOTER + EMAIL_UNSUBSCRIBE_LINK email_text_html += '{{ email_text|linebreaks }}'
) email_text_html += EMAIL_FOOTER
context = Context( if form.cleaned_data['personalize']:
{'title': title_dict[member.contributor.title], email_text += EMAIL_UNSUBSCRIBE_LINK_PLAIN
'email_text': form.cleaned_data['email_text'], email_text_html += EMAIL_UNSUBSCRIBE_LINK_HTML
}) email_context = Context({
html_version = html_template.render(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'], # mail.EmailMessage(form.cleaned_data['email_subject'],
# email_text, 'SciPost Admin <admin@scipost.org>', # email_text, 'SciPost Admin <admin@scipost.org>',
# [member.email], connection=connection).send() # [member.email], connection=connection).send()
...@@ -1048,6 +1053,10 @@ def email_group_members(request): ...@@ -1048,6 +1053,10 @@ def email_group_members(request):
'followup_link': reverse('scipost:personal_page'), 'followup_link': reverse('scipost:personal_page'),
'followup_link_label': 'personal page'} 'followup_link_label': 'personal page'}
return render(request, 'scipost/acknowledgement.html', context) 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() form = EmailGroupMembersForm()
context = {'form': form} context = {'form': form}
return render(request, 'scipost/email_group_members.html', context) return render(request, 'scipost/email_group_members.html', context)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment