summaryrefslogtreecommitdiffstats
path: root/server.py
diff options
context:
space:
mode:
authorraylu <raylu@gridium.com>2013-10-20 00:42:11 -0700
committerraylu <raylu@gridium.com>2013-10-20 00:42:11 -0700
commit585ad90d3cc59ad7d4fd306170b710699e48efda (patch)
treeb38c67aafb17940c342e60adf95b3f3b10300181 /server.py
parent02a3b0d8caf160da78bd4b355a7c11d558abe036 (diff)
downloadykill-585ad90d3cc59ad7d4fd306170b710699e48efda.tar.xz
show more data
Diffstat (limited to 'server.py')
-rwxr-xr-xserver.py53
1 files changed, 51 insertions, 2 deletions
diff --git a/server.py b/server.py
index 8c87850..54afcc2 100755
--- a/server.py
+++ b/server.py
@@ -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,