Add sending of html email for the request

This commit is contained in:
Tom Price
2017-05-09 18:34:47 +01:00
parent 331dab20f7
commit f57ac3acb1
8 changed files with 169 additions and 10 deletions

View File

@@ -2,7 +2,8 @@ import cStringIO as StringIO
from io import BytesIO
import urllib2
from django.core.mail import EmailMessage
from django.contrib.staticfiles.storage import staticfiles_storage
from django.core.mail import EmailMessage, EmailMultiAlternatives
from django.views import generic
from django.core.urlresolvers import reverse_lazy
from django.shortcuts import get_object_or_404
@@ -18,6 +19,7 @@ from django.contrib import messages
from z3c.rml import rml2pdf
from PyPDF2 import PdfFileMerger, PdfFileReader
import simplejson
import premailer
from RIGS import models, forms
import datetime
@@ -325,14 +327,44 @@ class EventAuthorisationRequest(generic.FormView, generic.detail.SingleObjectMix
'sent_by': self.request.user.pk,
}),
}
if email == event.person.email:
context['to_name'] = event.person.name
msg = EmailMessage(
msg = EmailMultiAlternatives(
"N%05d | %s - Event Authorisation Request" % (self.object.pk, self.object.name),
get_template("RIGS/eventauthorisation_client_request.txt").render(context),
to=[email],
reply_to=[settings.AUTHORISATION_NOTIFICATION_ADDRESS],
)
css = staticfiles_storage.path('css/email.css')
html = premailer.Premailer(get_template("RIGS/eventauthorisation_client_request.html").render(context),
external_styles=css).transform()
msg.attach_alternative(html, 'text/html')
msg.send()
return super(EventAuthorisationRequest, self).form_valid(form)
class EventAuthoriseRequestEmailPreview(generic.DetailView):
template_name = "RIGS/eventauthorisation_client_request.html"
model = models.Event
def render_to_response(self, context, **response_kwargs):
from django.contrib.staticfiles.storage import staticfiles_storage
css = staticfiles_storage.path('css/email.css')
response = super(EventAuthoriseRequestEmailPreview, self).render_to_response(context, **response_kwargs)
assert isinstance(response, HttpResponse)
response.content = premailer.Premailer(response.rendered_content, external_styles=css).transform()
return response
def get_context_data(self, **kwargs):
context = super(EventAuthoriseRequestEmailPreview, self).get_context_data(**kwargs)
context['hmac'] = signing.dumps({
'pk': self.object.pk,
'email': self.request.GET.get('email', 'hello@world.test'),
'sent_by': self.request.user.pk,
})
context['to_name'] = self.request.GET.get('to_name', None)
return context

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,35 @@
@import "bootstrap-compass";
// Core variables and mixins
@import "bootstrap/variables";
@import "bootstrap-variables";
@import "bootstrap/mixins";
// Reset and dependencies
@import "bootstrap/normalize";
@import "bootstrap/print";
@import "bootstrap/glyphicons";
// Core CSS
@import "bootstrap/scaffolding";
@import "bootstrap/type";
@import "bootstrap/code";
@import "bootstrap/grid";
@import "bootstrap/tables";
@import "bootstrap/forms";
@import "bootstrap/buttons";
.client-header {
background-image: url("https://www.nottinghamtec.co.uk/imgs/wof2014-1.jpg");
background-color: #222;
background-repeat: no-repeat;
background-position: center;
background-size: cover;
margin-bottom: 2em;
img {
height: 8em;
margin: 2em;
}
}

View File

@@ -0,0 +1,32 @@
{% extends 'base_client_email.html' %}
{% block content %}
<div class="col-sm-12">
<p>Hi {{ to_name|default:"there" }},</p>
<p>{{ request.user.get_full_name }} has requested that you authorise N{{ object.pk|stringformat:"05d" }}
| {{ object.name }}{% if not to_name %} on behalf of {{ object.person.name }}{% endif %}.</p>
<p>
Please find the link below to complete the event booking process.
{% if object.event.organisation and object.event.organisation.union_account %}{# internal #}
Remember that only Presidents or Treasurers are allowed to sign off payments. You may need to forward
this
email on.
{% endif %}
</p>
<div class="row">
<div class="col-sm-6 col-sm-offset-3 text-center">
<a class="btn btn-primary"
href="{{ request.scheme }}://{{ request.get_host }}{% url 'event_authorise' object.pk hmac %}">
Complete Authorisation Form
</a>
</div>
</div>
<p>Please note you event will not be booked until you complete this form.</p>
<p>TEC PA & Lighting</p>
</div>
{% endblock %}

View File

@@ -1,12 +1,16 @@
Hi there,
Hi {{ to_name|default:"there" }},
{{request.user.get_full_name}} has requested that you authorise N{{object.pk|stringformat:"05d"}} | {{object.name}}.
{{ request.user.get_full_name }} has requested that you authorise N{{ object.pk|stringformat:"05d" }}| {{ object.name }}{% if not to_name %} on behalf of {{ object.person.name }}{% endif %}.
Please find the link below to complete the event booking process.
{% if object.event.organisation and object.event.organisation.union_account %}{# internal #}
Remember that only Presidents or Treasurers are allowed to sign off payments. You may need to forward this email on.
{% endif %}
Please find the link below to complete the event booking process.
{% if object.event.organisation and object.event.organisation.union_account %}{# internal #}
Remember that only Presidents or Treasurers are allowed to sign off payments. You may need to forward
this
email on.
{% endif %}
{{request.scheme}}://{{request.get_host}}{% url 'event_authorise' object.pk hmac %}
{{ request.scheme }}://{{ request.get_host }}{% url 'event_authorise' object.pk hmac %}
The TEC Rig Information Gathering System
Please note you event will not be booked until you complete this form.
TEC PA & Lighting

View File

@@ -155,6 +155,11 @@ urlpatterns = patterns('',
rigboard.EventAuthorisationRequest.as_view()
),
name='event_authorise_request'),
url(r'^event/(?P<pk>\d+)/auth/preview/$',
permission_required_with_403('RIGS.change_event')(
rigboard.EventAuthoriseRequestEmailPreview.as_view()
),
name='event_authorise_preview'),
url(r'^event/(?P<pk>\d+)/(?P<hmac>[-:\w]+)/$', rigboard.EventAuthorise.as_view(),
name='event_authorise'),