def get(self): user = users.get_current_user() if user: # Filter by the google appengine user id property. active_user = User.query(User.google_id == user.user_id()).fetch(1) if not active_user: # If we couldn't find a user it means that is the first time it uses the application. # We just need to create a new entity with the get_current_user() information. active_user = User(email=user.email(), username=user.nickname(), google_id=user.user_id()) active_user.put() logging.info("New user created. Email address is: %s", active_user.email) else: active_user = active_user[0] token = channel.create_channel(str(active_user.key.id())) memcache.add(key=str(active_user.key.id()), value=token) template_vars = { 'user': active_user, 'token': token, 'logout_url': users.create_logout_url('/welcome'), 'boards': Board.query().order(Board.created_at) } template = JINJA_ENVIRONMENT.get_template('root.html') self.response.write(template.render(template_vars)) else: self.redirect('/welcome')
import webapp2 from handlers import web from handlers import api from handlers import channel from models.board import Board # We need to initialize the default board on the application startup. # We search for them, in case they are not present, we create them. if not Board.query(Board.name == 'To Do').fetch(1): Board(name='To Do').put() if not Board.query(Board.name == 'In Progress').fetch(1): Board(name='In Progress').put() if not Board.query(Board.name == 'Done').fetch(1): Board(name='Done').put() # Configure the WSGIApplication routes app = webapp2.WSGIApplication([ webapp2.Route(r'/', handler=web.RootHandler, methods=['GET']), webapp2.Route(r'/welcome', handler=web.WelcomeHandler, methods=['GET']), webapp2.Route(r'/api/cards', handler=api.CardHandler, methods=['POST', 'GET']), webapp2.Route(r'/api/cards/<card_id>', handler=api.GetCardHandler, methods=['GET']), webapp2.Route(r'/api/cards/<card_id>', handler=api.UpdateCardHandler, methods=['PUT']), webapp2.Route(r'/api/cards/<card_id>', handler=api.DestroyCardHandler, methods=['DELETE']), webapp2.Route(r'/_ah/channel/connected/', handler=channel.ConnectedHandler, methods=['POST']), webapp2.Route(r'/_ah/channel/disconnected/', handler=channel.DisconnectedHandler, methods=['POST']) ], debug=True)