diff options
Diffstat (limited to 'server.py')
-rwxr-xr-x | server.py | 53 |
1 files changed, 51 insertions, 2 deletions
@@ -1,5 +1,6 @@ #!/usr/bin/env python3 +from collections import defaultdict import json import operator import os @@ -35,6 +36,53 @@ class SearchHandler(BaseHandler): ''', '%{}%'.format(q)) self.render('search.html', corps=corps) +class CorporationHandler(BaseHandler): + def get(self, corp_id): + with db.cursor() as c: + kills = db.query(c, ''' + SELECT DISTINCT(kills.kill_id), kill_time FROM kills + JOIN characters on characters.kill_id = kills.kill_id + WHERE corporation_id = ? + ''', corp_id) + kill_ids = list(map(operator.itemgetter('kill_id'), kills)) + char_rows = db.query(c, ''' + SELECT + kill_id, victim, final_blow, + character_id, character_name, corporation_id, corporation_name, alliance_id, alliance_name, faction_id, faction_name + FROM characters + WHERE kill_id IN ({}) + '''.format(','.join(map(str, kill_ids)))) + characters = defaultdict(dict) + for char in char_rows: + kill_id = char['kill_id'] + if char['victim']: + characters[kill_id]['victim'] = char + elif char['final_blow']: + characters[kill_id]['final_blow'] = char + for kill in kills: + chars = characters[kill['kill_id']] + kill['victim'] = chars['victim'] + kill['final_blow'] = chars['final_blow'] + self.render('corporation.html', kills=kills) + +class KillHandler(BaseHandler): + def get(self, kill_id): + with db.cursor() as c: + kill = db.get(c, ''' + SELECT kill_time, solarSystemName, security FROM kills + JOIN eve.mapSolarSystems on solar_system_id = solarSystemID + WHERE kill_id = ? + ''', kill_id) + characters = db.query(c, ''' + SELECT ship_type_id, character_id, character_name, + corporation_id, corporation_name, alliance_id, alliance_name, faction_id, faction_name + typeName + FROM characters + JOIN eve.invTypes on ship_type_id = typeID + WHERE kill_id = ? + ''', kill_id) + self.render('kill.html', kill=kill, characters=characters) + class CSSHandler(tornado.web.RequestHandler): def get(self, css_path): css_path = os.path.join(os.path.dirname(__file__), 'web', 'static', css_path) + '.ccss' @@ -42,13 +90,14 @@ class CSSHandler(tornado.web.RequestHandler): self.set_header('Content-Type', 'text/css') self.write(cleancss.convert(f)) - if __name__ == '__main__': tornado.web.Application( handlers=[ (r'/', MainHandler), (r'/search', SearchHandler), - (r"/(css/.+)\.css", CSSHandler), + (r'/corporation/(.+)', CorporationHandler), + (r'/kill/(.+)', KillHandler), + (r'/(css/.+)\.css', CSSHandler), ], template_path=os.path.join(os.path.dirname(__file__), 'web/templates'), cookie_secret=config.cookie_secret, |