Esempio n. 1
0
def delete_task(task_id):
    """Deletes the given task.

  Args:
    task_id: The integer id of the task to delete.
  """
    ndb.Key('Task', task_id).delete()
Esempio n. 2
0
 def post(self):
   # We set the parent key on each 'Greeting' to ensure each guestbook's
   # greetings are in the same entity group.
   guestbook_name = self.request.get('guestbook_name')
   greeting = Greeting(parent=ndb.Key("Book",
                                      guestbook_name or "*fakebook*"),
                       content=self.request.get('content'))
   greeting.put()
   self.redirect('/?' + urllib.urlencode({'guestbook_name': guestbook_name}))
Esempio n. 3
0
def _HandleMessage(handler):
    k = handler.request.get('key')
    g = None
    if k:
        g = ndb.Key(urlsafe=k).get()
    else:
        g = Greeting()
        g.message = '1234'
        g.put()
    handler.response.out.write(g.key.urlsafe())
Esempio n. 4
0
 def _hp_callback(self, message):
     nickname = 'Anonymous'
     if message.userid:
         nickname = yield get_nickname(message.userid)
     # Check if there's an URL.
     body = message.body
     m = re.search(r'(?i)\bhttps?://\S+[^\s.,;\]\}\)]', body)
     if not m:
         escbody = cgi.escape(body)
     else:
         url = m.group()
         pre = body[:m.start()]
         post = body[m.end():]
         title = ''
         key = ndb.Key(flat=[UrlSummary.GetKind(), url])
         summary = yield key.get_async()
         if not summary or summary.when < time.time() - UrlSummary.MAX_AGE:
             rpc = urlfetch.create_rpc(deadline=0.5)
             urlfetch.make_fetch_call(rpc, url, allow_truncated=True)
             t0 = time.time()
             result = yield rpc
             t1 = time.time()
             logging.warning('url=%r, status=%r, dt=%.3f', url,
                             result.status_code, t1 - t0)
             if result.status_code == 200:
                 bodytext = result.content
                 m = re.search(r'(?i)<title>([^<]+)</title>', bodytext)
                 if m:
                     title = m.group(1).strip()
                 summary = UrlSummary(key=key,
                                      url=url,
                                      title=title,
                                      when=time.time())
                 yield summary.put_async()
         hover = ''
         if summary.title:
             hover = ' title="%s"' % summary.title
         escbody = (cgi.escape(pre) + '<a%s href="%s">' %
                    (hover, cgi.escape(url)) + cgi.escape(url) + '</a>' +
                    cgi.escape(post))
     text = '%s - %s - %s<br>' % (cgi.escape(nickname),
                                  time.ctime(message.when or 0), escbody)
     if message.when is None:
         message.when = 0
     raise ndb.Return((-message.when, text))
Esempio n. 5
0
def memoizing_fibonacci(n):
    """A memoizing recursive Fibonacci to exercise RPCs."""
    if n <= 1:
        raise ndb.Return(n)
    key = ndb.Key(FibonacciMemo, str(n))
    memo = yield key.get_async(ndb_should_cache=False)
    if memo is not None:
        assert memo.arg == n
        logging.info('memo hit: %d -> %d', n, memo.value)
        raise ndb.Return(memo.value)
    logging.info('memo fail: %d', n)
    a = yield memoizing_fibonacci(n - 1)
    b = yield memoizing_fibonacci(n - 2)
    ans = a + b
    memo = FibonacciMemo(key=key, arg=n, value=ans)
    logging.info('memo write: %d -> %d', n, memo.value)
    yield memo.put_async(ndb_should_cache=False)
    raise ndb.Return(ans)
Esempio n. 6
0
    def get(self):
        self.response.out.write('<html><body>')
        guestbook_name = self.request.get('guestbook_name')
        ancestor_key = ndb.Key("Book", guestbook_name or "*fakebook*")
        greetings = Greeting.QueryBook(ancestor_key)

        for greeting in greetings:
            self.response.out.write('<blockquote>%s</blockquote>' %
                                    cgi.escape(greeting.content))

        self.response.out.write("""
          <form action="/sign?%s" method="post">
            <div><textarea name="content" rows="3" cols="60"></textarea></div>
            <div><input type="submit" value="Sign Guestbook"></div>
          </form>
          <hr>
          <form>Guestbook name: <input value="%s" name="guestbook_name">
          <input type="submit" value="switch"></form>
        </body>
      </html>""" % (urllib.urlencode({'guestbook_name': guestbook_name
                                      }), cgi.escape(guestbook_name)))
Esempio n. 7
0
def account_key(userid):
    return ndb.Key(Account, userid)