def doRestCallWithExceptionHandling(url, jsonStr, k): print("Data: " + jsonStr) try: response = requests.post(url, data=jsonStr) print("Result: " + str(response.status_code)) print("Msg: " + response.text) except: print("Could not record result: ", sys.exc_info()[0]) sendemail.send('*****@*****.**', '*****@*****.**', 'Can' 't connect to IOT endpoint - ' + k, 'Help!')
def sendMail(self): """Send alter mail when ping failed. """ content = '<table><thead><tr><th>IP</th><th>DOWN</th></tr></thead><tbody>' for f in self.failedList: content += '<tr><td style="padding: 8px;line-height: 20px;vertical-align: top;border-top: 1px solid #ddd;">' content += f + '</td>' content += '<td style="color: red;padding: 8px;line-height: 20px;vertical-align: top;border-top: 1px solid #ddd;">yes</td>' content += '</tbody></table>' mailConfig = settings.get_mail() sendemail.send(mailConfig.get('FromAddr'), mailConfig.get('ToAddr'), mailConfig.get('SMTPServer'), content)
def send_test_addons(request,email_id,email_address): if not re.match(r"[^@]+@[^@]+\.[^@]+", email_address): return HttpResponse("Not a valid email.") else: email = DeadlineEmail.objects.get(id=email_id) options = DeadlineOption.objects.filter(campaign=email.option.campaign) body = email.content_beginning for option in options: add_ons = DeadlineAddOn.objects.filter(email=email,option=option) for add_on in add_ons: body += add_on.content body += """ """ body += email.content_end deadline_utc = datetime.now().strftime("%b %d, %Y") slug = email.option.campaign.slug unsubscribe_link = "" overview_url = "%s%s" % (settings.CAMPAIGN_URL.get(slug), reverse('campaigns:overview', args=(slug,))) home_url = settings.CAMPAIGN_URL.get(slug) logo_url = "%s/static/images/%s_email_logo.png" % (home_url, slug) fromName = email.option.campaign.name fromAddress = settings.CAMPAIGN_FROM_ADDRESS.get(slug) send( email.subject, body, email_address, fromName, fromAddress, { "{{name}}":"Baydin", "{{deadline}}":"Jan 01, 2000", "{{unsubscribe}}":unsubscribe_link, "{{overview_url}}":overview_url, "{{HOME_URL}}":home_url, "{{CAMPAIGN_NAME}}":email.option.campaign.name, "{{LOGO_URL}}":logo_url, "{{CAMPAIGN_SLUG}}":slug, } ) return render(request, 'campaigns/email.html', { 'email': email, 'body':body, 'campaign_slug':slug, 'email_address':email_address, })
detectedflux = float(flux) * float(area) * float(solidangle) * float(selectionefficiency) rateperhour = detectedflux * 60 * 60 n = int(rateperhour * float(numberofhours)) print time.asctime( time.localtime() ), "Cosmic Ray Iron Flux is", flux, "Simulated Area is", area, "Field of View is", solidangle, "Detected Flux is", detectedflux print time.asctime( time.localtime() ), "Rate per hour", rateperhour, "Simulated Hours", numberofhours, "Simulated Events", n with open( "/afs/desy.de/user/s/steinrob/Documents/DESY/positioning/orientations/" + orientation + ".csv", "rb" ) as csvfile: reader = csv.reader(csvfile, delimiter=",", quotechar="|") rowcount = 0 for row in reader: rowcount += 1 s.run(eff, rowcount, mincount=mincount, text=False, graph=False, output=sourcedata, layout=orientation, number=n) bp.run(sourcedata, processdata, int(mincount), rowcount, text=False) br.run(processdata, reconstructdata, rowcount, reconstructiongridwidth, eff) message = str(time.asctime(time.localtime())) + " Completed simulation of " + str(n) + " events!" import os, sys import sendemail as se name = os.path.basename(__file__) se.send(name, message, False)
b = None count = 0 #For each entry, check if any of the values match one from the previous entry #After checking and counting any duplicate, the dynamic variables are reassigned for i in range(nt.GetEntries()): runNumberBranch.GetEntry(i) eventNumberBranch.GetEntry(i) if (runNumber[0] == a) & (eventNumber[0] == b) : count += 1 if cfg.output == True: print a, b print runNumber[0], eventNumber[0] else: pass a = runNumber[0] b = eventNumber[0] #Produces an output message with the duplicate number. Then sends an email notification. message = str(time.asctime(time.localtime())) + " For the tree " + str(cfg.tree) +".root, out of " + str(nt.GetEntries()) + " total events, there are " + str(count) + " entries with at least one duplicate value from the previous entry." print message import os, sys sys.path.append('/home/rstein/pythonscripts/misc') import sendemail as se name = os.path.basename(__file__) se.send(name, message)
print time.asctime( time.localtime() ), "Rate per hour", rateperhour, "Simulated Hours", numberofhours, "Simulated Events", n with open( "/afs/desy.de/user/s/steinrob/Documents/DESY/positioning/orientations/" + orientation + ".csv", 'rb') as csvfile: reader = csv.reader(csvfile, delimiter=',', quotechar='|') rowcount = 0 for row in reader: rowcount += 1 s.run(eff, rowcount, mincount=mincount, text=False, graph=False, output=sourcedata, layout=orientation, number=n) bp.run(sourcedata, processdata, int(mincount), rowcount, text=False) br.run(processdata, reconstructdata, rowcount, reconstructiongridwidth, eff) message = str(time.asctime( time.localtime())) + " Completed simulation of " + str(n) + " events!" import os, sys import sendemail as se name = os.path.basename(__file__) se.send(name, message, False)
mincount=cfg.mincount, text=cfg.text, graph=cfg.graph, output=sourcedata, layout=cfg.orientation, number=n) bp.run(sourcedata, processdata, int(cfg.mincount), rowcount, text=cfg.text) br.run(processdata, reconstructdata, rowcount, cfg.reconstructiongridwidth, eff) message = str(time.asctime( time.localtime())) + " Completed simulation of " + str(n) + " events!" print message import os, sys import sendemail as se name = os.path.basename(__file__) se.send(name, message) if cfg.plotcut: allcounts = cc.run(reconstructdata, rowcount, int(cfg.mincount)) sys.path.append('/d6/rstein/Hamburg-Cosmic-Rays/BDT') import BDT BDT.run(reconstructdata, rowcount, int(cfg.mincount), allcounts) llcuts = oz.run(reconstructdata + "_BDT", rowcount, int(cfg.mincount), cfg.graph, allcounts) print llcuts pl.run(reconstructdata + "_BDT", rowcount, int(cfg.mincount), cfg.graph, llcuts, allcounts) pz.run(reconstructdata + "_BDT", rowcount, int(cfg.mincount), cfg.graph, llcuts, allcounts)
str(time.asctime(time.localtime(time.time())))) rpt_int = int(input('Input desired report interval in seconds ')) print('Reports every ', rpt_int, ' seconds') print('CTRL-C to exit') while True: time_new = time.time() + rpt_int rate_cnt = 0 while time.time() <= time_new: try: None #print(GPIO.input(inpt), end='') GPIO.input(inpt) time.sleep(0.1) except KeyboardInterrupt: print('CTRL-C - exiting') GPIO.cleanup() print('Done') sys.exit() LperM = round(((rate_cnt * constant) / (rpt_int / 60)), 2) if (LperM > 0): sendemail.send('*****@*****.**', '*****@*****.**', 'Flow detected', 'Flow:' + str(LperM)) TotLit = round(tot_cnt * constant, 1) print('\nLitres / min ', LperM, '(', rpt_int, ' second sample)') print('Total litres ', TotLit) GPIO.cleanup() print('Done')
r += 1 if outputStr == "": log.debug("something failed or no sites...trying again") time.sleep(period) driver.refresh() continue if lastOutputStr != outputStr: email_content = outputStr email_content += "<BR><BR>" email_content += url if lastOutputStr != "": email_content += "<BR>NEW CANCELLATION!<BR>" log.debug("NEW CANCELLATION!") sendemail.send(email_content) else: # send first one email_content += "<BR>INITIAL <BR>" sendemail.send(email_content) log.debug(outputStr) else: log.debug("no change") lastOutputStr = outputStr # keep checking time.sleep(period) driver.refresh() # close window when done driver.close()
def send_test(request,email_id,email_address): if not re.match(r"[^@]+@[^@]+\.[^@]+", email_address): return HttpResponse("Not a valid email.") else: DEADLINE = 'deadline' FIXED = 'fixed' RELATIVE = 'relative' try: email = DeadlineEmail.objects.get(id=email_id) type = DEADLINE except(ObjectDoesNotExist): try: email = FixedEmail.objects.get(id=email_id) type = FIXED except(ObjectDoesNotExist): email = Email.objects.get(id=email_id) type = RELATIVE if type == FIXED: print email_address unsubscribe_link = "" slug = email.option.campaign.slug overview_url = "%s%s" % (settings.CAMPAIGN_URL.get(slug), reverse('campaigns:overview', args=(slug,))) home_url = settings.CAMPAIGN_URL.get(slug) logo_url = "%s/static/images/%s_email_logo.png" % (home_url,slug) current_year = datetime.now().year next_year = str(current_year + 1) last_year = str(current_year - 1) week = datetime.now() + timedelta(days=7) fourdays = datetime.now() + timedelta(days=4) fromName = email.option.campaign.name fromAddress = settings.CAMPAIGN_FROM_ADDRESS.get(slug) send( email.subject, email.content, email_address, email.option.campaign.name, fromAddress, { "{{name}}":"Baydin", "{{unsubscribe}}":unsubscribe_link, "{{overview_url}}":overview_url, "{{HOME_URL}}":settings.CAMPAIGN_URL.get(slug), "{{CAMPAIGN_NAME}}":email.option.campaign.name, "{{LOGO_URL}}":logo_url, "{{year}}":str(current_year), "{{year+}}":next_year, "{{year-}}":last_year, "{{week+}}":week.strftime("%A, %B %e"), "{{four_days}}":fourdays.strftime("%A, %B %e"), "{{CAMPAIGN_SLUG}}":slug, } ) return render(request, 'campaigns/email.html', { 'email': email, 'campaign_slug':slug, 'email_address':email_address, }) elif type == DEADLINE: body = email.content_beginning body += email.content_end deadline_utc = datetime.now().strftime("%b %d, %Y") slug = email.option.campaign.slug unsubscribe_link = "" overview_url = "%s%s" % (settings.CAMPAIGN_URL.get(slug), reverse('campaigns:overview', args=(slug,))) home_url = settings.CAMPAIGN_URL.get(slug) logo_url = "%s/static/images/%s_email_logo.png" % (home_url, slug) fromName = email.option.campaign.name fromAddress = settings.CAMPAIGN_FROM_ADDRESS.get(slug) send( email.subject, body, email_address, fromName, fromAddress, { "{{name}}":"Baydin", "{{deadline}}":"Jan 01, 2001", "{{unsubscribe}}":unsubscribe_link, "{{overview_url}}":overview_url, "{{HOME_URL}}":home_url, "{{CAMPAIGN_NAME}}":email.option.campaign.name, "{{LOGO_URL}}":logo_url, "{{CAMPAIGN_SLUG}}":slug, } ) return render(request, 'campaigns/email.html', { 'email': email, 'body':body, 'campaign_slug':slug, 'email_address':email_address, }) else: return HttpResponse("Automatic tests for relative email unavailable. Alter times and try test subscriptions.")
def unsubscribe(request,subscriber_id,subscriber_email_address,campaign_slug): # subscriber = get_object_or_404(Subscriber,id=subscriber_id) campaign = get_object_or_404(Campaign,slug=campaign_slug) try: subscriber = Subscriber.objects.get(id=subscriber_id,email_address=subscriber_email_address) subscriptions = Subscription.objects.filter(subscriber=subscriber) except(ObjectDoesNotExist): analytics = settings.ANALYTICS.get(campaign.slug) message = """ <p class='centered'> Subscription not found. </p> """ return render(request, 'campaigns/unsubscribe_confirmation.html', { 'campaign':campaign, 'analytics':analytics, 'message':message, }) if request.method == 'GET': return render(request, 'campaigns/unsubscribe.html', { 'subscriptions': subscriptions, 'subscriber':subscriber, 'campaign':campaign, }) else: for subscription in subscriptions: try: subject = subscription.subscription.campaign.unsubscribe_subject body = subscription.subscription.campaign.unsubscribe_content slug = subscription.subscription.campaign.slug fromName = subscription.subscription.campaign.name except(AttributeError): subject = subscription.subscription.unsubscribe_subject body = subscription.subscription.unsubscribe_content slug = subscription.subscription.slug fromName = subscription.subscription.name overview_url = "%s%s" % (settings.CAMPAIGN_URL.get(campaign.slug),reverse('campaigns:overview', args=(slug,))) home_url = settings.CAMPAIGN_URL.get(campaign.slug) logo_url = "%s%s" % (settings.CAMPAIGN_URL.get(campaign.slug),staticfiles_storage.url("images/%s_email_logo.png" % campaign.slug)) unsubscribe_link = "%s%s" % (settings.CAMPAIGN_URL.get(campaign.slug),reverse('campaigns:unsubscribe', args=(campaign.slug,subscriber.id,subscriber.email_address))) fromName = campaign.name fromAddress = settings.CAMPAIGN_FROM_ADDRESS.get(campaign.slug) send( subject, body, subscriber.email_address, fromName, fromAddress, { "{{name}}":subscriber.name, "{{overview_url}}":overview_url, "{{HOME_URL}}":home_url, "{{CAMPAIGN_NAME}}":campaign.name, "{{LOGO_URL}}":logo_url, "{{unsubscribe}}":unsubscribe_link, "{{CAMPAIGN_SLUG}}":campaign.slug, } ) analytics = settings.ANALYTICS.get(campaign.slug) message = """ <p class='centered'> We're sad to see you go, %s </p> <p class='centered'> Maybe we'll see you around. </p> """ % subscriber.name subscriber.delete() return render(request, 'campaigns/unsubscribe_confirmation.html', { 'subscriber': subscriber, 'campaign':campaign, 'analytics':analytics, 'message':message, })
def campaign(request,campaign_slug): campaign = get_object_or_404(Campaign,slug=campaign_slug) ##Determine which type of Campaign DEADLINE = 'deadline' FIXED = 'fixed' RELATIVE = 'relative' try: campaign = DeadlineCampaign.objects.get(slug=campaign_slug) options = DeadlineOption.objects.filter(campaign=campaign) type = DEADLINE except(ObjectDoesNotExist): try: campaign = FixedCampaign.objects.get(slug=campaign_slug) options = FixedOption.objects.filter(campaign=campaign) type = FIXED except(ObjectDoesNotExist): campaign = RelativeStartCampaign.objects.get(slug=campaign_slug) type = RELATIVE if type == RELATIVE: if request.method == 'GET': form = RelativeStartForm() else: # A POST request: Handle Form Upload form = RelativeStartForm(request.POST) # Bind data from request.POST into a PostForm # If data is valid, proceeds to create a new post and redirect the user if form.is_valid(): ###Save Data name = form.cleaned_data['name'] name = name[0].upper() + name[1:] email_address = form.cleaned_data['email_address'] subscriber = Subscriber.objects.create(name=name, email_address=email_address) subscription = Subscription.objects.create(subscriber=subscriber, subscription=campaign) #send email with appropriate shortcodes replaced unsubscribe_link = "%s%s" % (settings.CAMPAIGN_URL.get(campaign.slug),reverse('campaigns:unsubscribe', args=(campaign.slug,subscriber.id,subscriber.email_address))) overview_url = "%s%s" % (settings.CAMPAIGN_URL.get(campaign.slug),reverse('campaigns:overview', args=(campaign.slug,))) home_url = "%s%s" % (settings.CAMPAIGN_URL.get(campaign.slug),reverse('campaigns:campaign', args=(campaign.slug,))) logo_url = "%s%s" % (settings.CAMPAIGN_URL.get(campaign.slug),staticfiles_storage.url("images/%s_email_logo.png" % campaign.slug)) fromName = campaign.name fromAddress = settings.CAMPAIGN_FROM_ADDRESS.get(campaign.slug) send( campaign.welcome_subject, campaign.welcome_content, email_address, fromName, fromAddress, { "{{name}}":name, "{{unsubscribe}}":unsubscribe_link, "{{overview_url}}":overview_url, "{{HOME_URL}}":home_url, "{{CAMPAIGN_NAME}}":campaign.name, "{{LOGO_URL}}":logo_url, "{{CAMPAIGN_SLUG}}":campaign.slug, } ) ###Put Emails in Queue timezone = request.POST['timezone'] utc_zone = tz.gettz('UTC') local_zone = tz.gettz(timezone) #date subscribed in database is saved as UTC date_subscribed_utc = subscriber.date_subscribed.replace(tzinfo=utc_zone) #convert date_subscribed to local to perform calculations of emails date_subscribed_local = date_subscribed_utc.astimezone(local_zone) emails = RelativeStartEmail.objects.filter(campaign=campaign) for email in emails: #date = datetime(2002, 10, 10, 6, 0, 0) send_date_local = date_subscribed_local #add number of months from subscription this email should be sent if email.delta_months > 0: for dt in rrule.rrule(rrule.MONTHLY, dtstart=send_date_local, bymonthday=(send_date_local.day, -1), bysetpos=1, count=email.delta_months+1): send_date_local = dt #add number of days from subscription this email should be sent if email.delta_days > 0: for dt in rrule.rrule(rrule.DAILY, dtstart=send_date_local, count=email.delta_days+1): send_date_local = dt #get strict value of time email should be sent send_time = email.send_time.replace(tzinfo=None) #add this strict value of time to local send time send_date_local = send_date_local.replace(hour=send_time.hour,minute=send_time.minute,second=send_time.second) #convert calucalted send date back to UTC send_date_utc = send_date_local.astimezone(utc_zone) #add email to queue with UTC time queue = EmailQueue.objects.create(send_date=send_date_utc,subscription=subscription,email=email) ###Display Thank you screen analytics = settings.ANALYTICS.get(campaign.slug) return render(request, 'campaigns/thanks.html', { 'subscriber': subscriber,'campaign':campaign,'analytics':analytics, }) overview_url = reverse('campaigns:overview',args=(campaign.slug,)) description_text = campaign.description.replace("{{overview_url}}",overview_url) analytics = settings.ANALYTICS.get(campaign.slug) title = settings.CAMPAIGN_TITLE_LANDING.get(campaign.slug) meta = settings.CAMPAIGN_LANDING_META.get(campaign.slug) return render(request, 'campaigns/subscribe.html', { 'form': form,'campaign':campaign,'description_text':description_text, 'analytics':analytics,'title':title,'meta':meta, }) elif type == DEADLINE: if request.method == 'GET': form = DeadlineForm(campaign=campaign) else: # A POST request: Handle Form Upload form = DeadlineForm(request.POST,campaign=campaign) # Bind data from request.POST into a PostForm # If data is valid, proceeds to create a new post and redirect the user if form.is_valid(): ###Save Data name = form.cleaned_data['name'] name = name[0].upper() + name[1:] email_address = form.cleaned_data['email_address'] deadline = form.cleaned_data['deadline'] options = form.cleaned_data['options'] timezone = request.POST['timezone'] utc_zone = tz.gettz('UTC') local_zone = tz.gettz(timezone) #deadline given is in local deadline_local = deadline.replace(tzinfo=local_zone) #convert deadline to UTC to store deadline_utc= deadline_local.astimezone(utc_zone) subscriber = Subscriber.objects.create(name=name, email_address=email_address,deadline=deadline_utc) required_options = DeadlineOption.objects.filter(campaign=campaign,required=True) all_options = chain(required_options, options) ###Calculate ranges for each Welcome Email now_utc = datetime.utcnow().replace(tzinfo=utc_zone) before_date = now_utc + relativedelta(weeks=-campaign.ontime_margin_in_weeks) after_date = now_utc + relativedelta(weeks=campaign.ontime_margin_in_weeks) first_email = deadline_local #we're going to store the earliest email this subscriber would get to calculate appropriate welcome first_email_id = -2 first_email_sent = deadline_utc first_email_months = str(0); for option in all_options: subscription = Subscription.objects.create(subscriber=subscriber, subscription=option) #Add Emails for each option to EmailQueue emails = DeadlineEmail.objects.filter(option=option) for email in emails: #date = datetime(2002, 10, 10, 6, 0, 0) send_date_local = deadline_local + timedelta(days=-email.delta_days) + relativedelta(months=-email.delta_months) #get strict value of time email should be sent send_time = email.send_time.replace(tzinfo=None) #add this strict value of time to local send time send_date_local = send_date_local.replace(hour=send_time.hour,minute=send_time.minute,second=send_time.second) #convert calucalted send date back to UTC send_date_utc = send_date_local.astimezone(utc_zone) now_utc = datetime.utcnow().replace(tzinfo=utc_zone) #if this intended send time is earlier than current earliest, save if first_email > send_date_utc: first_email = send_date_utc first_email_id = email.id #only add to queue if its send date has yet to happen if send_date_utc > now_utc: queue = EmailQueue.objects.create(send_date=send_date_utc,subscription=subscription,email=email) if first_email_sent > send_date_utc and send_date_utc > now_utc: first_email_sent = send_date_utc first_email_months = str(email.delta_months) months_away = 0 for r in rrule.rrule(rrule.MONTHLY, bymonthday=(deadline_utc.day, -1), bysetpos=1, dtstart=now_utc, until=deadline_utc): months_away += 1 ###Send Appropriate Welcome Email if after_date > first_email and before_date < first_email: subject = campaign.welcome_subject body = campaign.welcome_content EmailQueue.objects.filter(subscription=subscription,object_id=first_email_id).delete() elif after_date > first_email: subject = campaign.after_welcome_subject body = campaign.after_welcome_content else: subject = campaign.before_welcome_subject body = campaign.before_welcome_content #Send welcome email email with approrpaite information unsubscribe_link = "%s%s" % (settings.CAMPAIGN_URL.get(campaign.slug),reverse('campaigns:unsubscribe', args=(campaign.slug,subscriber.id,subscriber.email_address))) overview_url = "%s%s" % (settings.CAMPAIGN_URL.get(campaign.slug),reverse('campaigns:overview', args=(campaign.slug,))) home_url = settings.CAMPAIGN_URL.get(campaign.slug) logo_url = "%s%s" % (settings.CAMPAIGN_URL.get(campaign.slug),staticfiles_storage.url("images/%s_email_logo.png" % campaign.slug)) fromName = campaign.name fromAddress = settings.CAMPAIGN_FROM_ADDRESS.get(campaign.slug) send( subject, body, subscriber.email_address, fromName, fromAddress, { "{{name}}":name, "{{deadline}}":deadline.strftime("%b %d, %Y"), "{{first-email}}":first_email_sent.strftime("%b %d, %Y"), "{{first-email-months}}":first_email_months, "{{months-away}}":str(months_away), "{{unsubscribe}}":unsubscribe_link, "{{overview_url}}":overview_url, "{{HOME_URL}}":home_url, "{{CAMPAIGN_NAME}}":campaign.name, "{{LOGO_URL}}":logo_url, "{{CAMPAIGN_SLUG}}":campaign.slug, } ) analytics = settings.ANALYTICS.get(campaign.slug) download_calendar = True return render(request, 'campaigns/thanks.html', { 'subscriber': subscriber,'campaign':campaign, 'analytics':analytics,'download_calendar':download_calendar }) overview_url = reverse('campaigns:overview',args=(campaign.slug,)) # overview_url = request.get_host() description_text = campaign.description.replace("{{overview_url}}",overview_url) analytics = settings.ANALYTICS.get(campaign.slug) title = settings.CAMPAIGN_TITLE_LANDING.get(campaign.slug) meta = settings.CAMPAIGN_LANDING_META.get(campaign.slug) return render(request, 'campaigns/subscribe.html', { 'form': form,'campaign':campaign,'description_text':description_text, 'analytics':analytics, 'title':title,'meta':meta }) elif type == FIXED: if request.method == 'GET': form = FixedForm(campaign=campaign) else: # A POST request: Handle Form Upload form = FixedForm(request.POST,campaign=campaign) # Bind data from request.POST into a PostForm # If data is valid, proceeds to create a new post and redirect the user if form.is_valid(): name = form.cleaned_data['name'] name = name[0].upper() + name[1:] email_address = form.cleaned_data['email_address'] options = form.cleaned_data['options'] subscriber = Subscriber.objects.create(name=name, email_address=email_address) required_options = DeadlineOption.objects.filter(campaign=campaign,required=True) for required in required_options: subscription = Subscription.objects.create(subscriber=subscriber, subscription=required) for option in options: subscription = Subscription.objects.create(subscriber=subscriber, subscription=option) unsubscribe_link = "%s%s" % (settings.CAMPAIGN_URL.get(campaign.slug),reverse('campaigns:unsubscribe', args=(campaign.slug,subscriber.id,subscriber.email_address))) overview_url = "%s%s" % (settings.CAMPAIGN_URL.get(campaign.slug),reverse('campaigns:overview', args=(campaign.slug,))) home_url = settings.CAMPAIGN_URL.get(campaign.slug) logo_url = "%s%s" % (settings.CAMPAIGN_URL.get(campaign.slug),staticfiles_storage.url("images/%s_email_logo.png" % campaign.slug)) fromName = campaign.name fromAddress = settings.CAMPAIGN_FROM_ADDRESS.get(campaign.slug) current_year = datetime.now().year next_year = str(current_year + 1) last_year = str(current_year - 1) week = datetime.now() + timedelta(days=7) fourdays = datetime.now() + timedelta(days=4) send( campaign.welcome_subject, campaign.welcome_content, subscriber.email_address, fromName, fromAddress, { "{{name}}":name, "{{unsubscribe}}":unsubscribe_link, "{{overview_url}}":overview_url, "{{HOME_URL}}":home_url, "{{CAMPAIGN_NAME}}":campaign.name, "{{LOGO_URL}}":logo_url, "{{year}}":str(current_year), "{{year+}}":next_year, "{{year-}}":last_year, "{{week+}}":week.strftime("%A, %B %e"), "{{four_days}}":fourdays.strftime("%A, %B %e"), "{{CAMPAIGN_SLUG}}":campaign.slug, } ) analytics = settings.ANALYTICS.get(campaign.slug) return render(request, 'campaigns/thanks.html', { 'subscriber': subscriber,'campaign':campaign,'analytics':analytics, }) overview_url = reverse('campaigns:overview',args=(campaign.slug,)) description_text = campaign.description.replace("{{overview_url}}",overview_url) analytics = settings.ANALYTICS.get(campaign.slug) title = settings.CAMPAIGN_TITLE_LANDING.get(campaign.slug) meta = settings.CAMPAIGN_LANDING_META.get(campaign.slug) return render(request, 'campaigns/subscribe.html', { 'form': form,'campaign':campaign,'description_text':description_text, 'analytics':analytics,'title':title,'meta':meta })
# MAIN rpt_int = 300 print('Reports every ', rpt_int, ' seconds. CTRL-C to exit') while True: rate_cnt = 0 try: None time.sleep(rpt_int) except KeyboardInterrupt: print('CTRL-C - exiting') GPIO.cleanup() print('Done') sys.exit() LperM = round(((rate_cnt * constant) / (rpt_int / 60)), 2) if (LperM > 0): sendemail.send('*****@*****.**', '*****@*****.**', 'Flow event', 'Flow: ' + str(LperM)) if (rate_cnt > 0 and LperM == 0): sendemail.send( '*****@*****.**', '*****@*****.**', 'False flow', 'Flow reader read {} which rounds to zero.'.format(rate_cnt)) TotLit = round(tot_cnt * constant, 1) print('\nLitres / min ', LperM, '(', rpt_int, ' second sample)') sendFlow(LperM) GPIO.cleanup() print('Done')