def render_newsletter(request, slug, context): """Return a newsletter in HTML format""" newsletter = get_object_or_404(Newsletter, slug=slug) context = Context(context) context.update({ 'newsletter': newsletter, 'title': newsletter.title, 'base_url': newsletter.base_url, }) message_content = newsletter.content message_template = Template(message_content) # Render only the message provided by the user with the WYSIWYG editor message = message_template.render(context) context.update({'message': message}) if INCLUDE_UNSUBSCRIPTION: unsubscription = render_to_string('newsletter/newsletter_link_unsubscribe.html', context) context.update({'unsubscription': unsubscription}) if TRACKING_LINKS: message = track_links(message, context) return render_to_response( 'mailtemplates/{0}/{1}'.format(newsletter.template, 'index.html'), context, context_instance=RequestContext(request) )
def render_newsletter(request, slug, context): """Return a newsletter in HTML format""" newsletter = get_object_or_404(Newsletter, slug=slug) context = Context(context) context.update({ 'newsletter': newsletter, 'title': newsletter.title, 'base_url': newsletter.base_url, }) message_content = newsletter.content message_template = Template(message_content) # Render only the message provided by the user with the WYSIWYG editor message = message_template.render(context) context.update({'message': message}) if INCLUDE_UNSUBSCRIPTION: unsubscription = render_to_string( 'newsletter/newsletter_link_unsubscribe.html', context) context.update({'unsubscription': unsubscription}) if TRACKING_LINKS: message = track_links(message, context) return render_to_response('mailtemplates/{0}/{1}'.format( newsletter.template, 'index.html'), context, context_instance=RequestContext(request))
def build_email_content(self, contact): """Generate the mail for a contact""" uidb36, token = tokenize(contact) context = Context({'contact': contact, 'domain': Site.objects.get_current().domain, 'newsletter': self.newsletter, 'tracking_image_format': TRACKING_IMAGE_FORMAT, 'uidb36': uidb36, 'token': token}) if INCLUDE_SITE_LINKS: context['web_version_link'] = reverse_lazy( 'newsletter_newsletter_contact', kwargs={'slug': self.newsletter.slug, 'uidb36': uidb36, 'token': token}) if INCLUDE_UNSUBSCRIPTION: context['unsubscribe_link'] = reverse_lazy( 'newsletter_mailinglist_unsubscribe', kwargs={'slug': self.newsletter.slug, 'uidb36': uidb36, 'token': token}) if TRACKING_IMAGE: image_tracking = render_to_string('newsletter/newsletter_image_tracking.html', context) context['tracking_image_link'] = reverse_lazy( 'newsletter_newsletter_tracking', kwargs={'slug': self.newsletter.slug, 'uidb36': uidb36, 'token': token, 'format': TRACKING_IMAGE_FORMAT}) content = self.newsletter_template.render(context) if TRACKING_LINKS: content = track_links(content, context) return smart_unicode(content)
def render_newsletter(request, slug, context): """Return a newsletter in HTML format""" newsletter = get_object_or_404(Newsletter, slug=slug) context.update({'newsletter': newsletter, 'domain': Site.objects.get_current().domain}) content = render_string(newsletter.content, context) title = render_string(newsletter.title, context) if TRACKING_LINKS: content = track_links(content, context) unsubscription = render_file('newsletter/newsletter_link_unsubscribe.html', context) content = body_insertion(content, unsubscription, end=True) return render_to_response('newsletter/newsletter_detail.html', {'content': content, 'title': title, 'object': newsletter}, context_instance=RequestContext(request))
def build_email_content(self, contact): """Generate the mail for a contact""" uidb36, token = tokenize(contact) context = Context({'contact': contact, 'domain': Site.objects.get_current().domain, 'newsletter': self.newsletter, 'tracking_image_format': TRACKING_IMAGE_FORMAT, 'uidb36': uidb36, 'token': token}) content = self.newsletter_template.render(context) if TRACKING_LINKS: content = track_links(content, context) link_site = '' if INCLUDE_SITE_LINKS: site_link_markup = render_to_string( 'newsletter/newsletter_link_site.html', context ) link_site = BeautifulSoup(site_link_markup) content = body_insertion(content, link_site) if INCLUDE_UNSUBSCRIPTION: unsubscription_link_markup = render_to_string( 'newsletter/newsletter_link_unsubscribe.html', context ) unsubscription = BeautifulSoup(unsubscription_link_markup) content = body_insertion(content, unsubscription, end=True) if TRACKING_IMAGE: tracking_image_markup = render_to_string( 'newsletter/newsletter_image_tracking.html', context ) image_tracking = BeautifulSoup(tracking_image_markup) content = body_insertion(content, image_tracking, end=True) return smart_unicode(content)
def prepare_message(self, contact): from emencia.utils.tokens import tokenize from emencia.utils.newsletter import fix_tinymce_links uidb36, token = tokenize(contact) base_url = self.base_url context = Context({ 'contact': contact, 'base_url': base_url, 'newsletter': self, 'tracking_image_format': TRACKING_IMAGE_FORMAT, 'uidb36': uidb36, 'token': token, 'UNIQUE_KEY': ''.join(sample(UNIQUE_KEY_CHAR_SET, UNIQUE_KEY_LENGTH)) }) message = EmailMultiAlternatives() message.from_email = smart_str(self.header_sender) message.extra_headers = {'Reply-to': smart_str(self.header_reply)} message.to = [contact.mail_format()] # Render only the message provided by the user with the WYSIWYG editor message_template = Template(fix_tinymce_links(self.content)) message_content = message_template.render(context) context.update({'message': message_content}) # link_site_exist = False link_site = render_to_string('newsletter/newsletter_link_site.html', context) context.update({'link_site': link_site}) if INCLUDE_UNSUBSCRIPTION: unsubscription = render_to_string( 'newsletter/newsletter_link_unsubscribe.html', context) context.update({'unsubscription': unsubscription}) if TRACKING_IMAGE: image_tracking = render_to_string( 'newsletter/newsletter_image_tracking.html', context) context.update({'image_tracking': image_tracking}) content_template = get_template('mailtemplates/{0}/{1}'.format( self.template, 'index.html')) content = content_template.render(context) if TRACKING_LINKS: from emencia.utils.newsletter import track_links content = track_links(content, context) content = smart_unicode(content) p = Premailer(content, base_url=base_url, preserve_internal_links=True) content = p.transform() # newsletter_template = Template(self.content) message.body = html2text(content) message.attach_alternative(smart_str(content), "text/html") title_template = Template(self.title) title = title_template.render(context) message.subject = title for attachment in self.attachments: message.attach(attachment) return message
def prepare_message(self, contact): from emencia.utils.tokens import tokenize from emencia.utils.newsletter import fix_tinymce_links uidb36, token = tokenize(contact) base_url = self.base_url context = Context({ 'contact': contact, 'base_url': base_url, 'newsletter': self, 'tracking_image_format': TRACKING_IMAGE_FORMAT, 'uidb36': uidb36, 'token': token, 'UNIQUE_KEY': ''.join(sample(UNIQUE_KEY_CHAR_SET, UNIQUE_KEY_LENGTH)) }) message = EmailMultiAlternatives() message.from_email = smart_str(self.header_sender) message.extra_headers = {'Reply-to': smart_str(self.header_reply)} message.to = [contact.mail_format()] # Render only the message provided by the user with the WYSIWYG editor message_template = Template(fix_tinymce_links(self.content)) message_content = message_template.render(context) context.update({'message': message_content}) # link_site_exist = False link_site = render_to_string('newsletter/newsletter_link_site.html', context) context.update({'link_site': link_site}) if INCLUDE_UNSUBSCRIPTION: unsubscription = render_to_string('newsletter/newsletter_link_unsubscribe.html', context) context.update({'unsubscription': unsubscription}) if TRACKING_IMAGE: image_tracking = render_to_string('newsletter/newsletter_image_tracking.html', context) context.update({'image_tracking': image_tracking}) content_template = get_template('mailtemplates/{0}/{1}'.format(self.template, 'index.html')) content = content_template.render(context) if TRACKING_LINKS: from emencia.utils.newsletter import track_links content = track_links(content, context) content = smart_unicode(content) p = Premailer(content, base_url=base_url, preserve_internal_links=True) content = p.transform() # newsletter_template = Template(self.content) message.body = html2text(content) message.attach_alternative(smart_str(content), "text/html") title_template = Template(self.title) title = title_template.render(context) message.subject = title for attachment in self.attachments: message.attach(attachment) return message