"""Common parameter parsing."""
self.request = request
self.page = request.params.get("page", 1)
- self.servers = self.raw()
+ self.servers = self.server_index()
- def raw(self):
+ def server_index(self):
"""Returns the raw data shared by all renderers."""
try:
- server_q = DBSession.query(Server).order_by(Server.server_id.desc())
+ server_q = DBSession.query(Server)\
+ .filter(Server.active_ind)\
+ .order_by(Server.server_id.desc())
servers = Page(server_q, self.page, items_per_page=25, url=page_url)
except Exception as e:
"""Common parameter parsing."""
super(ServerTopMaps, self).__init__(request, limit, last)
- self.top_maps = self.raw()
+ self.top_maps = self.top_maps()
- def raw(self):
+ def top_maps(self):
"""Returns the raw data shared by all renderers."""
try:
top_maps_q = DBSession.query(
fg.row_number().over(order_by=expr.desc(func.count())).label("rank"),
Game.map_id, Map.name, func.count().label("times_played"))\
- .filter(Map.map_id==Game.map_id)\
- .filter(Game.server_id==self.server_id)\
+ .filter(Map.map_id == Game.map_id)\
+ .filter(Game.server_id == self.server_id)\
.filter(Game.create_dt > (self.now - timedelta(days=self.lifetime)))\
.group_by(Game.map_id)\
.group_by(Map.name) \
return {
"server_id": self.server_id,
"top_maps": self.top_maps,
+ "lifetime": self.lifetime,
"query": query,
}
def __init__(self, request, limit=INDEX_COUNT, last=None):
"""Common parameter parsing."""
super(ServerTopScorers, self).__init__(request, limit, last)
- self.top_scorers = self.raw()
+ self.top_scorers = self.top_scorers()
- def raw(self):
+ def top_scorers(self):
"""Top scorers on this server by total score."""
try:
top_scorers_q = DBSession.query(
.filter(Game.server_id == self.server_id)\
.filter(Player.player_id > 2)\
.filter(PlayerGameStat.create_dt >
- (self.now - timedelta(days=LEADERBOARD_LIFETIME)))\
+ (self.now - timedelta(days=self.lifetime)))\
.order_by(expr.desc(func.sum(PlayerGameStat.score)))\
.group_by(Player.nick)\
.group_by(Player.player_id)
return {
"server_id": self.server_id,
"top_scorers": top_scorers,
+ "lifetime": self.lifetime,
"query": query,
}
def __init__(self, request, limit=INDEX_COUNT, last=None):
"""Common parameter parsing."""
super(ServerTopPlayers, self).__init__(request, limit, last)
- self.top_players = self.raw()
+ self.top_players = self.top_players()
- def raw(self):
+ def top_players(self):
"""Top players on this server by total playing time."""
try:
top_players_q = DBSession.query(
return {
"server_id": self.server_id,
"top_players": top_players,
+ "lifetime": self.lifetime,
"query": query,
}
# this view uses data from other views, so we'll save the data at that level
try:
- self.server = DBSession.query(Server).filter_by(server_id=self.server_id).one()
+ self.server = DBSession.query(Server)\
+ .filter(Server.active_ind)\
+ .filter(Server.server_id == self.server_id)\
+ .one()
+
self.top_maps_v = ServerTopMaps(self.request, limit=LEADERBOARD_COUNT)
self.top_scorers_v = ServerTopScorers(self.request, limit=LEADERBOARD_COUNT)
self.top_players_v = ServerTopPlayers(self.request, limit=LEADERBOARD_COUNT)
except:
raise HTTPNotFound
- def raw(self):
- """Returns the raw data shared by all renderers."""
- return {
- 'server': self.server,
- 'top_players': self.top_players_v.top_players,
- 'top_scorers': self.top_scorers_v.top_scorers,
- 'top_maps': self.top_maps_v.top_maps,
- 'recent_games': self.recent_games,
- }
-
def html(self):
"""For rendering this data using something HTML-based."""
return {
'server': self.server,
- 'top_players': self.top_players_v.html()["top_players"],
- 'top_scorers': self.top_scorers_v.html()["top_scorers"],
- 'top_maps': self.top_maps_v.html()["top_maps"],
+ 'top_players': self.top_players_v.html().get("top_players", None),
+ 'top_scorers': self.top_scorers_v.html().get("top_scorers", None),
+ 'top_maps': self.top_maps_v.html().get("top_maps", None),
'recent_games': self.recent_games,
'lifetime': self.lifetime,
}