فهرست منبع

alliance and character pages

raylu 12 سال پیش
والد
کامیت
0dea8f430e
7فایلهای تغییر یافته به همراه34 افزوده شده و 26 حذف شده
  1. 7 7
      db/queries.py
  2. 6 5
      importer.py
  3. 4 4
      server.py
  4. 4 4
      web/api.py
  5. 3 0
      web/static/css/kill_list.ccss
  6. 8 4
      web/static/js/kill_list.js
  7. 2 2
      web/templates/kill_list.html

+ 7 - 7
db/queries.py

@@ -19,7 +19,7 @@ def search(q):
 			''', like_str)
 	return {'alliances': alliances, 'corporations': corps, 'characters': chars}
 
-def corporation(corp_id):
+def kill_list(entity_type, entity_id):
 	with db.cursor() as c:
 		kills = db.query(c, '''
 			SELECT DISTINCT(kills.kill_id), kill_time, cost,
@@ -29,8 +29,8 @@ def corporation(corp_id):
 			JOIN kill_costs ON kill_costs.kill_id = kills.kill_id
 			JOIN eve.mapSolarSystems ON solar_system_id = solarSystemID
 			JOIN eve.mapRegions ON mapSolarSystems.regionID = mapRegions.regionID
-			WHERE corporation_id = ? LIMIT 100
-			''', corp_id)
+			WHERE {}_id = ? LIMIT 100
+			'''.format(entity_type), entity_id)
 		kill_ids = list(map(operator.itemgetter('kill_id'), kills))
 		char_rows = db.query(c, '''
 			SELECT
@@ -42,7 +42,7 @@ def corporation(corp_id):
 			WHERE kill_id IN ({})
 			'''.format(','.join(map(str, kill_ids))))
 		characters = defaultdict(dict)
-		corp_name = None
+		entity_name = None
 		for kill_id in kill_ids:
 			characters[kill_id]['attackers'] = 1 # count final_blow now
 		for char in char_rows:
@@ -53,15 +53,15 @@ def corporation(corp_id):
 				characters[kill_id]['final_blow'] = char
 			else:
 				characters[kill_id]['attackers'] += 1
-			if corp_name is None and char['corporation_id'] == corp_id:
-				corp_name = char['corporation_name']
+			if entity_name is None and char[entity_type + '_id'] == entity_id:
+				entity_name = char[entity_type + '_name']
 		for kill in kills:
 			kill['kill_time'] = _format_kill_time(kill['kill_time'])
 			chars = characters[kill['kill_id']]
 			kill['victim'] = chars['victim']
 			kill['final_blow'] = chars['final_blow']
 			kill['attackers'] = chars['attackers']
-	return {'corporation_name': corp_name, 'kills': kills}
+	return {'entity_name': entity_name, 'kills': kills}
 
 def kill(kill_id):
 	with db.cursor() as c:

+ 6 - 5
importer.py

@@ -18,9 +18,6 @@ def insert_kill(c, kill):
 			print('duplicate:', kill['killID'])
 			return
 		raise
-	except TypeError:
-		print(kill)
-		raise
 
 	victim = kill['victim']
 	parambatch = [(
@@ -93,8 +90,12 @@ def main():
 					print(repr(e))
 					break
 				print('inserting', len(kills), 'kills')
-				for kill in kills:
-					insert_kill(c, kill)
+				try:
+					for kill in kills:
+						insert_kill(c, kill)
+				except TypeError as e:
+					print(repr(e), kills)
+					break
 				db.conn.commit()
 				last_kill_id = kills[-1]['killID']
 				last_request_time = now

+ 4 - 4
server.py

@@ -27,9 +27,9 @@ class SearchHandler(BaseHandler):
 	def get(self):
 		self.render('search.html')
 
-class CorporationHandler(BaseHandler):
-	def get(self):
-		self.render('corporation.html')
+class KillListHandler(BaseHandler):
+	def get(self, entity_type):
+		self.render('kill_list.html')
 
 class KillHandler(BaseHandler):
 	def get(self):
@@ -47,7 +47,7 @@ if __name__ == '__main__':
 		handlers=[
 			(r'/', MainHandler),
 			(r'/search', SearchHandler),
-			(r'/corporation/.+', CorporationHandler),
+			(r'/(alliance|corporation|character)/.+', KillListHandler),
 			(r'/kill/.+', KillHandler),
 			(r'/(css/.+)\.css', CSSHandler),
 		],

+ 4 - 4
web/api.py

@@ -29,9 +29,9 @@ class SearchHandler(APIHandler):
 		data = db.queries.search(q)
 		self.respond_json(data)
 
-class CorporationHandler(APIHandler):
-	def get(self, corp_id):
-		kills = db.queries.corporation(int(corp_id))
+class KillListHandler(APIHandler):
+	def get(self, entity_type, entity_id):
+		kills = db.queries.kill_list(entity_type, int(entity_id))
 		self.respond_json(kills)
 
 class KillHandler(APIHandler):
@@ -43,7 +43,7 @@ def start():
 	tornado.web.Application(
 		handlers=[
 			(r'/search', SearchHandler),
-			(r'/corporation/(.+)', CorporationHandler),
+			(r'/(alliance|corporation|character)/(.+)', KillListHandler),
 			(r'/kill/(.+)', KillHandler),
 		],
 		debug=config.debug,

+ 3 - 0
web/static/css/corporation.ccss → web/static/css/kill_list.ccss

@@ -22,3 +22,6 @@ table#kills:
 
 	td:nth-child(7):
 		text-align: right
+
+	.loss:
+		color: #a44

+ 8 - 4
web/static/js/corporation.js → web/static/js/kill_list.js

@@ -1,8 +1,10 @@
 window.addEvent('domready', function() {
-	var corp_id = document.location.pathname.split('/').getLast();
-	ykill.api('/corporation/' + corp_id, function(data) {
-		if (data['corporation_name'])
-			document.title += ' - ' + data['corporation_name'];
+	var split = document.location.pathname.split('/');
+	var entity_type = split[1];
+	var entity_id = split[2];
+	ykill.api(document.location.pathname, function(data) {
+		if (data['entity_name'])
+			document.title += ' - ' + data['entity_name'];
 
 		var table = $('kills').getChildren('tbody')[0];
 		data['kills'].each(function(kill) {
@@ -62,6 +64,8 @@ window.addEvent('domready', function() {
 			td = new Element('td');
 			var millions = kill['cost'] / (100 * 1000000);
 			td.appendText(ykill.format_isk(millions));
+			if (victim[entity_type + '_id'] == entity_id)
+				td.addClass('loss');
 			tr.grab(td);
 
 			table.grab(tr);

+ 2 - 2
web/templates/corporation.html → web/templates/kill_list.html

@@ -1,11 +1,11 @@
 {% extends "base.html" %}
 
 {% block js %}
-	<script src="/static/js/corporation.js"></script>
+	<script src="/static/js/kill_list.js"></script>
 {% end %}
 
 {% block css %}
-	<link rel="stylesheet" type="text/css" href="/css/corporation.css" />
+	<link rel="stylesheet" type="text/css" href="/css/kill_list.css" />
 {% end %}
 
 {% block main %}