def get(self):
        user = User.get_by_id(users.get_current_user().user_id())
        urlsafe_key = self.request.get('page')
        tqx = self.request.get('tqx')

        try:
            logging.info('Get page by urlsafe %s' % urlsafe_key)

            key = ndb.Key(urlsafe=urlsafe_key)
            page = key.get()
        except:
            logging.error('Error generating Page object from key.id().')
            page = None

        if page:
            if page.user == user.key:
                description = {
                    'date': ('datetime', 'Fecha'),
                    'resp_time': ('number', 'Tiempo de respuesta'),
                }

                data = []

                # Query the data
                query = Ping.query(Ping.page == page.key)
                query = query.order(-Ping.date)

                # fetch 288 pings representing the last 24 hrs
                pings = query.fetch(288)

                for ping in pings:
                    entry = {
                        'date': ping.date,
                        'resp_time': ping.resp_time,
                    }
                    data.append(entry)

                data_table = gviz_api.DataTable(description)
                data_table.LoadData(data)

                self.response.headers['Content-Type'] = 'text/plain'
                self.response.out.write(data_table.ToJSonResponse(
                    columns_order=('date', 'resp_time'),
                    order_by="date",
                    req_id=tqx[6:] if tqx else 0))
            else:
                # Return 401 Unauthorized
                logging.error('Unauthorized')
                self.response.set_status(401)
                self.response.out.write('Unauthorized')
        else:
            # Return 404 Not Found
            logging.error('Not Found')
            self.response.set_status(404)
            self.response.out.write('Not Found')
    def get(self):
        current_user = users.get_current_user()

        template_args = {}

        # Make sure a User entity gets created.
        if current_user:
            user = User.get_by_id(current_user.user_id())
            if not user:
                self.redirect('/register')
            else:
                q = Page.query(ancestor=user.key)
                q = q.order(Page.name)

                pages = q.fetch(10)

                # Issue asynchronous fetch operations per page
                for page in pages:
                    query = Ping.query(Ping.page == page.key)
                    query = query.order(-Ping.date)

                    # fetch 288 pings representing the last 24 hrs
                    page.pings_future = query.fetch_async(288)

                # Reading fetch results and calculate avg latency
                for page in pages:
                    pings = page.pings_future.get_result()

                    total_resp_time = 0

                    if pings:
                        for p in pings:
                            total_resp_time += p.resp_time

                        page.avg_resp_time = total_resp_time/len(pings)

                template_args.update({
                    'pages': pages,
                })

        self.render_template('index.html', **template_args)