Ejemplo n.º 1
0
  def get(self):
    players = {}
    levels = {}
    fetch = Level.all().fetch(100000)
    for l in fetch:
      levels[l.id] = l
      if not players.has_key(l.udid):
	players[l.udid] = Player()
      players[l.udid].uploaded.append(l)

    ratings = {}
    fetch = LevelStatistics.all().fetch(100000)
    for r in fetch:
      if not players.has_key(r.udid):
	players[r.udid] = Player()
      players[r.udid].ratings.append(r)

    self.w("players: %d<br>" % len(players))
    self.w("<table border=1>")
    for udid, p in players.items():
      self.w("<tr>")
      self.w("<td valign=top>%s</td>" % udid)
      self.w("<td valign=top>")
      for u in p.uploaded:
	self.response.out.write("%s" % u.name)
      self.w("</td>")
      self.w("<td valign=top>")
      for r in p.ratings:
	if levels.has_key(r.levelid):
	  self.response.out.write("%s" % levels[r.levelid].name)
	else:
	  self.response.out.write("<deleted>")
      self.w("</td>")
      self.w("</tr>")
    self.w("</table>")
Ejemplo n.º 2
0
Archivo: api.py Proyecto: wader/slippy
  def do(self, limit):
    levels_query = Level.all(keys_only=True)

    if limit == "rated":
      levels_query.filter("rated =", True)
    elif limit == "new":
      one_month_ago = datetime.datetime.now() - datetime.timedelta(days=31)
      levels_query.filter("rated =", True)
      levels_query.filter("added >", one_month_ago)
    elif limit == "top":
      levels_query.filter("rated =", True)
      levels_query.order("-rating")

    levelkeys = levels_query.fetch(1000)
    levels = db.get(levelkeys)

    if self.format == "rss":
      last = datetime.datetime.now()
      if len(levels) > 0:
        last = levels[0].added

      def name(l):
	if l.author == "":
	  return l.name
	return l.name + " by " + l.author

      self.raw = True
      self.response.headers["Content-Type"] = "application/rss+xml"
      self.value = PyRSS2Gen.RSS2(
              title="Slippy recent levels",
              link="http://www.inwader.com/slippy/",
              description="Recently uploaded levels for Slippy the puzzel game",
              lastBuildDate=last,
              items=[
              PyRSS2Gen.RSSItem(
                      title=name(l),
                      link="http://www.inwader.com/slippy/",
                      description="",
                      guid=PyRSS2Gen.Guid(l.id, isPermaLink=False),
                      pubDate=l.added)
              for l in levels
              ]).to_xml(encoding="utf-8")
    else:
      self.value = {
        "version": 0,
        "levels": [l.dict() for l in levels]
      }
Ejemplo n.º 3
0
  def get(self):
    while True:
      old = db.get(LevelStatistics.all(keys_only=True).filter("new =", False).fetch(1000))
      if len(old) == 0:
	break

      updated = []
      for o in old:
	o.new = True
	updated.append(o)
      db.put(updated)

    updated = []
    for l in db.get(Level.all(keys_only=True).fetch(1000)):
      l.ratings = 0
      l.ratingsum = 0
      updated.append(l)
    db.put(updated)
    logging.debug("reset ratings")