Esempio n. 1
0
def getRequestedStops():
      # do some analysis on the request history...
      reqs = dict()
      cursor = None
      # Start a query for all Person entities.
      q = PhoneLog.all()
      while q is not None:
          # If the app stored a cursor during a previous request, use it.
          if cursor:
              q.with_cursor(cursor)

          logQuery = q.fetch(1000)
          cursor = q.cursor()
          if len(logQuery) > 0:
            # run through all of the results and add up the number of 
            # requests for each stopID
            #
            for e in logQuery:
                # add up all of the unique stop IDs
                requestString = e.body.split()
                if len(requestString) >= 2:
                    stopID = requestString[1]
                elif len(requestString) > 0:
                    stopID = requestString[0]
                
                if len(requestString) > 0 and stopID.isdigit() and len(stopID) == 4:
                    if stopID in reqs:
                        reqs[stopID] += 1
                    else:
                        #logging.debug('new stop found... %s' % stopID)
                        reqs[stopID] = 1
          else:
              logging.debug('nothing left!')
              break
      return reqs
Esempio n. 2
0
 def post(self):
     # normalize the XMPP requests
     if self.request.get("from").find("@"):
         caller = self.request.get("from").split("/")[0]
     else:
         caller = self.request.get("from")
     # log this event...
     logging.debug("logging caller: %s" % caller)
     log = PhoneLog()
     log.phone = caller
     log.to = self.request.get("to")
     log.body = self.request.get("inboundBody")
     log.smsID = self.request.get("sid")
     log.outboundSMS = self.request.get("outboundBody")
     log.put()
Esempio n. 3
0
 def post(self):
   # normalize the XMPP requests
   if self.request.get('phone').find('@'):
       caller = self.request.get('phone').split('/')[0]
   else:
   	  caller = self.request.get('phone')
   # log this event...
   log = PhoneLog()
   log.phone = caller
   log.body = self.request.get('inboundBody')
   log.smsID = self.request.get('sid')
   log.outboundSMS = self.request.get('outboundBody')
   log.put()
Esempio n. 4
0
def getRequestedStops():
    # do some analysis on the request history...
    reqs = dict()
    cursor = None
    # Start a query for all Person entities.
    q = PhoneLog.all()
    while q is not None:
        # If the app stored a cursor during a previous request, use it.
        if cursor:
            q.with_cursor(cursor)

        logQuery = q.fetch(1000)
        cursor = q.cursor()
        if len(logQuery) > 0:
            # run through all of the results and add up the number of
            # requests for each stopID
            #
            for e in logQuery:
                # add up all of the unique stop IDs
                requestString = e.body.split()
                if len(requestString) >= 2:
                    stopID = requestString[1]
                elif len(requestString) > 0:
                    stopID = requestString[0]

                if len(requestString) > 0 and stopID.isdigit() and len(
                        stopID) == 4:
                    if stopID in reqs:
                        reqs[stopID] += 1
                    else:
                        #logging.debug('new stop found... %s' % stopID)
                        reqs[stopID] = 1
        else:
            logging.debug('nothing left!')
            break
    return reqs
Esempio n. 5
0
    def get(self):
      callers = {}
      cursor = None

      q = PhoneLog.all()
      while q is not None:
          # If the app stored a cursor during a previous request, use it.
          if cursor:
              q.with_cursor(cursor)

          logQuery = q.fetch(500)
          cursor = q.cursor()
          if len(logQuery) > 0:
            for e in logQuery:
                if e.phone.find('@gmail.com') > 0:
                    caller = e.phone.split('/')[0]
                    logging.debug('truncating %s to %s' % (e.phone,caller))
                    if caller not in callers:
                        callers[caller] = 1
                    e.phone = caller
                    e.put()
          else:
              logging.debug('nothing left!')
              break
Esempio n. 6
0
    def get(self):
      user = users.get_current_user()
      if user and users.is_current_user_admin():
          greeting = ("Welcome, %s! (<a href=\"%s\">sign out</a>)" %
                      (user.nickname(), users.create_logout_url("/")))
      else:
          greeting = ("<a href=\"%s\">Sign in</a>." %
                        users.create_login_url("/"))

      # do some analysis on the request history...
      total = 0
      callers = dict()
      reqs = dict()
      cursor = None
      # Start a query for all Person entities.
      q = PhoneLog.all()
      while q is not None:
          # If the app stored a cursor during a previous request, use it.
          if cursor:
              q.with_cursor(cursor)

          logQuery = q.fetch(500)
          cursor = q.cursor()
          if len(logQuery) > 0:
            total += len(logQuery)
            logging.debug('parsing log entries %s' % total)
            for e in logQuery:
                if e.phone in callers:
                    callers[e.phone] += 1
                else:
                    callers[e.phone] = 1

                # add up all of the unique stop IDs
                requestString = e.body.split()
                if len(requestString) >= 2:
                    stopID = requestString[1]
                elif len(requestString) > 0:
                    stopID = requestString[0]

                if len(requestString) > 0 and stopID.isdigit() and len(stopID) == 4:
                    if stopID in reqs:
                        reqs[stopID] += 1
                    else:
                        reqs[stopID] = 1
          else:
              logging.debug('nothing left!')
              break

      # review the results and generate the data for the template
      caller_stats = []
      sorted_callers = callers.items()
      sorted_callers.sort(key=itemgetter(1),reverse=True)
      for key,value in sorted_callers:
          caller_stats.append({'caller':key,
                               'counter':value,
                             })
      uniques = len(sorted_callers)

      # display some recent call history
      results = []
      q = db.GqlQuery("SELECT * FROM PhoneLog ORDER BY date DESC")
      logQuery = q.fetch(30)
      if len(logQuery) > 0:
          for r in logQuery:
              results.append({'phone':r.phone,
                              'body':r.body,
                              'outboundSMS':r.outboundSMS,
                              'date':r.date,})
      else:
          results.append({'phone':'empty',
                          'body':'empty',
                          'outboundSMS':'empty',
                          'date':'empty',})
          logging.error("We couldn't find any history!?!")

      # add the counter to the template values
      template_values = {'greeting':greeting,
                         'total':total,
                         'uniques':uniques,
                         'callers':caller_stats,
                         'events':results,
                         }

      # create a page that provides a form for sending an SMS message
      path = os.path.join(os.path.dirname(__file__), 'views/admin.html')
      self.response.out.write(template.render(path,template_values))