Пример #1
0
 def post(self):
     user = users.get_current_user()
     user_prefs = UserPrefs.all().filter('google_account =', user).get()
     if user_prefs is None:
         return self.error(404)
     
     mode = self.request.get('mode')
     
     if mode == 'add':
         name = self.request.get('name')
         icon = self.request.get('icon')
         
         marker_icon = MarkerIcon()
         marker_icon.name = name
         marker_icon.icon = db.Blob(icon)
         marker_icon.user_prefs = user_prefs.key()
         marker_icon.visible = True
         marker_icon.put()
         
     elif mode == 'delete':
         id = self.request.get('id')
         
         marker_icon = MarkerIcon.get_by_id(int(id))
         if marker_icon is not None:
             marker_icon.visible = False
             marker_icon.put()
     
     self.redirect('/user/icon')
Пример #2
0
 def post(self, map_id):
     
     user = users.get_current_user()
     if user is None:
         return self.redirect(users.create_login_url(self.request.uri))
     
     user_prefs = UserPrefs.all().filter('google_account =', user).get()
     if user_prefs is None:
         return self.redirect('/map/%s' % map_id)
     
     user_maps = UserMaps.all().filter('map_id =', map_id).filter('visible =', True).filter('user_prefs =', user_prefs.key()).get()
     if user_maps is None:
         return self.redirect('/map/%s' % map_id)
     
     mode = self.request.get('mode')
     
     if mode == 'set_home':
         lat = self.request.get('lat')
         lng = self.request.get('lng')
         
         user_maps.home_geo = db.GeoPt(lat, lon=lng)
         user_maps.put()
     elif mode == 'set_marker':
         name = self.request.get('name')
         tags = self.request.get('tags')
         icon = self.request.get('icon')
         
         marker_icon = None
         if icon != '':
             marker_icon = MarkerIcon.get_by_id(int(icon))
         
         tags = tags.replace(u'、', ',').replace(' ', ',').replace(u' ', ',')
         
         lat = self.request.get('lat')
         lng = self.request.get('lng')
         
         user_activity = UserActivity()
         user_activity.name = name
         user_activity.tags = tags
         user_activity.geo = db.GeoPt(lat, lon=lng)
         user_activity.user_prefs = user_prefs.key()
         user_activity.user_maps = user_maps.key()
         
         if marker_icon is not None:
             user_activity.icon = marker_icon.key()
         
         user_activity.put()
         
         try:
             taskqueue.add(url='/task/build_tag_index', params={'map_id': map_id})
         except:
             logging.error('Taskqueue add failed.')
             
     elif mode == 'delete':
         user_maps.visible = False
         user_maps.put()
         return self.redirect('/user/home')
         
     return self.redirect('/map/%s' % map_id)
Пример #3
0
 def post(self, map_id):
     user_maps = UserMaps.all().filter('visible =', True).filter('map_id =', map_id).get()
     if user_maps is None:
         return self.error(404)
     
     marker_id = self.request.get('marker_id')
     user = users.get_current_user()
     
     user_activity = UserActivity.get_by_id(int(marker_id))
     if user_activity is None:
         return self.error(404)
     
     if user_activity.user_prefs.google_account != user:
         return self.redirect('/map/%s' % map_id)
     
     name = self.request.get('name')
     tags = self.request.get('tags')
     icon = self.request.get('icon')
     
     marker_icon = None
     if icon != '':
         marker_icon = MarkerIcon.get_by_id(int(icon))
     
     tags = tags.replace(u'、', ',').replace(' ', ',').replace(u' ', ',')
     
     lat = self.request.get('lat')
     lng = self.request.get('lng')
     
     user_activity.name = name
     user_activity.tags = tags
     user_activity.geo = db.GeoPt(lat, lon=lng)
     
     if marker_icon is not None:
         user_activity.icon = marker_icon.key()
     
     user_activity.put()
     
     memcache.delete('marker_data_%s' % marker_id)
     
     self.redirect('/map/%s' % map_id)
Пример #4
0
 def get(self):
   
     image_key = self.request.get('id')
     logging.info('image_key: %s' % image_key)
     if image_key == '':
         return self.error(404)
     
     thumbnail = memcache.get('cached_icon_%s' % image_key)
     if thumbnail is None:
         marker_icon = MarkerIcon.get_by_id(int(image_key))
         
         if marker_icon is None:
             return self.error(404)
         
         thumbnail = marker_icon.icon
         memcache.add('cached_icon_%s' % image_key, thumbnail, 3600)
         
         logging.info('Image from DB. image_key: %s' % image_key)
     else:
         logging.info('Image from memcache. image_key: %s' % image_key)
     
     self.response.headers['Content-Type'] = 'image/png'
     self.response.out.write(thumbnail)