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
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