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 @@
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 }} +