NewsBlur-viq/apps/newsletters/views.py

75 lines
109 KiB
Python
Raw Normal View History

2016-02-09 17:39:28 -08:00
from pprint import pprint
2024-04-24 09:50:42 -04:00
2016-02-09 17:40:07 -08:00
from django.conf import settings
2024-04-24 09:50:42 -04:00
from django.http import Http404, HttpResponse
from apps.newsletters.models import EmailNewsletter
from apps.rss_feeds.models import Feed, MStory
2024-04-24 09:50:42 -04:00
from utils import log as logging
2024-04-24 09:43:56 -04:00
def newsletter_receive(request):
2020-06-08 10:44:59 -04:00
"""
2024-04-24 09:43:56 -04:00
This function is called by mailgun's receive email feature. This is a
2020-06-08 10:44:59 -04:00
private API used for the newsletter app.
"""
# params = {
# 'stripped-signature':'Thanks,\nBob',
# 'From':'Test mailer <samuel@ofbrooklyn.com>',
# 'attachment-count':'2',
# 'To':'Alice <alice@newsletters.newsblur.com>',
# 'subject':'Test Newsletter The Skimm',
# 'from':'Test mailer <samuel@ofbrooklyn.com>',
# 'User-Agent':'Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130308 Thunderbird/17.0.4',
# 'stripped-html':'<html><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type"></head><body text="#000000" bgcolor="#FFFFFF">\n <div class="moz-cite-prefix">\n <div style="color: rgb(34, 34, 34); font-family: arial,\n sans-serif; font-size: 12.666666984558105px; font-style: normal;\n font-variant: normal; font-weight: normal; letter-spacing:\n normal; line-height: normal; orphans: auto; text-align: start;\n text-indent: 0px; text-transform: none; white-space: normal;\n widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto;\n -webkit-text-stroke-width: 0px; background-color: rgb(255, 255,\n 255);">Hi Alice,</div>\n <div style="color: rgb(34, 34, 34); font-family: arial,\n sans-serif; font-size: 12.666666984558105px; font-style: normal;\n font-variant: normal; font-weight: normal; letter-spacing:\n normal; line-height: normal; orphans: auto; text-align: start;\n text-indent: 0px; text-transform: none; white-space: normal;\n widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto;\n -webkit-text-stroke-width: 0px; background-color: rgb(255, 255,\n 255);"><br></div>\n <div style="color: rgb(34, 34, 34); font-family: arial,\n sans-serif; font-size: 12.666666984558105px; font-style: normal;\n font-variant: normal; font-weight: normal; letter-spacing:\n normal; line-height: normal; orphans: auto; text-align: start;\n text-indent: 0px; text-transform: none; white-space: normal;\n widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto;\n -webkit-text-stroke-width: 0px; background-color: rgb(255, 255,\n 255);">This is Bob.<span class="Apple-converted-space">&#160;<img alt="" src="cid:part1.04060802.06030207@newsletters.newsblur.com" height="15" width="33"></span></div>\n <div style="color: rgb(34, 34, 34); font-family: arial,\n sans-serif; font-size: 12.666666984558105px; font-style: normal;\n font-variant: normal; font-weight: normal; letter-spacing:\n normal; line-height: normal; orphans: auto; text-align: start;\n text-indent: 0px; text-transform: none; white-space: normal;\n widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto;\n -webkit-text-stroke-width: 0px; background-color: rgb(255, 255,\n 255);"><br>\n I also attached a file.<br><br></div>\n <div style="color: rgb(34, 34, 34); font-family: arial,\n sans-serif; font-size: 12.666666984558105px; font-style: normal;\n font-variant: normal; font-weight: normal; letter-spacing:\n normal; line-height: normal; orphans: auto; text-align: start;\n text-indent: 0px; text-transform: none; white-space: normal;\n widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto;\n -webkit-text-stroke-width: 0px; background-color: rgb(255, 255,\n 255);">Thanks,</div>\n <div style="color: rgb(34, 34, 34); font-family: arial,\n sans-serif; font-size: 12.666666984558105px; font-style: normal;\n font-variant: normal; font-weight: normal; letter-spacing:\n normal; line-height: normal; orphans: auto; text-align: start;\n text-indent: 0px; text-transform: none; white-space: normal;\n widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto;\n -webkit-text-stroke-width: 0px; background-color: rgb(255, 255,\n 255);">Bob</div>\n <br><br></div>\n <br></body></html>',
# 'In-Reply-To':'<517AC78B.5060404@newsletters.newsblur.com>',
# 'Date':'Fri, 26 Apr 2013 11:50:29 -0700',
# 'Message-Id':'<517ACC75.5010709@newsletters.newsblur.com>',
# 'body-plain':'Hi Alice,\n\nThis is Bob.\n\nI also attached a file.\n\nThanks,\nBob\n\nOn 04/26/2013 11:29 AM, Alice wrote:\n> Hi Bob,\n>\n> This is Alice. How are you doing?\n>\n> Thanks,\n> Alice\n\n',
# 'Mime-Version':'1.0',
# 'Received':'from [10.20.76.69] (Unknown [50.56.129.169]) by mxa.mailgun.org with ESMTP id 517acc75.4b341f0-worker2; Fri, 26 Apr 2013 18:50:29 -0000 (UTC)',
# 'content-id-map':'{"<part1.04060802.06030207@newsletters.newsblur.com>": "attachment-1"}',
# 'Sender':'bob@newsletters.newsblur.com',
# 'timestamp':'1455054990',
# 'message-headers':'[["Received", "by luna.mailgun.net with SMTP mgrt 8788212249833; Fri, 26 Apr 2013 18:50:30 +0000"], ["Received", "from [10.20.76.69] (Unknown [50.56.129.169]) by mxa.mailgun.org with ESMTP id 517acc75.4b341f0-worker2; Fri, 26 Apr 2013 18:50:29 -0000 (UTC)"], ["Message-Id", "<517ACC75.5010709@newsletters.newsblur.com>"], ["Date", "Fri, 26 Apr 2013 11:50:29 -0700"], ["From", "Test mailer <samuel@ofbrooklyn.com>"], ["User-Agent", "Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130308 Thunderbird/17.0.4"], ["Mime-Version", "1.0"], ["To", "Alice <alice@newsletters.newsblur.com>"], ["Subject", "Re: Sample POST request"], ["References", "<517AC78B.5060404@newsletters.newsblur.com>"], ["In-Reply-To", "<517AC78B.5060404@newsletters.newsblur.com>"], ["X-Mailgun-Variables", "{\\"my_var_1\\": \\"Mailgun Variable #1\\", \\"my-var-2\\": \\"awesome\\"}"], ["Content-Type", "multipart/mixed; boundary=\\"------------020601070403020003080006\\""], ["Sender", "bob@newsletters.newsblur.com"]]',
# 'stripped-text':'Hi Alice,\n\nThis is Bob.\n\nI also attached a file.',
# 'recipient':'samuel-555551235342@newsletters.newsblur.com',
# 'sender':'samuel@ofbrooklyn.com',
# 'X-Mailgun-Variables':'{"my_var_1": "Mailgun Variable #1", "my-var-2": "awesome"}',
# 'token':'cb2ef40ca2fee03a099f7da78ca07384228f00f023026c77a4',
# 'body-html':"""\r\n\r\n<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\r\n<html>\r\n <head>\r\n <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\r\n <!-- Responsive Design -->\r\n <!-- Facebook sharing information tags -->\r\n <img src="http://click.morning7.theskimm.com/open.aspx?ffcb10-ff2d11787561-fe8b1d737d6d077c76-fe881372756c027a7c-ff9d1670-fe8c1d737d6c067d70-fefc15727c6502" width="1" height="1">\r\n <meta property="og:image" content="http://cdn.theskimm.com/assets/skimm-fb-logo.png">\r\n <meta name="viewport" content="width=device-width">\r\n\r\n <style type="text/css">\r\n body{\r\n color:#000 !important;\r\n }\r\n p.skimm-p a,a,a:link,a:hover,a:visited{\r\n color:#009f9c!important;\r\n text-decoration:none;\r\n }\r\n a:hover{\r\n text-decoration:underline;\r\n }\r\n p{\r\n font-family:Helvetica,Arial,sans-serif;\r\n font-size:15px;\r\n line-height:20px;\r\n letter-spacing:0em;\r\n color:#000;\r\n margin:0;\r\n padding:0;\r\n }\r\n #logo{\r\n text-decoration:none;\r\n display:block;\r\n padding-top:18px;\r\n margin:0 auto;\r\n }\r\n #missed{\r\n padding:34px 0;\r\n }\r\n #missed p{\r\n text-align:center;\r\n padding:0 0 3px;\r\n font-size:14px;\r\n }\r\n #sharing{\r\n padding:24px 0 32px;\r\n margin:0 auto 35px;\r\n background:#009f9b;\r\n width:100%;\r\n }\r\n #sharing h2{\r\n font-family:Helvetica,Arial,sans-serif;\r\n font-weight:bold;\r\n text-transform:uppercase;\r\n text-align:center;\r\n letter-spacing:0.28em;\r\n padding:0 0 24px;\r\n margin:0;\r\n font-style:normal;\r\n font-size:13px;\r\n color:#fff;\r\n }\r\n #sharing .share_icons{\r\n margin:0 auto;\r\n text-align:center;\r\n }\r\n #sharing .share_icons .share{\r\n display:inline-block;\r\n text-transform:uppercase;\r\n color:#fff;\r\n text-decoration:none;\r\n text-align:center;\r\n margin-right:15px;\r\n }\r\n #sharing .share_icons .share img{\r\n display:block;\r\n font-size:28px;\r\n margin:0 auto 10px;\r\n }\r\n #sharing .share_icons span:last-child .share:last-child{\r\n margin-left:7px;\r\n }\r\n #sharing .share_icons .share:last-child img{\r\n margin:0 auto 8px;\r\n }\r\n #sharing .share_icons .share span{\r\n display:block;\r\n font-family:Helvetica,Arial,sans-serif;\r\n font-size:11px;\r\n font-weight:bold;\r\n letter-spacing:3px;\r\n }\r\n .img_el{\r\n margin:0 auto 22px;\r\n display:block;\r\n }\r\n .retinaonlyicon{\r\n width:46px;\r\n height:49px;\r\n }\r\n .theskimm{\r\n text-transform:none !important;\r\n }\r\n #rss-content p,#rss-content h1,#rss-content h2,#rss-content h3,#rss-content img,#rss-content hr{\r\n margin-left:auto;\r\n margin-right:auto;\r\n }\r\n .skimm-birthdays,.skimm-shareus,.skimm-gift,.skimm-life{\r\n padding-bottom:15px !important;\r\n }\r\n .skimm-h3.skimm-shareus{\r\n background:url(http://cdn.theskimm.com/email/3/normal/skimmsend_icon.png) no-repeat 50% 0;\r\n text-align:center;\r\n padding-top:50px;\r\n margin-top:20px;\r\n }\r\n .skimm-p{\r\n line-height:23px;\r\n color:#000;\r\n font-family:Helvetica,Arial,sans-serif;\r\n font-size:16px;\r\n padding-bottom:15px !important;\r\n }\r\n .share-jumpto-links{\r\n margin-top:0px !important;\r\n margin-bottom:12px !important;\r\n margin-left:auto;\r\n margin-right:auto;\r\n }\r\n .skimm-h1{\r\n font-family:Helvetica,Arial,sans-serif;\r\n font-size:22px !important;\r\n font-weight:bold;\r\n color:#000;\r\n border-bottom:3px solid #00A49F;\r\n padding:12px 0 !important;\r\n margin-top:8px;\r\n margin-bottom:24px;\r
# """,
# 'References':'<517AC78B.5060404@newsletters.newsblur.com>',
# 'signature':'1369fa4dcc7de7fac51f5bb408bd5c9daa8730e80d394e8a128658d74e66904skimm2',
# 'Content-Type':'multipart/mixed; boundary="------------020601070403020003080006"',
# 'Subject':'Test Newsletter theskimm'
# }
2020-06-08 10:44:59 -04:00
params = request.POST
2024-04-24 09:43:56 -04:00
response = HttpResponse("OK")
if settings.DEBUG or "samuel" in params.get("To", ""):
2016-11-14 11:11:36 -08:00
logging.debug(" ---> Email newsletter: %s" % params)
2024-04-24 09:43:56 -04:00
2021-10-01 15:23:47 -04:00
if not params or not len(params.keys()):
logging.debug(" ***> Email newsletter blank body: %s" % request.body)
raise Http404
2024-04-24 09:43:56 -04:00
email_newsletter = EmailNewsletter()
story = email_newsletter.receive_newsletter(params)
2024-04-24 09:43:56 -04:00
if not story:
raise Http404
2024-04-24 09:43:56 -04:00
return response
2024-04-24 09:43:56 -04:00
def newsletter_story(request, story_hash):
try:
story = MStory.objects.get(story_hash=story_hash)
except MStory.DoesNotExist:
raise Http404
story = Feed.format_story(story)
2024-04-24 09:43:56 -04:00
return HttpResponse(story["story_content"])