raylu 12 vuotta sitten
vanhempi
commit
02a3b0d8ca
7 muutettua tiedostoa jossa 62 lisäystä ja 43 poistoa
  1. 1 1
      db/__init__.py
  2. 1 1
      db/importer.py
  3. 13 13
      server.py
  4. 1 2
      web/static/css/base.ccss
  5. 4 26
      web/templates/home.html
  6. 30 0
      web/templates/kill.html
  7. 12 0
      web/templates/search.html

+ 1 - 1
db/__init__.py

@@ -4,7 +4,7 @@ from config import db as dbconfig
 
 conn = oursql.connect(host=dbconfig.host, db=dbconfig.database, user=dbconfig.user, passwd=dbconfig.password, autoreconnect=True)
 
-def ykill_cursor():
+def cursor():
 	return conn.cursor(oursql.DictCursor)
 
 def execute(cursor, sql, *values):

+ 1 - 1
db/importer.py

@@ -5,7 +5,7 @@ from pprint import pprint
 
 import __init__ as db
 
-with db.ykill_cursor() as c:
+with db.cursor() as c:
 	db.execute(c, 'INSERT INTO kills (kill_id, solar_system_id, kill_time, moon_id) VALUES(?, ?, ?, ?)',
 			kill['killID'], kill['solarSystemID'], kill['killTime'], kill['moonID'])
 

+ 13 - 13
server.py

@@ -5,12 +5,12 @@ import operator
 import os
 
 import cleancss
-import tornado.gen
 import tornado.httpclient
 import tornado.ioloop
 import tornado.web
 
 from config import web as config
+import db
 
 class BaseHandler(tornado.web.RequestHandler):
 	def render(self, *args, **kwargs):
@@ -22,18 +22,18 @@ class BaseHandler(tornado.web.RequestHandler):
 		return s.replace(b'\n', b'') # this is like Django's {% spaceless %}
 
 class MainHandler(BaseHandler):
-	@tornado.web.asynchronous
-	@tornado.gen.coroutine
 	def get(self):
-		http_client = tornado.httpclient.AsyncHTTPClient()
-		kills_url = 'https://zkillboard.com/api/kills/corporationID/98182803/limit/1'
-		losses_url = 'https://zkillboard.com/api/losses/corporationID/98182803/limit/1'
-		kills_res, losses_res = yield [http_client.fetch(kills_url), http_client.fetch(losses_url)]
-		kills = json.loads(kills_res.body.decode('utf-8'))
-		losses = json.loads(losses_res.body.decode('utf-8'))
-		kills = sorted(kills + losses, key=operator.itemgetter('killTime'), reverse=True)
-		self.render('home.html', kills=kills)
+		self.render('home.html')
 
+class SearchHandler(BaseHandler):
+	def get(self):
+		q = self.get_argument('q')
+		with db.cursor() as c:
+			corps = db.query(c, '''
+				SELECT DISTINCT corporation_id, corporation_name FROM characters
+				WHERE corporation_name LIKE ?
+				''', '%{}%'.format(q))
+		self.render('search.html', corps=corps)
 
 class CSSHandler(tornado.web.RequestHandler):
 	def get(self, css_path):
@@ -47,10 +47,10 @@ if __name__ == '__main__':
 	tornado.web.Application(
 		handlers=[
 			(r'/', MainHandler),
+			(r'/search', SearchHandler),
 			(r"/(css/.+)\.css", CSSHandler),
 		],
-		template_path=os.path.join(os.path.dirname(__file__), 'templates'),
-		static_path=os.path.join(os.path.dirname(__file__), 'static'),
+		template_path=os.path.join(os.path.dirname(__file__), 'web/templates'),
 		cookie_secret=config.cookie_secret,
 		debug=config.debug,
 	).listen(config.port)

+ 1 - 2
web/static/css/base.ccss

@@ -13,14 +13,13 @@ body:
 
 a:
 	text-decoration: none;
-	color: #dde;
+	color: #38c;
 
 form:
 	input:
 		background: #fff;
 		border: 1px solid #cdd;
 		padding: 5px 10px;
-	}
 
 .clear:
 	clear: both;

+ 4 - 26
web/templates/home.html

@@ -1,30 +1,8 @@
 {% extends "base.html" %}
 
 {% block main %}
-
-<div class="kill_list">
-	{% for kill in kills %}
-		<a href="/kill/{{ kill['killID'] }}">
-			{{ kill['killTime'] }}
-			{{ kill['solarSystemID'] }}
-			<img src="//image.eveonline.com/Type/{{ kill['victim']['shipTypeID'] }}_64.png">
-			<img src="//image.eveonline.com/Character/{{ kill['victim']['characterID'] }}_64.jpg">
-			<img src="//image.eveonline.com/Corporation/{{ kill['victim']['corporationID'] }}_64.png">
-			<img src="//image.eveonline.com/Alliance/{{ kill['victim']['allianceID'] }}_64.png">
-			{{ kill['victim']['characterName'] }}
-			{{ kill['victim']['corporationName'] }}
-			{{ kill['victim']['allianceName'] }}
-			{% for attacker in kill['attackers'] %}
-				{% if attacker['finalBlow'] %}
-					{% set killer = attacker %}
-					{% break %}
-				{% end %}
-			{% end %}
-			{{ killer['characterName'] }}
-			{{ killer['corporationName'] }}
-			{{ killer['allianceName'] }}
-		</a>
-	{% end %}
-</div>
-
+<form method="get" action="/search">
+	<input type="text" name="q">
+	<input type="submit">
+</form>
 {% end %}

+ 30 - 0
web/templates/kill.html

@@ -0,0 +1,30 @@
+{% extends "base.html" %}
+
+{% block main %}
+
+<div class="kill_list">
+	{% for kill in kills %}
+		<a href="/kill/{{ kill['killID'] }}">
+			{{ kill['killTime'] }}
+			{{ kill['solarSystemID'] }}
+			<img src="//image.eveonline.com/Type/{{ kill['victim']['shipTypeID'] }}_64.png">
+			<img src="//image.eveonline.com/Character/{{ kill['victim']['characterID'] }}_64.jpg">
+			<img src="//image.eveonline.com/Corporation/{{ kill['victim']['corporationID'] }}_64.png">
+			<img src="//image.eveonline.com/Alliance/{{ kill['victim']['allianceID'] }}_64.png">
+			{{ kill['victim']['characterName'] }}
+			{{ kill['victim']['corporationName'] }}
+			{{ kill['victim']['allianceName'] }}
+			{% for attacker in kill['attackers'] %}
+				{% if attacker['finalBlow'] %}
+					{% set killer = attacker %}
+					{% break %}
+				{% end %}
+			{% end %}
+			{{ killer['characterName'] }}
+			{{ killer['corporationName'] }}
+			{{ killer['allianceName'] }}
+		</a>
+	{% end %}
+</div>
+
+{% end %}

+ 12 - 0
web/templates/search.html

@@ -0,0 +1,12 @@
+{% extends "base.html" %}
+
+{% block main %}
+
+<h2>Corporations</h2>
+{% for corp in corps %}
+	<a href="/corporation/{{ corp['corporation_id'] }}">
+		{{ corp['corporation_name'] }}
+	</a>
+{% end %}
+
+{% end %}