def post(self): user = users.get_current_user() try: meeting = models.get_meeting() admin= models.get_userprefs(str(user.email())) admin.created.append(meeting.identify) admin.put() meeting.creator = admin meeting.agenda = self.request.get('agenda') date_now = self.request.get('date').split('/') meeting.date = datetime.date(int(date_now[2]),int(date_now[1]),int(date_now[0])) meeting.duration = float(self.request.get('duration')) initial = float(self.request.get('time_range.initial')) final = float(self.request.get('time_range.final')) meeting.time_range = models.Range(initial=initial,final=final) meeting.mem_pref = [] mems = self.request.get('mem_arg').split(',') for i in mems : mem = models.get_userprefs(i) new_ob = models.Mem_pref(member=mem.email) meeting.add(new_ob) mem.invites.append(meeting.identify) meeting.put() meeting.mail() except ValueError: # User entered values that were not proper. Ignore for now. pass self.redirect('/')
def get(self): user = self.current_user if user: userprefs = get_userprefs(user["id"]) else: self.redirect('/') return search_latlng = (userprefs.search_lat,userprefs.search_lng) friends_local_not_user_uid_list = list() friends_with_locals_list = list() friends_local_2 = dict() graph = facebook.GraphAPI(version=2.1,access_token=user["access_token"]) friends = get_friends(graph) friends[:] = [friend for friend in friends if is_app_user(str(friend['id']))] friends_local = [friend for friend in friends if is_local(str(friend['id']),search_latlng)] for profile in friends: user_2 = User.get_by_key_name(str(profile['id'])) if user_2.offline_token_created + timedelta(2*365/12) < datetime.utcnow(): logging.info('Friend ' + str(profile['id']) + ' access token expired') continue graph_2 = facebook.GraphAPI(version=2.1,access_token=user_2.offline_token) friends_2 = get_friends(graph_2) friends_2[:] = [friend for friend in friends_2 if is_app_user(str(friend['id']))] friends_2_local = [friend for friend in friends_2 if is_local(str(friend['id']),search_latlng)] for profile_2 in friends_2_local: # ignore mutual friend # FIXME inefficient, assumes 1st degree list is shorter than 2nd, use sets? if any(f['id'] == profile_2['id'] for f in friends): continue # ignore "me" if str(profile_2['id']) == str(user['id']): continue if profile_2['id'] in friends_local_2: friends_local_2[profile_2['id']]['friends'].append(profile) else: profile_2['friends'] = list() profile_2['friends'].append(profile) friends_local_2[profile_2['id']] = profile_2 template = template_env.get_template('friends.html') context = { 'facebook_app_id': FACEBOOK_APP_ID, 'facebook_app_namespace': FACEBOOK_APP_NAMESPACE, 'user': user, 'userprefs': userprefs, 'location_name': search_latlng, 'location_link': "https://friendsbylocation.appspot.com/", 'friends_local': friends_local, 'friends_local_2': friends_local_2, 'friends_local_not_user_uid_list': friends_local_not_user_uid_list, 'friends_with_locals_list': friends_with_locals_list, } self.response.out.write(template.render(context))
def get(self): time = datetime.datetime.now() user = users.get_current_user() if not user: navbar = ('<p>Welcome! <a href="%s">Sign in or register</a> to customize.</p>' % (users.create_login_url(self.request.path))) tz_form = '' else: userprefs = models.get_userprefs() navbar = ('<p>Welcome, %s! Your can <a href="%s">sign out</a>.</p>' % (user.nickname(), users.create_logout_url(self.request.path))) tz_form = ''' <form action="/prefs" method="post"> <label for="tz_offset"> Timezone offset from UTC (can be nagative): </label> <input name="tz_offset" id="tz_offset" type="text" size="4" value="%d" /> <input type="submit" value="Set" /> </form> ''' % userprefs.tz_offset time += datetime.timedelta(0, 0, 0, 0, 0, userprefs.tz_offset) self.response.headers['Content-Type'] = 'text/html' self.response.out.write(''' <html> <head> <title>The Time Is ...</title> </head> <body> %s <p>The time is: %s</p> %s </body> </html> ''' % (navbar, str(time), tz_form))
def post(self): user = self.current_user logging.info("Updating profile for user %s" % user["id"]) userprefs = get_userprefs(user["id"]) try: lat = float(self.request.get('latitude')) lng = float(self.request.get('longitude')) location_name = self.request.get('location') userprefs.location_lat = lat userprefs.location_lng = lng userprefs.location_name = location_name except ValueError: pass # ignore try: acknowledged = bool(self.request.get('cbAcknowledgedTerms')) except ValueError: acknowledged = False if acknowledged: userprefs.acknowledged_terms = True else: userprefs.acknowledged_terms = False userprefs.put() self.redirect('/')
def post(self): userprefs = models.get_userprefs() try: tz_offset = float(self.request.get('tz_offset')) userprefs.tz_offset = tz_offset userprefs.put() except ValueError: pass self.redirect('/')
def post(self): userprefs = models.get_userprefs() try: tz_offset = int(self.request.get('tz_offset')) userprefs.tz_offset = tz_offset userprefs.put() except ValueError: pass self.redirect('/')
def post(self): userprefs = models.get_userprefs() try: tz_offset = int(self.request.get('tz_offset')) userprefs.tz_offset = tz_offset userprefs.put() except ValueError: # non-integer - ignore for now pass self.redirect('/')
def post(self): userprefs = models.get_userprefs() try: meet_id = int(self.request.get('identify')) userprefs.fix(meet_id) userprefs.put() except ValueError: # User entered a value that wasn't a int. Ignore for now. pass self.redirect('/')
def post(self): userprefs = models.get_userprefs() try: tz_offset = int(self.request.get('tz_offset')) userprefs.tz_offset = tz_offset userprefs.put() except ValueError: # User entered a value that wasn't an integer. Ignore for now. pass self. redirect('/')
def post(self): userprefs = models.get_userprefs() try: tz_offset = float(self.request.get('tz_offset')) userprefs.tz_offset = tz_offset userprefs.put() except ValueError: # User Entered value that isn't a float. Ignore it.. pass self.redirect('/')
def post(self): userprefs = models.get_userprefs() try: tz_offset = float(self.request.get("tz_offset")) userprefs.tz_offset = tz_offset userprefs.put() except ValueError: # User entered a value that wasn't a float. Ignore for now pass self.redirect("/clock")
def post(self): userprefs = models.get_userprefs() try: tz_offset = int(self.request.get('tz_offset')) userprefs.tz_offset = tz_offset userprefs.put() except: # User entered a value that was not a integer pass self.redirect('/')
def post(self): userprefs = models.get_userprefs() try: tz_offset = float(self.request.get('tz_offset')) userprefs.tz_offset = tz_offset userprefs.put() except ValueError: #User entered a value that wasn't a float pass self.redirect('/')
def post(self): userprefs = models.get_userprefs() try: tz_offset = int(self.request.get('tz_offset')) userprefs.tz_offset = tz_offset userprefs.put() except ValueError: # User entered a value that wasn't an integer. Ignore for now. pass self.redirect('/time')
def post(self): userprefs = models.get_userprefs() try: tz_offset = int(self.request.get('tz_offset')) userprefs.tz_offset = tz_offset userprefs.put() except ValueError: # User entered a value that wasn`t an interget. Ignore for now. logging.error(ValueError.message) pass self.redirect('/')
def post(self): userprefs = models.get_userprefs( ) # Retrieves information associated with the user that is making a request try: tz_offset = int(self.request.get('tz_offset')) userprefs.tz_offset = tz_offset userprefs.put() except ValueError: # User entered a value that wasn't an integer. Ignore for now. pass self.redirect('/')
def post(self): userprefs = models.get_userprefs(users.get_current_user().email()) try: initial = float(self.request.get('available.initial')) final = float(self.request.get('available.final')) userprefs.available = models.Range(initial=initial, final=final) userprefs.respond() userprefs.put() except ValueError: # User entered a value that wasn't a int. Ignore for now. pass self.redirect('/')
def post(self): user = self.current_user logging.info("Updating preferences for user %s" % user["id"]) userprefs = models.get_userprefs(user["id"]) try: userprefs.location_id = int(self.request.get('location')) userprefs.put() except ValueError: # user entered value that was not integer pass # ignore self.redirect('/') self.redirect('/friends')
def post( self ): user = users.get_current_user() prefs = models.get_userprefs( user.user_id() ) try: tz_offset = int( self.request.get('tz_offset') ) prefs.tz_offset = tz_offset prefs.put() except: # user entered invalid info, ignore for now pass self.redirect( '/' )
def get(self): user = self.current_user if user: userprefs = get_userprefs(user['id']) else: userprefs = None template = template_env.get_template('privacy.html') context = { 'facebook_app_id': FACEBOOK_APP_ID, 'user': user, 'userprefs': userprefs, } self.response.out.write(template.render(context))
def post(self): user = self.current_user try: search_latlng = make_tuple(self.request.get('location_latlng')) except ValueError: self.redirect('/') logging.info("Updating preferences for user %s" % user["id"]) userprefs = get_userprefs(user["id"]) userprefs.search_name = self.request.get('location_name') userprefs.search_lat = float(search_latlng[0]) userprefs.search_lng = float(search_latlng[1]) userprefs.put() self.redirect('/friends')
def get(self): user = users.get_current_user() login_url = users.create_login_url(self.request.path) logout_url = users.create_logout_url(self.request.path) userprefs = models.get_userprefs() template = template_env.get_template('create.html') context = { 'user' : user, 'login_url' : login_url, 'logout_url' :logout_url, 'userprefs' : userprefs, } self.response.out.write(template.render(context))
def get(self): current_time = datetime.datetime.now() user = users.get_current_user() login_url = users.create_login_url(self.request.path) logout_url = users.create_logout_url(self.request.path) userprefs = models.get_userprefs() if userprefs: current_time += datetime.timedelta(0, 0, 0, 0, 0, userprefs.tz_offset) template = JINJIA_ENVIRONMENT.get_template('home.html') context = { 'current_time': current_time, 'user': user, 'login_url': login_url, 'logout_url': logout_url, 'userprefs': userprefs, } self.response.out.write(template.render(context))
def get(self): user = self.current_user if user: userprefs = get_userprefs(user["id"]) else: userprefs = None show_terms = bool(self.request.get('terms')) template = template_env.get_template('profile.html') context = { 'facebook_app_id': FACEBOOK_APP_ID, 'user': user, 'userprefs': userprefs, 'show_terms': show_terms, #'google_maps_api_key': GOOGLE_MAPS_API_KEY, } self.response.out.write(template.render(context))
def get(self): current_time = datetime.datetime.now() user = users.get_current_user() login_url = users.create_login_url(self.request.path) logout_url = users.create_logout_url(self.request.path) userprefs = models.get_userprefs() if userprefs: current_time += datetime.timedelta(0, 0, 0, 0, 0, userprefs.tz_offset) template = template_env.get_template("main.html") context = { "current_time": current_time, "user": user, "login_url": login_url, "logout_url": logout_url, "userprefs": userprefs, } self.response.out.write(template.render(context))
def get(self): current_time = datetime.datetime.now(); user = users.get_current_user() login_url = users.create_login_url(self.request.path) logout_url = users.create_logout_url(self.request.path) userprefs = models.get_userprefs() if userprefs: current_time += datetime.timedelta( 0, 0, 0, 0, 0, userprefs.tz_offset) template = template_env.get_template('home.html') context = { 'current_time': current_time, 'user': user, 'login_url': login_url, 'logout_url': logout_url, 'userprefs':userprefs,} self.response.out.write(template.render(context))
def get(self): user = users.get_current_user() login_url = users.create_login_url(self.request.path) logout_url = users.create_logout_url(self.request.path) userprefs = models.get_userprefs(user.email()) template = template_env.get_template('invites.html') invites = [] for element in userprefs.invites: new_obj = models.get_meeting(element) invites.append(new_obj) context = { 'user': user, 'login_url': login_url, 'logout_url': logout_url, 'userprefs': userprefs, 'invites': invites, } self.response.out.write(template.render(context))
def get(self): time = datetime.datetime.now() user = users.get_current_user() if not user: navbar = ( '<p class="little_important">Welcome! <a href="%s">Sign in or register</a> to customize.</p>' ) % (users.create_login_url(self.request.path)) tz_form = '' else: userprefs = models.get_userprefs() navbar = ( '<p class="little_important">Welcome! %s! You can <a href="%s">sign out</a>.</p>' ) % (user.email(), users.create_logout_url(self.request.path)) tz_form = ''' <form action="/prefs" method="post"> <lable for="tz_offset"> Timezon offset from UTC (can be negative): </lable> <input name="tz_offset" id="tz_offset" type="text" size="4" value="%d" /> <input type="submit" value="Set" /> </form> ''' % userprefs.tz_offset time += datetime.timedelta(0, 0, 0, 0, 0, userprefs.tz_offset) self.response.headers['Content-Type'] = 'text/html' self.response.out.write(''' <html> <head> <title>The Time Is...</title> <link rel="stylesheet" href="/css/%s/sample.css" type="text/css" /> </head> <body> <img src="/images/%s/sample.png" /> %s <p class="very_important">The time is: %s</p> %s </body> </html> ''' % (os.environ['CURRENT_VERSION_ID'], os.environ['CURRENT_VERSION_ID'], navbar, str(time), tz_form))
def get(self): current_time = datetime.datetime.now() userprefs = models.get_userprefs() if userprefs: current_time += datetime.timedelta( 0, 0, 0, 0, 0, userprefs.tz_offset ) user = users.get_current_user() # App Engine user service login_url = users.create_login_url(self.request.path) logout_url = users.create_logout_url(self.request.path) template = template_env.get_template('clock.html') context = { 'current_time': current_time, 'user': user, 'login_url': login_url, 'logout_url': logout_url, 'userprefs': userprefs, } self.response.out.write(template.render(context))
def get(self): time = datetime.datetime.now() user = users.get_current_user() if not user: navbar = ('<p class="little_important">Welcome! <a href="%s">Sign in or register</a> to customize.</p>') % (users.create_login_url(self.request.path)) tz_form = '' else: userprefs = models.get_userprefs() navbar = ('<p class="little_important">Welcome! %s! You can <a href="%s">sign out</a>.</p>') % (user.email(), users.create_logout_url(self.request.path)) tz_form = ''' <form action="/prefs" method="post"> <lable for="tz_offset"> Timezon offset from UTC (can be negative): </lable> <input name="tz_offset" id="tz_offset" type="text" size="4" value="%d" /> <input type="submit" value="Set" /> </form> ''' % userprefs.tz_offset time += datetime.timedelta(0, 0, 0, 0, 0, userprefs.tz_offset) self.response.headers['Content-Type'] = 'text/html' self.response.out.write(''' <html> <head> <title>The Time Is...</title> <link rel="stylesheet" href="/css/%s/sample.css" type="text/css" /> </head> <body> <img src="/images/%s/sample.png" /> %s <p class="very_important">The time is: %s</p> %s </body> </html> ''' % (os.environ['CURRENT_VERSION_ID'], os.environ['CURRENT_VERSION_ID'], navbar, str(time), tz_form))
def get(self): current_time = datetime.datetime.now() user = users.get_current_user( ) # Retrieves information associated with the user that is making a request login_url = users.create_login_url(self.request.path) logout_url = users.create_logout_url(self.request.path) userprefs = models.get_userprefs( ) # Fetch instance of UserPrefs model of current user if userprefs: current_time += datetime.timedelta(0, 0, 0, 0, 0, userprefs.tz_offset) template = template_env.get_template('home.html') context = { 'current_time': current_time, 'user': user, 'login_url': login_url, 'logout_url': logout_url, 'userprefs': userprefs } self.response.out.write(template.render(context))
def get(self): time = datetime.datetime.now() user = users.get_current_user() if not user: navbar = ( '<p>Welcome! <a href="%s">Sign in or register</a> to customize.</p>' % (users.create_login_url(self.request.path))) tz_form = '' else: userprefs = models.get_userprefs() navbar = ( '<p>Welcome, %s! You can <a href="%s">sign out</a>.</p>' % (user.nickname(), users.create_logout_url(self.request.path))) tz_form = ''' <form action="/prefs" method="post"> <label for="tz_offset"> Timezone offset from UTC (can be negative): </label> <input name="tz_offset" id="tz_offset" type="text" size="4" value="%d" /> <input type="submit" value="Set" /> </form> ''' % userprefs.tz_offset # 按该用户的偏好设置(其所设置的时区)计算出时间 time += datetime.timedelta(0, 0, 0, 0, 0, userprefs.tz_offset) self.response.headers['Content-Type'] = 'text/html' self.response.out.write(''' <html> <head> <title>The Time Is...</title> </head> <body> %s <p>The time is: %s</p> %s </body> </html> ''' % (navbar, str(time), tz_form))
def get(self): time = datetime.datetime.now() user = users.get_current_user() if not user: navbar = ('<h1 align="center">Personalised Clock</h1><p align="center"><image src="/images/customLogo.jpg" width="200" hspace="10"></p><p align="center"><a href="%s">Sign in or register</a> with <img src="/images/google.jpg" alt="Google"/> to customise your time zone.</p>' % (users.create_login_url(self.request.path))) tz_form = '' else: userprefs = models.get_userprefs() navbar = ('<p align="center">Welcome, %s! - <a href="%s">Sign out</a>.</p>' % (user.nickname(), users.create_logout_url(self.request.path))) tz_form = ''' <div align="center"> <form action="/prefs" method="post"> <label for="tz_offset"> Timezone offset from UTC (can be negative): </label> <input name="tz_offset" id="tz_offset" type="text" size="4" value="%d" /> <input type="submit" value="Set" /> </form></div> ''' % userprefs.tz_offset time += datetime.timedelta(0, 0, 0, 0, 0, userprefs.tz_offset) self.response.headers['Content-Type'] = 'text/html' self.response.out.write(''' <html> <head> <title>The Time Is...</title> </head> <body> <p align="center">%s</p> <font color="blue"><h1 align="center">The time is: %s</h1></font> <p align="center">%s</p> <p align="center">Proudly brought to you by Jared Blyth</p><p align="center"><a href="http://jaredblyth.com" title="Visit website of the creator of this clock" target="_blank"><img border="none" src="http://jaredblyth.com/img/design/header/header-image.jpg" alt="Headshot"/></a></p><p align="center">Visit <a href="http://jaredblyth.com" title="Visit website of the creator of this clock" target="_blank">jaredblyth.com</a></p> </body> </html> ''' % (navbar, str(time), tz_form))
def get(self): current_time = datetime.datetime.now() user = users.get_current_user() login_url = users.create_login_url(self.request.path) logout_url = users.create_logout_url(self.request.path) userprefs = models.get_userprefs() if userprefs: current_time += datetime.timedelta(0, 0, 0, 0, 0, userprefs.tz_offset) template = template_env.get_template('home.html') context = { 'current_time': current_time, 'user': user, 'login_url': login_url, 'logout_url': logout_url, 'userprefs': userprefs } self.response.out.write(template.render( context)) #have template instance render with context data
def post(self): logging.info("Entering POST") userprefs = models.get_userprefs() sighting = models.Sighting() logging.info("Entering POST") image = None lat = None lon = None for param in ["address", "lat", "long"]: if self.request.get(param): logging.info("Got params %s = %s", param, self.request.get(param)) # logging.info('Got params %s = %s' % param, self.request.get(param)) if self.request.get("address"): sighting.address = self.request.get("address") logging.info("Got addres = '%s'", sighting.address) g = geocoders.Google() try: place, (lat, lon) = g.geocode(sighting.address) logging.info("Geocode result: %s: %.5f, %.5f" % (place, lat, lon)) except ValueError, geocode_error: logging.info("Geocoding error: %s", geocode_error)
def get(self): current_time = datetime.datetime.now() # returns an object of class users or none if not signed in user = users.get_current_user() # create_login_url and create_logout_url take a url path as an argument login_url = users.create_login_url(self.request.path) logout_url = users.create_logout_url(self.request.path) userprefs = models.get_userprefs() if userprefs: current_time += datetime.timedelta( 0, 0, 0, 0, 0, userprefs.tz_offset) template = template_env.get_template('home.html') # map the template variables to python variables context = { 'current_time': current_time, 'user': user, 'login_url': login_url, 'logout_url': logout_url, 'userprefs': userprefs } self.response.out.write(template.render(context))
def get( self ): foo = quota.get_request_cpu_usage() time = datetime.datetime.now() user = users.get_current_user() if not user: navbar = ( '<p>Welcome, <a href="%s">sign in</a> to customize your experience.</p>' % (users.create_login_url( self.request.path ) ) ) tz_form = '' else: prefs = models.get_userprefs( user.user_id() ) time += datetime.timedelta( 0, 0, 0, 0, 0, prefs.tz_offset ) navbar = ( '<p>Welcome %s, <a href="%s">sign out</a>.</p>' % ( user.email(), users.create_logout_url( self.request.path ) ) ) tz_form = """ <form action="/prefs" method="post"> TZ Offset from UTC (can be negative): <input name="tz_offset" id="tz_offset" type="text" size="4" value="%d" /> <input type="submit" value="Set!" /> </form> """ % prefs.tz_offset bar = quota.get_request_cpu_usage() footer = "APPLICATION_ID=%s, CURRENT_VERSION_ID=%s, AUTH_DOMAIN=%s, SERVER_SOFTWARE=%s, begin=%s, end=%s" % ( os.environ['APPLICATION_ID'], os.environ['CURRENT_VERSION_ID'], os.environ['AUTH_DOMAIN'], os.environ['SERVER_SOFTWARE'], foo, bar ) self.response.headers['Content-Type'] = 'text/html' self.response.out.write( '%s<hr><p>The time is: %s ...</p><hr>%s<hr>©2011<hr>%s' % ( navbar, str(time), tz_form, footer ) )
def get(self): user = self.current_user if user: userprefs = get_userprefs(user["id"]) if not userprefs.acknowledged_terms: self.redirect('/profile?terms=1') return else: userprefs = None locations = dict() friends_count = 0 friends_count_2 = 0 if user: graph = facebook.GraphAPI(version=2.1,access_token=user["access_token"]) friends = get_friends(graph) friends[:] = [friend for friend in friends if is_app_user(str(friend['id']))] for profile in friends: friends_count += 1 friend_prefs = UserPrefs.get_by_key_name(str(profile['id'])) location_name = friend_prefs.location_name location_lng = friend_prefs.location_lng location_lat = friend_prefs.location_lat location_id = (location_lat,location_lng) if (0,0) != location_id: if location_id not in locations: locations[location_id] = dict() locations[location_id]['name'] = location_name locations[location_id]['count'] = 1 locations[location_id]['count_2'] = 0 locations[location_id]['longitude'] = location_lng locations[location_id]['latitude'] = location_lat else: locations[location_id]['count'] += 1 friend_user = User.get_by_key_name(str(profile['id'])) if friend_user.offline_token_created + timedelta(2*365/12) < datetime.utcnow(): logging.info('Friend ' + str(profile['id']) + ' access token expired') continue graph_friend = facebook.GraphAPI(version=2.1,access_token=friend_user.offline_token) friends_2 = get_friends(graph_friend) friends_2[:] = [friend for friend in friends_2 if is_app_user(str(friend['id']))] friends_1_2_with_out_mutual = remove_profile_by_id(friends_2, [user['id']]) for profile_2 in friends_1_2_with_out_mutual: # ignore mutual friend # FIXME inefficient, assumes 1st degree list is shorter than 2nd if any(f['id'] == profile_2['id'] for f in friends): continue # ignore "me" if str(profile_2['id']) == str(user['id']): continue friends_count_2 += 1 friend_prefs_2 = UserPrefs.get_by_key_name(str(profile_2['id'])) location_name = friend_prefs_2.location_name location_lng = friend_prefs_2.location_lng location_lat = friend_prefs_2.location_lat location_id = (location_lat,location_lng) if location_id not in locations: locations[location_id] = dict() locations[location_id]['name'] = location_name locations[location_id]['count'] = 0 locations[location_id]['count_2'] = 1 locations[location_id]['longitude'] = location_lng locations[location_id]['latitude'] = location_lat else: locations[location_id]['count_2'] += 1 locations_list = sorted(locations.items(), key=lambda l: l[1]['name']) template = template_env.get_template('home.html') context = { 'facebook_app_id': FACEBOOK_APP_ID, 'user': user, 'userprefs': userprefs, 'locations': locations_list, 'friends_count': friends_count, 'friends_count_2': friends_count_2, 'google_maps_api_key': GOOGLE_MAPS_API_KEY, 'markers': json.encode(locations_list), } self.response.out.write(template.render(context))
def post(self): logging.info("Entering POST") userprefs = models.get_userprefs() sighting = models.Sighting() logging.info("Entering POST") image = None lat = None lon = None try: for param in ['address','lat','long']: if self.request.get(param): logging.info('Got params %s = %s', param, self.request.get(param)) #logging.info('Got params %s = %s' % param, self.request.get(param)) if self.request.get('address'): sighting.address = self.request.get('address') logging.info("Got addres = '%s'",sighting.address) g = geocoders.GoogleV3() place, (lat, lon) = g.geocode(sighting.address) logging.info("%s: %.5f, %.5f" % (place, lat, lon) ) if self.request.get('img'): image = models.AttachedImage() image.original = self.request.get('img') imageStream = cStringIO.StringIO(image.original) data = EXIF.process_file(imageStream, stop_tag='UNDEF', details=True, strict=False, debug=False) try: lat, lon = exif_helper.get_gps_coords(data) logging.info("got img coords %s %s", lat, lon) except: logging.info("Image eotagging failed") if lat and lon: sighting.geohash = str(Geohash((lat, lon))); sighting.coords = GeoPt(lat, lon); logging.info("geohash is %s", sighting.geohash); else: self.redirect('/record_sighting?=NO LOCATION ERROR') if not sighting.address: sighting.address = "%s, %s" %(lat, lon) logging.info("Writing address as %s", sighting.address) sighting.comment = self.request.get('comment') sighting.spieces = self.request.get('species') logging.info("Sighting is %s", sighting); sighting.put(); if image: image.sighting = sighting.key() image.put() logging.info("image Key is %s", image.key().id()); logging.info("Key is %s", sighting.key().name()); logging.info("Key is %s", sighting.key().id()); except ValueError: # User entered a value that wasn't an integer. Ignore for now. self.redirect('/record_sighting?=ERROR') #except : # logging.info("Generic error"); # self.redirect('/record_sighting?=ERRORgeneral') self. redirect('/record_sighting?id=%s' % (sighting.key().id()))
def get(self): user = self.current_user locations = dict() locations_2 = dict() friends_count = 0 friends_count_2 = 0 if user: graph = facebook.GraphAPI(user["access_token"]) friends = get_friends(graph) for profile in friends: #logging.info(profile) friends_count += 1 if not profile['current_location']: continue else: location_id = profile['current_location']['id'] location_name = profile['current_location']['name'] if location_id not in locations: locations[location_id] = dict() locations[location_id]['name'] = location_name locations[location_id]['count'] = 1 else: locations[location_id]['count'] += 1 #logging.info(locations) # find locations of second degree friends for profile in friends: # is the friend a user? user_friend = User.get_by_key_name(str(profile['uid'])) # user not in database if not user_friend: continue # query their friends using the long-lived access token graph_friend = facebook.GraphAPI(user_friend.access_token) # location of 2nd degree friends friends_friends = get_friends(graph_friend) # save the location of the second degree friends and increment the occurrence count for profile_friend in friends_friends: if not profile_friend['current_location']: continue else: location_id = profile_friend['current_location']['id'] location_name = profile_friend['current_location']['name'] if location_id not in locations_2: locations_2[location_id] = dict() locations_2[location_id]['name'] = location_name locations_2[location_id]['count'] = 1 else: locations_2[location_id]['count'] += 1 friends_count_2 += 1 if user: userprefs = models.get_userprefs(user["id"]) else: userprefs = None if userprefs: current_location = userprefs.location_id template = template_env.get_template('home.html') context = { 'facebook_app_id': FACEBOOK_APP_ID, 'user': user, 'userprefs': userprefs, 'locations': locations, 'locations_2': locations_2, 'friends_count': friends_count, 'friends_count_2': friends_count_2, } self.response.out.write(template.render(context))
def get(self): user = self.current_user friends_list = list() friends_local_not_user_uid_list = list() friends_with_locals_list = list() location_name = None friends_local_user = list() friends_local_not_user = list() friends_friends_local_user = dict() friends_friends_local_not_user = dict() if user: userprefs = models.get_userprefs(user['id']) else: userprefs = None if userprefs: graph = facebook.GraphAPI(user["access_token"]) location_id = str(userprefs.location_id) location_graph = graph.fql("SELECT name FROM place WHERE page_id=" + location_id) location_name = location_graph['data'][0]['name'] # 1st degree user friends at current location friends_local_user = get_app_friends(graph, location_id) # 1st degree non-user friends at current location friends_local_not_user = get_non_app_friends(graph, location_id) # 1st degree friends to invite for profile in friends_local_not_user: friends_local_not_user_uid_list.append(str(profile['uid'])) # all friends friends_user = get_friends(graph) # find 2nd degree friends at current location # from friends from all locations that are users for profile in friends_user: # is the friend a user? user_friend = User.get_by_key_name(str(profile['uid'])) # user not in database if not user_friend: continue # query their friends using the long-lived access token graph_friend = facebook.GraphAPI(user_friend.access_token) # 2nd degree friends at current location # TODO ignore mutual friends and "me" friends_friends_local_not_user2 = get_non_app_friends(graph_friend, location_id) # save the 2nd degree friend and add the current user as a friend for profile_friend in friends_friends_local_not_user2: # ignore mutual friend # FIXME inefficient, assumes 1st degree list is shorter than 2nd if any(f['uid'] == profile_friend['uid'] for f in friends_user): continue if profile_friend['uid'] in friends_friends_local_not_user: friends_friends_local_not_user[profile_friend['uid']]['friends'].append(profile) else: profile_friend['friends'] = list() profile_friend['friends'].append(profile) friends_friends_local_not_user[profile_friend['uid']] = profile_friend friends_list.append(profile) template = template_env.get_template('friends.html') context = { 'facebook_app_id': FACEBOOK_APP_ID, 'user': user, 'userprefs': userprefs, 'friends_list': friends_list, 'friends_local_not_user_uid_list': friends_local_not_user_uid_list, 'friends_with_locals_list': friends_with_locals_list, 'friends_local_user': friends_local_user, 'friends_local_not_user': friends_local_not_user, 'friends_friends_local_not_user': friends_friends_local_not_user, 'location_name': location_name, } self.response.out.write(template.render(context))