Пример #1
0
 def post(self):
     q_id = int(self.request.get('q_id'))
     q = QueueEntry.get_by_id(q_id)
     twilio_settings = TwilioSettings.all().get()
     schedule = SMSSchedule.all().get()
     tclient = TwilioRestClient(twilio_settings.account_sid, twilio_settings.auth_token)
     if q and q.status == 'P':
         employees = Employee.all()
         for employee in employees:
             entry = ReportingEntry.all().filter('reporting_date = ', q.report_date).filter('mobile_number =', employee.mobile_number).get()
             if not entry:
                 entry = ReportingEntry(name = employee.name, 
                            mobile_number = employee.mobile_number,
                            email = employee.email,
                            reporting_date = q.report_date,
                            reporting_location = "NOT REPORTED",
                            reporting_time = None,
                            employee = employee)
                 entry.put() 
             if schedule.status=='Active':                
                 tclient.sms.messages.create(to = employee.mobile_number, from_ = twilio_settings.twilio_number, body = schedule.message[:160])
                 smslog = SMSLog(message = schedule.message[:160],
                                 from_number = twilio_settings.twilio_number,
                                 to_number = employee.mobile_number,
                                 direction = 'outgoing-scheduled',
                                 employee_name = employee.name)
                 smslog.put()
         q.status = 'S'
         q.save()
Пример #2
0
 def get(self):
     try:
         schedule = SMSSchedule.all().get()
         result_dict = {'success':True,'schedule':schedule.to_dict()}
     except:
         result_dict = {'success':False}            
     self.response.headers['Content-Type'] = 'application/json'
     self.response.out.write(json.dumps(result_dict))
Пример #3
0
 def get(self):
     fromNumber = self.request.get('From')
     to = self.request.get('To')
     body = self.request.get('Body')
     if fromNumber != '':
         fromNumber =  fromNumber[-10:]
     smslog_incoming = SMSLog(message = body,
                     from_number = fromNumber,
                     to_number = to,
                     direction = 'incoming',
                     employee_name = '** NOT AN EMPLOYEE')
     
     employee = Employee.all().filter('mobile_number =', fromNumber).get()
     utc = timezone.UTC()
     est = timezone.Eastern_tzinfo()
     now = datetime.now()
     in_est = now.replace(tzinfo=utc).astimezone(est)
     schedule = SMSSchedule.all().get()
     if employee:
         smslog_incoming.employee_name = employee.name
         smslog_incoming.put()
         entry = ReportingEntry.all().filter('reporting_date = ', in_est.date()).filter('mobile_number =', employee.mobile_number).get()
         if not entry:
             entry = ReportingEntry(name = employee.name, 
                            mobile_number = employee.mobile_number,
                            email = employee.email,
                            reporting_date = in_est.date(),
                            reporting_location = body,
                            employee = employee)
             entry.put()
         else:
             entry.reporting_location = body
             entry.save()           
         logging.debug(" From: %s"%fromNumber)
         if schedule and schedule.auto_reply_enabled=='Y' and schedule.auto_reply!=None and schedule.auto_reply!='':
             r = twiml.Response()
             r.sms(schedule.auto_reply[:160])
             smslog = SMSLog(message = schedule.auto_reply[:160],
                     from_number = to,
                     to_number = fromNumber,
                     direction = 'outgoing-reply',
                     employee_name = employee.name)
             smslog.put()
             self.response.out.write(r)
Пример #4
0
 def get(self):
     try:
         schedule = SMSSchedule.all().get()
         now = datetime.now()
         utc = UTC()
         est = Eastern_tzinfo()
         in_est = now.replace(tzinfo=utc).astimezone(est)
         est_date = in_est.date()
         if est_date.weekday() < 5 :
             eta = datetime.combine(est_date, time(int(schedule.scheduled_time)))
             eta_est = eta.replace(tzinfo=est)
             all_pending = QueueEntry.all().filter('status =', 'P')
             db.delete(all_pending)            
             q = QueueEntry(status="P",report_date=est_date,eta=eta_est)
             q.put()
             taskqueue.add(url='/sendSms', params={'q_id':q.key().id()}, eta = eta_est)
             result_dict = {'success':True,'message':'Queued'}
         else:
             result_dict = {'success':True,'message':'Not a working weekday'}
     except:
         result_dict = {'success':False,'message':'Cron job failed'}
         
     self.response.headers['Content-Type'] = 'application/json'
     self.response.out.write(json.dumps(result_dict))
Пример #5
0
 def post(self):
     try:
         message = self.request.get('message')
         scheduled_time = self.request.get('time')
         status = self.request.get('status')
         auto_reply = self.request.get('reply_message')
         auto_reply_enabled = self.request.get('reply_enabled')
         schedule = SMSSchedule.all().get()
         if schedule == None:
             schedule = SMSSchedule(message = message, scheduled_time = scheduled_time, status = status,auto_reply = auto_reply,auto_reply_enabled=auto_reply_enabled)
             schedule.put()
         else:
             schedule.message = message
             schedule.scheduled_time = scheduled_time
             schedule.status = status
             schedule.auto_reply_enabled = auto_reply_enabled
             schedule.auto_reply = auto_reply
             schedule.save()
         result_dict = {'success':True,'schedule':schedule.to_dict()}
     except:
         result_dict = {'success':False}
     self.response.headers['Content-Type'] = 'application/json'
     self.response.out.write(json.dumps(result_dict))