From 224f66a77aa3afa5e06daec656ae97f6e31e0592 Mon Sep 17 00:00:00 2001 From: raylu Date: Fri, 3 May 2013 03:41:50 -0700 Subject: start over --- web/server.py | 57 ++++++++++++++++++++++++++++++++++++++++++++++++ web/static/css/base.less | 37 +++++++++++++++++++++++++++++++ web/templates/base.html | 18 +++++++++++++++ web/templates/home.html | 30 +++++++++++++++++++++++++ 4 files changed, 142 insertions(+) create mode 100755 web/server.py create mode 100644 web/static/css/base.less create mode 100644 web/templates/base.html create mode 100644 web/templates/home.html (limited to 'web') diff --git a/web/server.py b/web/server.py new file mode 100755 index 0000000..01475c1 --- /dev/null +++ b/web/server.py @@ -0,0 +1,57 @@ +#!/usr/bin/env python3 + +import json +from lesscss import lessc +import tornado.gen +import tornado.httpclient +import tornado.ioloop +import tornado.web +import operator +import os + +import config + +class BaseHandler(tornado.web.RequestHandler): + def render(self, *args, **kwargs): + kwargs['host'] = config.web.host + return super(BaseHandler, self).render(*args, **kwargs) + + def render_string(self, *args, **kwargs): + s = super(BaseHandler, self).render_string(*args, **kwargs) + 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) + + +class CSSHandler(tornado.web.RequestHandler): + def get(self, css_path): + css_path = os.path.join(os.path.dirname(__file__), 'static', css_path) + '.less' + with open(css_path, 'r') as f: + self.set_header('Content-Type', 'text/css') + css = lessc.compile(f.read()) + self.write(css) + +if __name__ == '__main__': + tornado.web.Application( + handlers=[ + (r'/', MainHandler), + (r"/(css/.+)\.css", CSSHandler), + ], + template_path=os.path.join(os.path.dirname(__file__), 'templates'), + static_path=os.path.join(os.path.dirname(__file__), 'static'), + cookie_secret=config.web.cookie_secret, + debug=True, + ).listen(config.web.port) + print('Listening on :%d' % config.web.port) + tornado.ioloop.IOLoop.instance().start() diff --git a/web/static/css/base.less b/web/static/css/base.less new file mode 100644 index 0000000..714d5ab --- /dev/null +++ b/web/static/css/base.less @@ -0,0 +1,37 @@ +* { + box-sizing: border-box; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; +} + +body { + margin: 0; + padding: 0; + height: 100%; + background: #000; + color: #ddd; + font-family: sans-serif; +} + +a { + text-decoration: none; + color: #dde; +} + +form { + input { + background: #fff; + border: 1px solid #cdd; + padding: 5px 10px; + } +} + +.clear { + clear: both; +} + +#wrapper { + width: 900px; + margin: 50px auto; + background: #111; +} diff --git a/web/templates/base.html b/web/templates/base.html new file mode 100644 index 0000000..afd3c68 --- /dev/null +++ b/web/templates/base.html @@ -0,0 +1,18 @@ + + + + + + + +
+
+
+ +
+ + {% block main %}{% end %} +
+ + diff --git a/web/templates/home.html b/web/templates/home.html new file mode 100644 index 0000000..6d4f69c --- /dev/null +++ b/web/templates/home.html @@ -0,0 +1,30 @@ +{% extends "base.html" %} + +{% block main %} + +
+ {% for kill in kills %} + + {{ kill['killTime'] }} + {{ kill['solarSystemID'] }} + + + + + {{ 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'] }} + + {% end %} +
+ +{% end %} -- cgit v1.2.3