コード例 #1
0
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!')
コード例 #2
0
ファイル: redis-ping.py プロジェクト: monkeymq/RedisLive
 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)
コード例 #3
0
ファイル: views.py プロジェクト: baydinsoftware/remindme
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,
			  })
コード例 #4
0

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)
コード例 #5
0
ファイル: checkduplicates.py プロジェクト: robertdstein/RISE
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)
コード例 #6
0
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)
コード例 #7
0
          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)
コード例 #8
0
ファイル: flow-rpt.py プロジェクト: rdomloge/iot-scripts
      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')
コード例 #9
0
ファイル: cancel_checker.py プロジェクト: roocell/campbook
        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()
コード例 #10
0
ファイル: views.py プロジェクト: baydinsoftware/remindme
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.")
コード例 #11
0
ファイル: views.py プロジェクト: baydinsoftware/remindme
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,
				})
コード例 #12
0
ファイル: views.py プロジェクト: baydinsoftware/remindme
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
                 })      
コード例 #13
0
ファイル: flow.py プロジェクト: rdomloge/iot-scripts
# 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')