コード例 #1
0
ファイル: tasks.py プロジェクト: pittsw/Encouragement
def incoming_message(phone_number, message,network="safaricom"):
	"""Adds an incoming message to the database.
	"""
	
	#transport logging
	import logging
	#transport_logger = logging.getLogger("logview.transport")
	#transport_logger.info('recieved,%s,"%s",%s'%(phone_number,message,network))
	#print >> sys.stderr, 'recieved,%s,"%s",%s'%(phone_number,message,network)
	
	clients = _patients.Client.objects.filter(phone_number=phone_number)
	if len(clients) == 0:
		# recieved a message from a phone number not in database
		if len(message.strip()) == 5: #compare to key length in patients.models
			message = message.strip().upper()
			#check if message is equal to a valid key
			for client in _patients.Client.objects.filter():
				if message.upper() == client.generate_key():
					if client.validated: #new number for already valid client
						Email.template_email('valid_repeat',**{'client':client,'phone_number':phone_number,'network':network,"message":message})
						return False
					Email.template_email('number_change',**{'client':client,'phone_number':phone_number,'network':network,"message":message})
					#update phone number and network
					client.phone_number = phone_number 
					#client.phone_network = network #Don't change network since we aren't using Artiel
					client.validated = True
					client.save()
					return True
		#if the the message is not a valid key
		Email.template_email('number_not_found',**{'phone_number':phone_number,'message':message})
		return False
	#recieved a message from a phone number in the database
	else:
		client = clients[0]
		if len(message.strip()) == 5 and message.strip().upper() == client.generate_key():
			client.validated = True
			client.save()
			return True
		if re.match("^[S7]\s*[T8]\s*[O6]\s*[P7]$",message.strip().upper()):
			Email.template_email('dropped',**{'client':client})
			client.pregnancy_status = "Stopped"
			client.save()
			return True
		_patients.Message(
			client_id=client,
			user_id=None,
			sent_by='Client',
			content=message,
		).save()
		#reset state on clilent
		client.last_msg_client = datetime.date.today()
		client.repeat_msg = 0
		client.urgent=False
		client.pending = F('pending') + 1
		client.save()
		return True
コード例 #2
0
setup_environ(settings)

import backend.models as backend
import patients.tasks as tasks
import patients.models as patients

from transport_email import Transport as Email
#--------- End Django Framework ---------#

runner = tasks.message_runner(options)

#get clients 
if options.all or options.auto:
	runner.send_automated_messages()
if options.all or options.visits:
	runner.send_up_coming()
if options.all or options.resend:
	runner.send_repeat()

content = runner.content()

if options.email:
	subject = "Automatic Messages {auto} {visit} {resend}".format(**runner.values)

	Email.email(subject,content)
else:
	print content