Example #1
0
    def get(self):
        creator = self.request.get('creator', '')
        logging.info("Creator: %s", creator)
        logging.info(self.request.arguments())
        distance = self.request.get('distance', '')
        msg = ""
        found = []
        matches = Profile.all().filter('creator =', creator).fetch(1)
        if matches:
            user = matches[0]
        else:
            user = None
        results = []
        query = Profile.all()

        keys = dict(INTERESTS)
        for interest in self.request.arguments():
            if interest in keys:
                query = query.filter("interests =", interest)
                logging.info("interests = %s" % interest)
        if user and distance:
            if user.location is None:
                msg = "You need to enter your position on the map in your People Finder Profile wave before doing a location based search"
                results = query.fetch(20)
            else:
                max_distance = distance_to_meters(
                    distance, self.request.get('units', ''))
                results = Profile.proximity_fetch(
                    query,
                    user.location,  # Or db.GeoPt
                    max_results=20,
                    max_distance=max_distance  # meters
                )
        else:
            results = query.fetch(20)

        if user:
            found = [{
                'name': r.name,
                'id': r.creator
            } for r in results if r.key().name() != user.key().name()]
        else:
            found = [{'name': r.name, 'id': r.creator} for r in results]
        gtugs = simplejson.dumps({'msg': msg, 'results': found})
        logging.info("response: %s" % gtugs)
        self.response.headers.add_header('Content-type', 'application/json')
        self.response.out.write(gtugs)
Example #2
0
  def get(self):
    creator = self.request.get('creator', '')
    logging.info("Creator: %s", creator);
    logging.info(self.request.arguments())
    distance = self.request.get('distance', '')
    msg = ""
    found = []
    matches = Profile.all().filter('creator =', creator).fetch(1)
    if matches:
      user = matches[0]
    else:
      user = None
    results = []
    query = Profile.all()

    keys = dict(INTERESTS)
    for interest in self.request.arguments():
      if interest in keys:
        query = query.filter("interests =", interest)
        logging.info("interests = %s" % interest)
    if user and distance:
      if user.location is None:
        msg = "You need to enter your position on the map in your People Finder Profile wave before doing a location based search"
        results = query.fetch(20)
      else:
        max_distance = distance_to_meters(distance, self.request.get('units', ''))
        results = Profile.proximity_fetch(
          query,
          user.location,  # Or db.GeoPt
          max_results=20,
          max_distance=max_distance # meters
        ) 
    else:
      results = query.fetch(20)

    if user:
      found = [{'name': r.name, 'id': r.creator} for r in results if r.key().name() != user.key().name()]
    else:
      found = [{'name': r.name, 'id': r.creator} for r in results]
    gtugs = simplejson.dumps({'msg': msg, 'results': found})
    logging.info("response: %s" % gtugs)
    self.response.headers.add_header('Content-type', 'application/json')
    self.response.out.write(gtugs)