Skip to content

Commit

Permalink
Added django-exmail-extras dependency, and added support for template…
Browse files Browse the repository at this point in the history
…d emails.
  • Loading branch information
stephenmcd committed Mar 24, 2012
1 parent 4bda983 commit ab94c1e
Show file tree
Hide file tree
Showing 6 changed files with 46 additions and 11 deletions.
3 changes: 3 additions & 0 deletions forms_builder/forms/templates/email_extras/base.html
@@ -0,0 +1,3 @@
{% block main %}{% endblock %}

<br><a href="http://{{ request.get_host }}">http://{{ request.get_host }}</a>
3 changes: 3 additions & 0 deletions forms_builder/forms/templates/email_extras/base.txt
@@ -0,0 +1,3 @@
{% block main %}{% endblock %}

http://{{ request.get_host }}
13 changes: 13 additions & 0 deletions forms_builder/forms/templates/email_extras/form_response.html
@@ -0,0 +1,13 @@
{% extends "email_extras/base.html" %}

{% block main %}
{% if message %}<p>{{ message }}</p>{% endif %}
<table border="0">
{% for field, value in fields %}
<tr>
<td><b>{{ field }}:</b></td>
<td>{{ value }}</td>
</tr>
{% endfor %}
</table>
{% endblock %}
9 changes: 9 additions & 0 deletions forms_builder/forms/templates/email_extras/form_response.txt
@@ -0,0 +1,9 @@
{% extends "email_extras/base.txt" %}

{% block main %}{% if message %}
{{ message }}

{% endif %}{% for field, value in fields %}
{{ field }}: {{ value }}
{% endfor %}
{% endblock %}
27 changes: 17 additions & 10 deletions forms_builder/forms/views.py
Expand Up @@ -7,6 +7,7 @@
from django.shortcuts import get_object_or_404, redirect, render_to_response
from django.template import RequestContext
from django.utils.http import urlquote
from email_extras.utils import send_mail_template

from forms_builder.forms.forms import FormForForm
from forms_builder.forms.models import Form
Expand All @@ -31,28 +32,34 @@ def form_detail(request, slug, template="forms/form_detail.html"):
form_invalid.send(sender=request, form=form_for_form)
else:
entry = form_for_form.save()
fields = ["%s: %s" % (v.label, form_for_form.cleaned_data[k])
for (k, v) in form_for_form.fields.items()]
subject = form.email_subject
if not subject:
subject = "%s - %s" % (form.title, entry.entry_time)
body = "\n".join(fields)
if form.email_message:
body = "%s\n\n%s" % (form.email_message, body)
fields = [(v.label, form_for_form.cleaned_data[k])
for (k, v) in form_for_form.fields.items()]
context = {
"fields": fields,
"message": form.email_message,
"request": request,
}
email_from = form.email_from or settings.DEFAULT_FROM_EMAIL
email_to = form_for_form.email_to()
if email_to and form.send_email:
msg = EmailMessage(subject, body, email_from, [email_to])
msg.send()
send_mail_template(subject, "form_response", email_from,
email_to, context=context,
fail_silently=settings.DEBUG)
email_from = email_to or email_from # Send from the email entered.
email_copies = [e.strip() for e in form.email_copies.split(",")
if e.strip()]
if email_copies:
msg = EmailMessage(subject, body, email_from, email_copies)
attachments = []
for f in form_for_form.files.values():
f.seek(0)
msg.attach(f.name, f.read())
msg.send()
attachments.append((f.name, f.read()))
send_mail_template(subject, "form_response", email_from,
email_copies, context=context,
attachments=attachments,
fail_silently=settings.DEBUG)
form_valid.send(sender=request, form=form_for_form, entry=entry)
return redirect(reverse("form_sent", kwargs={"slug": form.slug}))
context = {"form": form}
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Expand Up @@ -14,7 +14,7 @@
zip_safe = False,
include_package_data = True,
packages = find_packages(),
install_requires=["sphinx-me >= 0.1.2", "django"],
install_requires=["sphinx-me >= 0.1.2", "django-email-extras", "django"],
classifiers = [
"Development Status :: 5 - Production/Stable",
"Environment :: Web Environment",
Expand Down

0 comments on commit ab94c1e

Please sign in to comment.