Ejemplo n.º 1
0
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))
Ejemplo n.º 3
0
 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)
Ejemplo n.º 6
0
    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
Ejemplo n.º 7
0
    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