diff --git a/basic_email/views.py b/basic_email/views.py index cd9960b..ba80b80 100644 --- a/basic_email/views.py +++ b/basic_email/views.py @@ -45,6 +45,7 @@ def get_context_data(self, *args, **kwargs): class PreviewEmailView(TemplateView): sub_tmp_dir = 'emails_tmp' + tmpl_variable_prefix = '{##_' def get_email_template(self, *args, **kwargs): if not self.request.GET.get('template'): @@ -74,7 +75,7 @@ def content_encode(self, content): content = content.replace('{% block ', '{#_block ') content = content.replace('{% endblock ', '{#_endblock ') content = content.replace('{%', '{#_') - content = content.replace('{{', '{##_ ') + content = content.replace('{{', self.tmpl_variable_prefix) content = content.replace('{#_extends', '{% extends') content = content.replace('{#_block ', '{% block ') content = content.replace('{#_endblock ', '{% endblock ') @@ -103,8 +104,10 @@ def list_template_variables(self): self.prepare_tmp_files(tmp_dir) file_name = self.get_email_template().replace(settings.BASIC_EMAIL_DIRECTORY, self.sub_tmp_dir) content = render_to_string(file_name) - regexp = re.compile('(?<={##_ )\w+') - variables = regexp.findall(content) + regexp = re.compile(self.tmpl_variable_prefix + '\s*\w+') + # this regexp (?<={##_\s+)\w+') will not work since look behind statement requires fixed width expression + # need to manually remove prefix + variables = [v.replace(self.tmpl_variable_prefix, '').strip() for v in regexp.findall(content)] shutil.rmtree(tmp_dir) # careful! removes whole tree. return variables diff --git a/example_project/templates/emails/email_start.html b/example_project/templates/emails/email_start.html index 9939217..93f7061 100644 --- a/example_project/templates/emails/email_start.html +++ b/example_project/templates/emails/email_start.html @@ -36,6 +36,17 @@

Welcome, Elijah Baily {{test_template_variable_1}}

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et. {{test_template_variable_2}}

+

+ Testing variable 3 {{ test_template_variable_3 }} +

+ +

+ Testing variable 4 {{ test_template_variable_4 }} +

+ +

+ Testing variable 5 {{ test_template_variable_5 }} +

diff --git a/example_project/tests/tests.py b/example_project/tests/tests.py index 21d7e44..c0ca777 100644 --- a/example_project/tests/tests.py +++ b/example_project/tests/tests.py @@ -61,7 +61,11 @@ def test_variables_list(self): # proper response = self.client.get(reverse('list-email-template-variables') + '?template=email_start.html') self.assertEqual(response.status_code, 200) - self.assertEqual(len(response.context['template_variables']), 3) - self.assertEqual(response.context['template_variables'][0], 'test_base_template_variable') - self.assertEqual(response.context['template_variables'][1], 'test_template_variable_1') - self.assertEqual(response.context['template_variables'][2], 'test_template_variable_2') + self.assertEqual(len(response.context['template_variables']), 7) + self.assertEqual(response.context['template_variables'][0], 'emailSubject') + self.assertEqual(response.context['template_variables'][1], 'test_base_template_variable') + self.assertEqual(response.context['template_variables'][2], 'test_template_variable_1') + self.assertEqual(response.context['template_variables'][3], 'test_template_variable_2') + self.assertEqual(response.context['template_variables'][4], 'test_template_variable_3') + self.assertEqual(response.context['template_variables'][5], 'test_template_variable_4') + self.assertEqual(response.context['template_variables'][6], 'test_template_variable_5')