Exemple #1
0
	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))
Exemple #3
0
    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('/')
Exemple #5
0
 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('/')
Exemple #6
0
 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('/')
Exemple #7
0
 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('/')
Exemple #8
0
 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('/')
Exemple #9
0
 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('/')
Exemple #11
0
    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('/')
Exemple #13
0
	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('/')
Exemple #14
0
    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')
Exemple #15
0
 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('/')
Exemple #17
0
 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('/')
Exemple #18
0
  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')
Exemple #19
0
	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( '/' )
Exemple #20
0
 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))
Exemple #21
0
 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')
Exemple #22
0
	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))
Exemple #23
0
    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))
Exemple #24
0
  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))
Exemple #26
0
	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))
Exemple #27
0
    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))
Exemple #28
0
    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))
Exemple #29
0
 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))
Exemple #30
0
	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))
Exemple #31
0
    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))
Exemple #32
0
    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))
Exemple #34
0
    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)
Exemple #36
0
	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))
Exemple #37
0
	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>&copy;2011<hr>%s'
			% ( navbar, str(time), tz_form, footer ) )
Exemple #38
0
  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()))
Exemple #40
0
  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))
Exemple #41
0
  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))