예제 #1
0
def post(handler, response):
  people_yaml = handler.request.get('people')
  import logging
  people = yaml.load(people_yaml)
  for person in people:
    user = User.get_or_insert(key_name=person.get('email') or person['name'])
    user.name = person['name']
    user.link = person.get('link')
    user.private = bool(person['private'])
    user.city = person['city']
    user.distance = person['distance']
    if 'location' in person:
      match = re.match('^(.*), (.*)$', person['location'])
      if match:
        (lat, lon) = match.groups()
        user.location = db.GeoPt(lat, lon)
        user.update_location()
    user.put()
    for slug in person['organizing']:
      event = Event.all().filter('slug =', slug).get()
      if event:
        user.add_event(event, bool(1))
    for slug in person['attending']:
      event = Event.all().filter('slug =', slug).get()
      if event:
        user.add_event(event)
예제 #2
0
 def get(self, user_email):
   flow = createFlow(self, user_email)
   credentials = StorageByKeyName(CredentialsModel, user_email, 'credentials').get()
   force = self.request.get('force')
   if force and force == 'true':
       self.redirect(flow.step1_get_authorize_url()) 
       return
   
   if credentials:
     user = User.get_by_key_name(user_email)
     if not user or not user.is_oauth_complete:
       ctxIO = ContextIO(consumer_key=settings.CONTEXTIO_OAUTH_KEY, 
                         consumer_secret=settings.CONTEXTIO_OAUTH_SECRET)
       current_account = ctxIO.post_account(email=user_email)
       user = User.get_or_insert(key_name = user_email, 
                                 user_ctx_id=current_account.id,
                                 email=user_email)
       refresh_token = credentials.refresh_token
       try:
         if not refresh_token:
           raise Exception('no refresh token')
         current_account.post_source(email=user_email,
                                            username=user_email,
                                            server='imap.gmail.com',
                                            provider_refresh_token=refresh_token,
                                            provider_consumer_key=settings.APPENGINE_CONSUMER_KEY)
       except Exception as e:
         logging.error(str(e))
         self.redirect(flow.step1_get_authorize_url())
       user.is_oauth_complete = True
       user.put()
     self.response.out.write(r"""<html><head><script type="text/javascript">window.close();</script></head><body><div id="sbi_camera_button" class="sbi_search" style="left: 0px; top: 0px; position: absolute; width: 29px; height: 27px; border: none; margin: 0px; padding: 0px; z-index: 2147483647; display: none;"></div></body></html>""")
   else:
     logging.info('redirect')
     self.redirect(flow.step1_get_authorize_url()) 
예제 #3
0
	def get(self):
		http = decorator.http()
		# Call the service using the authorized Http object.
		request = service.files().list()
		response = request.execute(http=http)
		resultlist = []
		for f in filter(lambda x:x['mimeType'] == 'application/pdf' and not x['labels']['trashed'],response['items']):
			downloadUrl = f.get('downloadUrl')
			if downloadUrl:
				logging.info('Request file %s' % f['title'])	
				resp, content = http.request(downloadUrl)
				if resp.status == 200:
					logging.info('Request successful')
					pdfobj = PdfFileReader(StringIO(content))
					f['numpages'] = pdfobj.getNumPages()
					resultlist.append(f)				
				else:
					logging.error('An error occured %s' % resp)
			else:
				logging.info('No download url for file %s' % f['title'])

		logging.info('User email: %s' % users.get_current_user().email())
		curUser = User.get_or_insert(users.get_current_user().email(),email=users.get_current_user().email())
		for f in resultlist:
			Doc.get_or_insert(f['id'],parent=curUser.key(),title=f['id'],totalPages=f['numpages'],user=curUser)

		template_values = {
			'filelist' : resultlist
		}
		template = jinja_environment.get_template('home.html')
		self.response.out.write(template.render(template_values))
예제 #4
0
def user():
    user_key = request.headers.get("X-SecondLife-Owner-Key")
    user_name = request.headers.get("X-SecondLife-Owner-Name")
    version = request.args.get("version")
    user_name_ = request.args.get("username")

    if user_name != user_name_:
        user_name = user_name_

    if not version or version < VERSION:
        send_update(user_name, user_key)
        if MANDATORY:
            return Response("Your Navigator is outdated, I'm sending you version %s." % VERSION, status=406)
        else:
            return Response("Your Navigator is outdated, I'm sending you version %s." % VERSION)

    user = User.get_or_insert(user_key, name=user_name)
    if not user is None:
        if user.name != user_name:
            user.name = user_name

        user.uuid = uuid4().hex
        user.put()
        memcache.set(key="user-%s" % user_key, value=serialize_entities(user), time=CACHE_TIME)
        return Response("Connected. Your navigator is up-to-date.")
    else:
        return Response("Unable to create a new user. Try rezzinga a new HUD.", status=500)
예제 #5
0
 def current_user(self):
   """Returns the logged-in User object."""
   u = users.get_current_user()
   if u:
     key_name = User.key_name_from_email(u.email())
     user = memcache.get(key_name)
     if user:
       if not user.banned:
         return user
     try:
       # User models are keyed by user email
       user = User.get_or_insert(key_name=key_name, user=u)
       user.invalidate() # cache it
       if not user.banned:
         return user
     except CapabilityDisabledError:
       pass
예제 #6
0
 def current_user(self):
   """Returns the logged-in User object."""
   user = users.get_current_user()
   if user:
     return User.get_or_insert(key_name=user.email())