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
2016-02-09 16:22:22 -08:00
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
2016-02-09 13:43:57 -08:00
2024-04-24 09:43:56 -04:00
2016-02-09 13:43:57 -08: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 .
"""
2016-02-09 17:14:59 -08:00
# params = {
# 'stripped-signature':'Thanks,\nBob',
# 'From':'Test mailer <samuel@ofbrooklyn.com>',
# 'attachment-count':'2',
# 'To':'Alice <alice@newsletters.newsblur.com>',
2016-11-17 11:07:05 -08:00
# 'subject':'Test Newsletter The Skimm',
2016-02-09 17:14:59 -08:00
# '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"> <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.',
2016-11-17 11:07:05 -08:00
# 'recipient':'samuel-555551235342@newsletters.newsblur.com',
2016-02-09 17:14:59 -08:00
# 'sender':'samuel@ofbrooklyn.com',
# 'X-Mailgun-Variables':'{"my_var_1": "Mailgun Variable #1", "my-var-2": "awesome"}',
# 'token':'cb2ef40ca2fee03a099f7da78ca07384228f00f023026c77a4',
2016-11-17 11:07:05 -08:00
# '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
# """,
2016-02-09 17:14:59 -08:00
# 'References':'<517AC78B.5060404@newsletters.newsblur.com>',
2016-11-17 11:07:05 -08:00
# 'signature':'1369fa4dcc7de7fac51f5bb408bd5c9daa8730e80d394e8a128658d74e66904skimm2',
2016-02-09 17:14:59 -08:00
# 'Content-Type':'multipart/mixed; boundary="------------020601070403020003080006"',
2016-11-17 11:07:05 -08:00
# 'Subject':'Test Newsletter theskimm'
2016-02-09 17:14:59 -08:00
# }
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 ( ) ) :
2021-10-01 09:08:26 -04:00
logging . debug ( " ***> Email newsletter blank body: %s " % request . body )
raise Http404
2024-04-24 09:43:56 -04:00
2016-02-09 16:22:22 -08:00
email_newsletter = EmailNewsletter ( )
2016-05-19 20:38:53 -07:00
story = email_newsletter . receive_newsletter ( params )
2024-04-24 09:43:56 -04:00
2016-02-09 16:22:22 -08:00
if not story :
raise Http404
2024-04-24 09:43:56 -04:00
2016-02-09 16:22:22 -08:00
return response
2024-04-24 09:43:56 -04:00
2016-02-09 16:22:22 -08:00
def newsletter_story ( request , story_hash ) :
2019-10-03 17:33:59 -04:00
try :
story = MStory . objects . get ( story_hash = story_hash )
except MStory . DoesNotExist :
raise Http404
2016-02-09 16:22:22 -08:00
story = Feed . format_story ( story )
2024-04-24 09:43:56 -04:00
return HttpResponse ( story [ " story_content " ] )