Ejemplo n.º 1
0
 def get(self):
   user = self.GetCurrentUser()
   if (not user):
     self.respondWithDictionaryAsJSON({"error":"please authenticate by setting the Authorization header to your API key"})
     return
   cursor = self.request.get("cursor")
   if cursor:
     cursor = cursor
   else:
     cursor = None
   comments = db.GqlQuery("select * from Comment order by posted_at desc")
   if cursor:
     comments.with_cursor(start_cursor=cursor)
   results = []
   for c in comments:
     try:
       results.append({"id":c.key().id(),
                       "user":c.user.email(),
                       "subject":c.subject,
                       "body":c.body,
                       "radar":c.radar.number,
                       "posted_at":str(c.posted_at),
                       "is_reply_to":c.is_reply_to and c.is_reply_to.key().id() or None})  
     except Exception:
       None
     if len(results) == 100:
       break
   response = {"result":results, "cursor":comments.cursor()}
   apiresult = simplejson.dumps(response)
   self.respondWithText(apiresult)
Ejemplo n.º 2
0
 def get(self):
   page = self.request.get("page")
   if page:
     page = int(page)
   else:
     page = 1
   count = self.request.get("count")
   if count:
     count = int(count)
   else:
     count = 100
   comments = db.GqlQuery("select * from Comment order by posted_at desc").fetch(count,(page-1)*count)
   result = []
   for c in comments:
     try:
       commentInfo = {
         "id":c.key().id(),
         "user":c.user.email(), 
         "subject":c.subject,
         "body":c.body,
         "radar":c.radar.number,
         "created":str(c.posted_at),
       }
       if c.is_reply_to:
           commentInfo["is_reply_to"] = c.is_reply_to.key().id()
       result.append(commentInfo)  
     except Exception:
       None # we'll get here if the corresponding radar was deleted
   response = {"result":result}
   apiresult = simplejson.dumps(response)
   self.respondWithText(apiresult)
Ejemplo n.º 3
0
  def get(self):
    user = self.GetCurrentUser()
    if (not user):
      self.respondWithDictionaryAsJSON({"error":"please authenticate by setting the Authorization header to your API key"})
      return
    cursor = self.request.get("cursor")
    if cursor:
      cursor = cursor
    else:
      cursor = None
    radars = db.GqlQuery("select * from Radar order by modified desc")
    if cursor:
      radars.with_cursor(start_cursor=cursor)
    results = []
    for r in radars:
      results.append({"id":r.key().id(),
                      "title":r.title, 
                      "number":r.number, 
                      "user":r.user.email(),
                      "status":r.status, 
                      "description":r.description,
                      "resolved":r.resolved,
                      "product":r.product,
                      "classification":r.classification,
                      "reproducible":r.reproducible,
                      "product_version":r.product_version,
		      "created":str(r.created),
                      "modified":str(r.modified),
                      "originated":r.originated})
      if len(results) == 100:
        break
    response = {"result":results, "cursor":radars.cursor()}
    apiresult = simplejson.dumps(response)
    self.respondWithText(apiresult)
Ejemplo n.º 4
0
 def get(self):  
   m = PAGE_PATTERN.match(self.request.path)
   if m:
     number = m.group(1)
     if (int(number) > 500):
       self.error(404)
       self.respondWithText('Not found')
       return 
     if (int(number) > 1):
       showprev = int(number)-1
     else: 
       showprev = None
     shownext = int(number)+1
     pagename = "page" + number
     biglist = memcache.get(pagename)
     if biglist is None:
       radars = db.GqlQuery("select * from Radar order by number_intvalue desc").fetch(PAGESIZE,(int(number)-1)*PAGESIZE)
       if len(radars) > 0:
         path = os.path.join(os.path.dirname(__file__), os.path.join('templates', 'biglist.html'))
         biglist = template.render(path, {'radars':radars})
         memcache.add(pagename, biglist, 3600) # one hour, but we also invalidate on edits and adds
       else:
         biglist = "<p>That's all.</p>"
     self.respondWithTemplate('page.html', {'pagenumber':number, 'shownext':shownext, 'showprev':showprev, "biglist": biglist})
   else:
     self.respondWithText('invalid page request')
Ejemplo n.º 5
0
 def get(self):    
   user = users.GetCurrentUser()
   if (not user):
     self.respondWithTemplate('please-sign-in.html', {'action': 'view your Radars'})
   else:
     radars = db.GqlQuery("select * from Radar where user = :1 order by number_intvalue desc", user).fetch(1000)
     self.respondWithTemplate('radar-list.html', {"radars": radars})
Ejemplo n.º 6
0
 def get(self):
   page = self.request.get("page")
   if page:
     page = int(page)
   else:
     page = 1
   count = self.request.get("count")
   if count:
     count = int(count)
   else:
     count = 100
   apiresult = memcache.get("apiresult")
   if apiresult is None:
     radars = db.GqlQuery("select * from Radar order by number_intvalue desc").fetch(count,(page-1)*count)
     response = {"result":
                 [{"id":r.key().id(),
                   "classification":r.classification,
                   "created":str(r.created),
                   "description":r.description,
                   "modified":str(r.modified),
                   "number":r.number, 
                   "originated":r.originated,
                   "parent":r.parent_number,
                   "product":r.product,
                   "product_version":r.product_version,
                   "reproducible":r.reproducible,
                   "resolved":r.resolved,
                   "status":r.status, 
                   "title":r.title, 
                   "user":r.user.email()}
                  for r in radars]}
     apiresult = simplejson.dumps(response)
     #memcache.add("apiresult", apiresult, 600) # ten minutes, but we also invalidate on edits and adds
   self.respondWithText(apiresult)
Ejemplo n.º 7
0
 def get(self):
     page = self.request.get("page")
     if page:
         page = int(page)
     else:
         page = 1
     comments = db.GqlQuery(
         "select * from Comment order by posted_at desc").fetch(
             100, (page - 1) * 100)
     result = []
     for c in comments:
         try:
             result.append({
                 "id":
                 c.key().id(),
                 "user":
                 c.user.email(),
                 "subject":
                 c.subject,
                 "body":
                 c.body,
                 "radar":
                 c.radar.number,
                 "is_reply_to":
                 c.is_reply_to and c.is_reply_to.key().id() or ""
             })
         except Exception:
             None
     response = {"result": result}
     apiresult = simplejson.dumps(response)
     self.respondWithText(apiresult)
Ejemplo n.º 8
0
 def get(self):      
   biglist = memcache.get("biglist")
   if biglist is None:
     radars = db.GqlQuery("select * from Radar order by number_intvalue desc").fetch(100)
     path = os.path.join(os.path.dirname(__file__), os.path.join('templates', 'biglist.html'))
     biglist = template.render(path, {'radars':radars})
     memcache.add("biglist", biglist, 3600) # one hour, but we also invalidate on edits and adds
   self.respondWithTemplate('index.html', {"biglist": biglist})
Ejemplo n.º 9
0
 def get(self):
   page = self.request.get("page")
   if page:
     page = int(page)
   else:
     page = 1
   apiresult = memcache.get("apiresult")
   if apiresult is None:
     radars = db.GqlQuery("select * from Radar order by number desc").fetch(100,(page-1)*100)
     response = {"result":[r.key().id() for r in radars]}
     apiresult = simplejson.dumps(response)
   self.respondWithText(apiresult)
Ejemplo n.º 10
0
 def post(self):
     user = self.GetCurrentUser()
     if (not user):
         self.respondWithTemplate('please-sign-in.html',
                                  {'action': 'add Radars'})
     else:
         title = self.request.get("title")
         number = self.request.get("number")
         status = self.request.get("status")
         description = self.request.get("description")
         resolved = self.request.get("resolved")
         product = self.request.get("product")
         classification = self.request.get("classification")
         reproducible = self.request.get("reproducible")
         product_version = self.request.get("product_version")
         originated = self.request.get("originated")
         radar = Radar(title=title,
                       number=number,
                       number_intvalue=int(number),
                       status=status,
                       user=user,
                       description=description,
                       resolved=resolved,
                       product=product,
                       classification=classification,
                       reproducible=reproducible,
                       product_version=product_version,
                       originated=originated,
                       created=datetime.datetime.now(),
                       modified=datetime.datetime.now())
         radar.put()
         memcache.flush_all()
         # tweet this.
         if 1:
             #tweet = ("[rdar://%s] %s: %s" % (number, radar.username(), title))
             tweet = ("http://openradar.me/%s %s: %s" %
                      (number, radar.username(), title))
             tweet = tweet[0:140]
             secrets = db.GqlQuery("select * from Secret where name = :1",
                                   "retweet").fetch(1)
             if len(secrets) > 0:
                 secret = secrets[0].value
                 form_fields = {"message": tweet, "secret": secret}
                 form_data = urllib.urlencode(form_fields)
                 try:
                     result = fetch(
                         "http://sulfur.neontology.com/retweet.php",
                         payload=form_data,
                         method=POST)
                 except Exception:
                     None  # let's not worry about downstream problems
         self.redirect("/myradars")
Ejemplo n.º 11
0
 def get(self):
   username = self.request.get("user")
   user = users.User(username)
   searchlist = ""
   if user:
     query = db.GqlQuery("select * from Radar where user = :1 order by number desc", user)
     radars = query.fetch(100)
     if len(radars) > 0:
       path = os.path.join(os.path.dirname(__file__), os.path.join('../templates', 'biglist.html'))
       searchlist = template.render(path, {'radars':radars})
     self.respondWithTemplate('byuser.html', {"radarlist": searchlist})
   else:
     self.respondWithText('unknown user')
Ejemplo n.º 12
0
 def get(self):
     user = self.GetCurrentUser()
     if (not user):
         self.respondWithDictionaryAsJSON({
             "error":
             "please authenticate by setting the Authorization header to your API key (http://www.openradar.me/apikey)"
         })
         return
     page = self.request.get("page")
     if page:
         page = int(page)
     else:
         page = 1
     if page > 10:
         self.respondWithText("")
         return
     count = self.request.get("count")
     if count:
         count = int(count)
     else:
         count = 100
     apiresult = memcache.get("apiresult")
     if apiresult is None:
         radars = db.GqlQuery(
             "select * from Radar order by number_intvalue desc").fetch(
                 count, (page - 1) * count)
         response = {
             "result": [{
                 "id": r.key().id(),
                 "classification": r.classification,
                 "created": str(r.created),
                 "description": r.description,
                 "modified": str(r.modified),
                 "number": r.number,
                 "originated": r.originated,
                 "parent": r.parent_number,
                 "product": r.product,
                 "product_version": r.product_version,
                 "reproducible": r.reproducible,
                 "resolved": r.resolved,
                 "status": r.status,
                 "title": r.title,
                 "user": r.user.email()
             } for r in radars]
         }
         apiresult = simplejson.dumps(response)
         #memcache.add("apiresult", apiresult, 600) # ten minutes, but we also invalidate on edits and adds
     self.respondWithText(apiresult)
Ejemplo n.º 13
0
 def get(self):
     user = self.GetCurrentUser()
     if (not user):
         self.respondWithDictionaryAsJSON({
             "error":
             "please authenticate by setting the Authorization header to your API key (http://www.openradar.me/apikey)"
         })
         return
     page = self.request.get("page")
     if page:
         page = int(page)
     else:
         page = 1
     if page > 10:
         self.respondWithText("")
         return
     count = self.request.get("count")
     if count:
         count = int(count)
     else:
         count = 100
     comments = db.GqlQuery(
         "select * from Comment order by posted_at desc").fetch(
             count, (page - 1) * count)
     result = []
     for c in comments:
         try:
             commentInfo = {
                 "id": c.key().id(),
                 "user": c.user.email(),
                 "subject": c.subject,
                 "body": c.body,
                 "radar": c.radar.number,
                 "created": str(c.posted_at),
             }
             if c.is_reply_to:
                 commentInfo["is_reply_to"] = c.is_reply_to.key().id()
             result.append(commentInfo)
         except Exception:
             None  # we'll get here if the corresponding radar was deleted
     response = {"result": result}
     apiresult = simplejson.dumps(response)
     self.respondWithText(apiresult)
Ejemplo n.º 14
0
 def get(self):
     comments = db.GqlQuery(
         "select * from Comment order by posted_at desc").fetch(20)
     self.respondWithTemplate('comments-recent.html',
                              {"comments": comments})