예제 #1
0
  def post(self):
    if users.get_current_user() is None:
      self.redirect('/')

    new_phone = Phone()
    new_phone.user = users.get_current_user()
    new_phone.name = self.request.get('phone_name', 'Phone')
    new_phone.verified = False

    number = self.request.get('phone_number', '')
    if not Phone.is_valid_number(number):
      template_data = {
        'logout_url': users.create_logout_url('/'),
        'phones': Phone.all().filter('user = '******'message': "Phone number invalid.",
        'nickname': new_phone.name,
        'number': number
      }

      self.response.headers['Content-Type'] = 'text/html'
      self.response.out.write(template.render(s.template_path('phone.html'), template_data))

    else:
      new_phone.number = Phone.normalize_number(number)
      new_phone.put()
      self.redirect('/phone/')
예제 #2
0
  def post(self):
    user = users.get_current_user()
    if not user:
      self.redirect("/")

    okUser = ImokUser.all().filter('account =', user).get()

    p = Post(user=user, message='test message', lat=37., lon=-122.)
    p.unique_id = Post.gen_unique_key()
    p.put()

    registeredEmailQuery = RegisteredEmail.all().filter('userName ='******'emailAddress')
    addresses = []
    for registeredEmail in registeredEmailQuery:
      addresses.append(registeredEmail.emailAddress)
      

    templateData = {
      'post': p.message,
      'link': p.permalink(self.request.host_url),
      'user': okUser
      }
    emailBody = template.render(settings.template_path('email.txt'), templateData)

    if (len(addresses) > 0):
      mail.send_mail(sender=users.get_current_user().email(),
                     to=users.get_current_user().email(),
                     bcc=addresses,
                     subject="I'm OK",
                     body=emailBody)
      self.response.headers['Content-Type'] = 'text/plain'
      self.response.out.write(emailBody)
      return
    
    self.redirect('/home')
예제 #3
0
    def get(self):
        kml = """
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.2">
<Document>
""".lstrip()
        kml += KML_STYLES
        posts = Post.all().fetch(1000)
        for post in posts:
            if post.hasLocation():
                user = post.user
                profile = ImokUser.all().filter('account =',
                                                post.user).fetch(1)[0]
                dateTime = formatLocalFromUtc(post.datetime, profile.tz)
                desc = template.render(
                    settings.template_path('messageInfo.html'),
                    self.getContext(locals()))
                kml += """
  <Placemark>
    <name>%s</name>
    <description><![CDATA[%s]]></description>
    <styleUrl>#msn_red-circle</styleUrl>
    <Point>
      <coordinates>%f,%f,0</coordinates>
    </Point>
  </Placemark>
""" % (profile.getShortName(), desc, post.lon, post.lat)
        kml += """
</Document>
</kml>
"""
        self.writeResponse(kml,
                           contentType='application/vnd.google-earth.kml+xml')
예제 #4
0
  def post(self):
    self.response.headers['Content-Type'] = 'text/json'

    phone = Phone.normalize_number(self.request.get('phone'))
    message = self.request.get('message')

    if not (message and phone):
      result = { 'result': 'error',
                 'message': 'missing phone and/or message' }
      self.response.out.write(json.dumps(result))
      return

    sms_message = SmsMessage(phone_number=phone, 
                         message=message, 
                         direction='incoming',
                         status='unclaimed')
    objects = [ sms_message ]

    phone_entity = Phone.all().filter('number =', phone).get()

    if not phone_entity:
      db.put(objects)
      self.response.out.write(json.dumps({'result': 'ok'}))
      return

    post = Post.fromText(message)
    post.unique_id = Post.gen_unique_key()
    post.user = phone_entity.user
    objects.append(post)
    sms_message.status = 'queued'

    db.put(objects)

    imok_user = ImokUser.all().filter('account =', phone_entity.user).get()
    email_query = RegisteredEmail.all().filter('userName ='******'emailAddress')

    for email in email_query:
      template_data = {
        'message': post.message,
        'link': post.permalink(self.request.host_url),
        'unsubscribe_link': email.permalink(self.request.host_url),
        'user': imok_user
        }
      body = template.render(s.template_path('email.txt'), template_data)
      mail.send_mail(sender='*****@*****.**',
                     to=email.emailAddress,
                     subject="I'm OK",
                     body=body)

    sms_message.status = 'processed'

    response_sms = SmsMessage(phone_number=phone,
                              message="I'm OK: Message received. %d contact(s) notified." % email_query.count(),
                              direction="outgoing",
                              status="queued")

    db.put([ response_sms, sms_message ])

    #self.response.out.write(message)
    self.response.out.write(json.dumps({'result': 'ok'}))
예제 #5
0
  def post(self):
    user = users.get_current_user()
    okUser = ImokUser.all().filter('account =', user).get()
    
    p = Post(user=user, message='test message', lat=37., lon=-122.)
    p.unique_id = Post.gen_unique_key()
    p.put()

    registeredEmailQuery = RegisteredEmail.all().filter('userName ='******'emailAddress')
    
    debug_output = []
    for registeredEmail in registeredEmailQuery:
      templateData = {
        'message': p.message,
        'link': p.permalink(self.request.host_url),
        'user': okUser,
        'unsubscribe_link': registeredEmail.permalink(self.request.host_url)
        }
      emailBody = template.render(settings.template_path('email.txt'), templateData)
      mail.send_mail(sender='*****@*****.**',
                     to=registeredEmail.emailAddress,
                     subject="I'm OK",
                     body=emailBody)
      debug_output.append(emailBody)

    if debug_output:
      self.response.headers['Content-Type'] = 'text/plain'
      self.response.out.write("\n\n".join(debug_output))
      return
    
    self.redirect('/home')
예제 #6
0
  def get(self, message=""):
    template_data = {
      'logout_url': users.create_logout_url('/'),
      'phones': Phone.all().filter('user = '******'Content-Type'] = 'text/html'
    self.response.out.write(template.render(s.template_path('phone.html'), template_data))
예제 #7
0
  def get(self):
    posts = Post.all() #.gql()

    template_data = {
      'posts' : posts,
    }
    template_path = s.template_path('incoming.html')
    self.response.headers['Content-Type'] = 'text/html'
    self.response.out.write(template.render(template_path, template_data))
예제 #8
0
  def get(self):
    key = self.request.get('id', '')
    if key == '':
      self.error(400)

    try:
      phone = Phone.all().filter('user ='******'__key__ =', db.Key(key)).get()

      template_data = {
        'logout_url': users.create_logout_url('/'),
        'phone': phone,
        'id': key
      }

      if self.request.get('message', ''):
        template_data['message'] = self.request.get('message')

      self.response.headers['Content-Type'] = 'text/html'
      self.response.out.write(template.render(s.template_path('phone_verify.html'), template_data))    
    except db.BadKeyError:
      self.error(400)
예제 #9
0
  def post(self):
    self.response.headers['Content-Type'] = 'text/json'

    phone = Phone.normalize_number(self.request.get('phone'))
    message = self.request.get('message')

    if not (message and phone):
      result = { 'result': 'error',
                 'message': 'missing phone and/or message' }
      self.response.out.write(json.dumps(result))
      return

    sms_message = SmsMessage(phone_number=phone, 
                         message=message, 
                         direction='incoming',
                         status='unclaimed')
    objects = [ sms_message ]

    phone_entity = Phone.all().filter('number =', phone).get()

    if not phone_entity:
      db.put(objects)
      self.response.out.write(json.dumps({'result': 'ok'}))
      return

    post = Post.fromText(message)
    post.unique_id = Post.gen_unique_key()
    post.user = phone_entity.user
    objects.append(post)
    sms_message.status = 'queued'

    db.put(objects)

    imok_user = ImokUser.all().filter('account =', phone_entity.user).get()
    email_query = RegisteredEmail.all().filter('userName ='******'emailAddress')

    for email in email_query:
      template_data = {
        'message': post.message,
        'link': post.permalink(self.request.host_url),
        'unsubscribe_link': email.permalink(self.request.host_url),
        'user': imok_user
        }
      body = template.render(s.template_path('email.txt'), template_data)
      mail.send_mail(sender=s.MAILER_EMAIL,
                     to=email.emailAddress,
                     subject="IMOk status",
                     body=body)

    sms_message.status = 'processed'

#     Response_sms = SmsMessage(phone_number=phone,
#                               message="IMOk: Message received, %d contact(s) notified." % email_query.count(),
#                               direction="outgoing",
#                               status="queued")

    sendSms(phone=phone_entity, message="IMOk: Message received, %d contact(s) notified." % email_query.count())
#    db.put([ response_sms, sms_message ])
    db.put([sms_message])
    
    #self.response.out.write(message)
    self.response.out.write(json.dumps({'result': 'ok'}))
예제 #10
0
 def render(self, tmplName, tmplValues, contentType='text/html'):
   self.response.headers['Content-Type'] = contentType
   self.response.out.write(template.render(settings.template_path(tmplName), tmplValues))
예제 #11
0
 def render(self, tmplName, tmplValues, contentType='text/html'):
     self.writeResponse(
         template.render(settings.template_path(tmplName), tmplValues))
예제 #12
0
    def savePostAndPush(self,
                        text,
                        phoneNumber,
                        user,
                        smsMessage=None,
                        bogusTimestamp=None):
        post = Post.fromText(text)
        if bogusTimestamp != None:
            post.datetime = bogusTimestamp
        post.unique_id = Post.gen_unique_key()
        post.user = user
        objects = [post]
        if smsMessage != None:
            smsMessage.status = 'queued'
            objects.append(smsMessage)
        db.put(objects)

        ######################################################################
        # send email

        # FIX: this block of code does not belong in sms_twilio

        imok_user = ImokUser.getProfileForUser(user)
        email_query = RegisteredEmail.all().filter('userName ='******'emailAddress')

        debugOutput = []
        for email in email_query:
            template_data = {
                'message': post.message,
                'link': post.permalink(self.request.host_url),
                'unsubscribe_link': email.permalink(self.request.host_url),
                'user': imok_user
            }
            body = template.render(s.template_path('email.txt'), template_data)
            debugOutput.append(body)
            mail.send_mail(sender=s.MAILER_EMAIL,
                           to=email.emailAddress,
                           subject="IMOk status",
                           body=body)

        twitter_post(imok_user, post.message)

        ######################################################################
        # post to person finder
        if 0:
            debugText = personFinder.postToPersonFinder(post)
            debugOutput.append(debugText)

        ######################################################################
        # send confirmation SMS
        if smsMessage != None:
            smsMessage.status = 'processed'
            smsMessage.put()

            response_sms = SmsMessage(
                phone_number=phoneNumber,
                message="I'm OK: Message received, %d contact(s) notified." %
                email_query.count(),
                direction="outgoing",
                status="queued")
            #response_sms.put()
            sendSms(response_sms)

        #self.response.out.write(message)
        #self.response.out.write(json.dumps({'result': 'ok'}))
        return debugOutput