Skip to content

Commit

Permalink
Merge pull request #20 from andersinno/custom-message-template
Browse files Browse the repository at this point in the history
Fix custom template email rendering
  • Loading branch information
akx authored Aug 12, 2016
2 parents bf304f4 + e7ae3ff commit cc255c8
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 9 deletions.
12 changes: 4 additions & 8 deletions form_designer/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,19 @@
from collections import OrderedDict
from decimal import Decimal

import django
from django.conf import settings as django_settings
from django.db import models
from django.template import Context, Template
from django.template.loader import get_template
from django.utils.deprecation import warn_about_renamed_method
from django.utils.module_loading import import_string
from django.utils.six import python_2_unicode_compatible
from django.utils.translation import ugettext_lazy as _
from picklefield.fields import PickledObjectField

from form_designer import settings
from form_designer.fields import ModelNameField, RegexpExpressionField, TemplateCharField, TemplateTextField
from form_designer.utils import get_random_hash, string_template_replace
from picklefield.fields import PickledObjectField

MAIL_TEMPLATE_CONTEXT_HELP_TEXT = _(
'Your form fields are available as template context. '
Expand Down Expand Up @@ -104,8 +105,6 @@ def get_form_data_context(self, form_data):

def compile_message(self, form_data, template=None):
# TODO: refactor, move to utils
from django.template.loader import get_template
from django.template import Template
if template:
t = get_template(template)
elif not self.message_template:
Expand All @@ -114,10 +113,7 @@ def compile_message(self, form_data, template=None):
t = Template(self.message_template)
context = self.get_form_data_context(form_data)
context['data'] = form_data
if django.VERSION[:2] < (1, 8):
from django.template import Context
context = Context(context)
return t.render(context)
return t.render(Context(context))

def count_fields(self):
return self.formdefinitionfield_set.count()
Expand Down
17 changes: 17 additions & 0 deletions form_designer/tests/test_messages.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import pytest
from form_designer.forms import DesignedForm


@pytest.mark.django_db
def test_custom_message_template(greeting_form):
"""
Test that custom message templates work as expected.
"""
greeting_form.message_template = '{{ greeting }}, friend!'
form = DesignedForm(greeting_form, data={
'greeting': 'Hello',
})
assert form.is_valid()
greeting_form.log(form)
mail = greeting_form.send_mail(form)
assert mail.body == 'Hello, friend!'
6 changes: 5 additions & 1 deletion form_designer/views.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@

from django.contrib import messages
from django.core.context_processors import csrf
try:
from django.template.context_processors import csrf
except ImportError: # older Django
from django.core.context_processors import csrf

from django.http import HttpResponseRedirect
from django.shortcuts import get_object_or_404, render_to_response
from django.template import RequestContext
Expand Down

0 comments on commit cc255c8

Please sign in to comment.