def update_map_file(): # really there should be a flag in the user object to indicate the map needs updating, but for that to be reliable that needs to put with each new checkin, so these need to have the user as the parent so the transaction works, and that's just a nightmare.
  mapimages = MapImage.all().order('last_updated').fetch(10)
  for mapimage in mapimages:
    if not mapimage.update_count:
      mapimage.update_count = 0
      mapimage.put()
    userinfo = UserInfo.all().filter('user = '******'s no userinfo
      mapimage.put()
      logging.warning("No userinfo found for mapimage with user %s" % mapimage.user)
      continue
    try:
      if userinfo.last_updated > mapimage.last_updated or mapimage.update_count == 0:
        google_data = {
          'key': constants.get_google_maps_apikey(),
          'zoom': mapimage.zoom,
          'center': str(mapimage.centerlat) + "," + str(mapimage.centerlng),
          'size': str(mapimage.width) + "x" + str(mapimage.height),
          'sensor':'false',
          'format':'png',
        }
        img = update_map_image(mapimage.user, mapimage.zoom, mapimage.width, mapimage.height, mapimage.northlat, mapimage.westlng)
        mapimage.img = db.Blob(img)
        mapimage.last_updated = datetime.now()
        mapimage.static_url = "http://maps.google.com/maps/api/staticmap?" + urllib.urlencode(google_data)
        mapimage.update_count += 1
        mapimage.put()
        logging.info("Updated user map for %s" % mapimage.user)
        return # only update one map
      else: # so that we don't get stuck on the same maps forever
        mapimage.last_updated = datetime.now()
        mapimage.put()
        logging.debug("Did not need to update map for %s" % mapimage.user)
    except DeadlineExceededError, err:    
      logging.error("Ran out of time before updating a map! %s" % err)
      mapimage.last_updated = datetime.now() # put it at the end of the queue anyway, in case we always fail on this map for some reason
      mapimage.put()
Пример #2
0
 def get(self):
   welcome_data = {
     'user': '',
     'userinfo': '',
     'url': users.create_login_url(self.request.uri),
     'real_name': '',
     'photo_url': constants.default_photo,
     'is_ready': False
   }
   sidebar_data = {
     'color_scheme_dict': color_scheme.color_schemes,
     'color_scheme': constants.default_color,
   }
   map_data = {
     'citylat': constants.default_lat,
     'citylng': constants.default_lng,
     'zoom': constants.default_zoom,
     'width': constants.default_dimension,
     'height': constants.default_dimension,
   }
   user = users.get_current_user()
   if user:
     welcome_data['user'] = user
     welcome_data['url'] = users.create_logout_url(self.request.uri)
     userinfo = UserInfo.all().filter('user ='******'-created').get()
     if userinfo:
       fetch_foursquare_data.update_user_info(userinfo)
       welcome_data['userinfo'] = userinfo
       welcome_data['real_name'] = userinfo.real_name
       welcome_data['photo_url'] = userinfo.photo_url
       welcome_data['is_ready'] = userinfo.is_ready
       sidebar_data['color_scheme'] = userinfo.color_scheme
       map_data['citylat'] = userinfo.citylat
       map_data['citylng'] = userinfo.citylng
   os_path = os.path.dirname(__file__)
   self.response.out.write(template.render(os.path.join(os_path, 'templates/header.html'), {'key': constants.get_google_maps_apikey()}))
   self.response.out.write(template.render(os.path.join(os_path, 'templates/private_welcome.html'), welcome_data))
   if user and userinfo:
       self.response.out.write(template.render(os.path.join(os_path, 'templates/private_sidebar.html'), sidebar_data))
   else:
       self.response.out.write(template.render(os.path.join(os_path, 'templates/information.html'), None))
   self.response.out.write(template.render(os.path.join(os_path, 'templates/private_map.html'), map_data))
   self.response.out.write(template.render(os.path.join(os_path, 'templates/all_footer.html'), None))
Пример #3
0
   width, height = widthxheight.split('x')
   width, height = int(width), int(height)
   assert zoom.isdigit(), "not digits"
   zoom = int(zoom)
   assert centerpoint.count(',') == 1, "%d ,'s" % centerpoint.count(',')
   centerlat, centerlng = centerpoint.split(',')
   centerlat, centerlng = float(centerlat), float(centerlng)
   assert northwest.count(',') == 1, "%d ,'s" % northwest.count(',')
   northlat, westlng = northwest.split(',')
   northlat, westlng = float(northlat), float(westlng)
 except AssertionError, err:
   logging.error(err.args[0])
   return
 try:
   google_data = {
     'key': constants.get_google_maps_apikey(),
     'zoom': zoom,
     'center': centerpoint,
     'size': widthxheight,
     'sensor':'false',
     'format':'png',
   }
   mapimage = MapImage.all().filter('user =', user).get()
   if not mapimage:
     mapimage              = MapImage()
     mapimage.user         = user
   def reset_map_image(mapimage_param, centerlat_param, centerlng_param, northlat_param, westlng_param, zoom_param, height_param, width_param, google_data_param):
     mapimage_param.tiles_remaining = len(range(0, width_param, 256)) * len(range(0, height_param, 256))
     mapimage_param.centerlat  = centerlat_param
     mapimage_param.centerlng  = centerlng_param
     mapimage_param.northlat   = northlat_param
Пример #4
0
              pass # raise err  #TODO keep this error, but removing it now so that you can log in
        welcome_data['userinfo'] = userinfo
        welcome_data['real_name'] = userinfo.real_name
        welcome_data['photo_url'] = userinfo.photo_url
        welcome_data['is_ready'] = userinfo.is_ready
        sidebar_data['color_scheme'] = userinfo.color_scheme
        map_data['citylat'] = userinfo.citylat
        map_data['citylng'] = userinfo.citylng
    else: # make a default map_data object if user is not logged in, see is_logged_in JS variable, sorry this is so hacky
      map_data = {
        'domain': environ['HTTP_HOST'],
        'static_url': 'http://maps.google.com/maps/api/staticmap?center=40.7427050566%2C-73.9888000488&format=png&zoom=13&key=ABQIAAAAwA6oEsCLgzz6I150wm3ELBQO7aMTgd18mR6eRdj9blrVCeGU7BS14EnkGH_2LpNpZ8DJW0u7G5ocLQ&sensor=false&size=640x640',
        'mapimage_url': 'map/%s.png' % 'ag93aGVyZS1kby15b3UtZ29yEAsSCE1hcEltYWdlGM2LRgw',
      }
    os_path = os.path.dirname(__file__)
    self.response.out.write(template.render(os.path.join(os_path, 'templates/header.html'), {'key': constants.get_google_maps_apikey()}))
    self.response.out.write(template.render(os.path.join(os_path, 'templates/private_welcome.html'), welcome_data))
    if not foursquare_is_happy:
        self.response.out.write(template.render(os.path.join(os_path, 'templates/private_forbidden.html'), None))
    elif user and userinfo:
      if userinfo.is_authorized:
        self.response.out.write(template.render(os.path.join(os_path, 'templates/private_sidebar.html'), sidebar_data))
      else:
        self.response.out.write(template.render(os.path.join(os_path, 'templates/private_unauthorized.html'), None))
    else:
        self.response.out.write(template.render(os.path.join(os_path, 'templates/information.html'), {'user': user }))
    self.response.out.write(template.render(os.path.join(os_path, 'templates/private_map.html'), map_data))
    self.response.out.write(template.render(os.path.join(os_path, 'templates/all_footer.html'), None))

class AuthHandler(webapp.RequestHandler):
  def get(self):