work in progress

This commit is contained in:
Pavol Rusnak 2011-06-19 15:05:19 +02:00
parent 02862e6517
commit 4dfa0ec3b0
4 changed files with 58 additions and 13 deletions

View file

@ -19,23 +19,32 @@ def code(code):
LEN = 25 LEN = 25
if match('^U[0-9]{4}$', code): if match('^U[0-9]{4}$', code):
userid = int(code[1:]) userid = int(code[1:])
# TODO: fetch credit and username cur = g.db.execute('SELECT balance FROM balance WHERE userid = ?', (userid, ))
row = cur.fetchone()
if row:
usercredit = '%d Kc' % row[0]
else:
usercredit = '0 Kc'
try: try:
username = users[userid] username = users[userid]
usercredit = '0 Kc'
r = username[:LEN - len(usercredit) - 1].ljust(LEN - len(usercredit) - 1) + ' ' + usercredit
except: except:
r = 'Unknown'.ljust(LEN - 5) + ' - Kc' username = 'Unknown'
return Response('%s %s' % (username, usercredit), content_type = 'text/plain') r = username[:LEN - len(usercredit) - 1].ljust(LEN - len(usercredit) - 1) + ' ' + usercredit
return Response(r, content_type = 'text/plain')
if code == 'R0000': if code == 'R0000':
return Response('Reset Credit to 0', content_type = 'text/plain') return Response('Reset Credit to 0', content_type = 'text/plain')
if match('^\C[0-9]{4}$', code): if match('^\C[0-9]{4}$', code):
amount = int(code[1:]) amount = int(code[1:])
return Response('Credit %d' % amount, content_type = 'text/plain') return Response('Credit %d' % amount, content_type = 'text/plain')
if match('^[0-9]+$', code): if match('^[0-9]+$', code):
# TODO: fetch item, show name and price cur = g.db.execute('SELECT name, price FROM items WHERE code = ?', (code, ))
itemname = 'Unknown' row = cur.fetchone()
itemprice = '0 Kc' if row:
itemname = row[0]
itemprice = '%d Kc' % row[1]
else:
itemname = 'Unknown'
itemprice = '0 Kc'
r = itemname[:LEN - len(itemprice) - 1].ljust(LEN - len(itemprice) - 1) + ' ' + itemprice r = itemname[:LEN - len(itemprice) - 1].ljust(LEN - len(itemprice) - 1) + ' ' + itemprice
return Response(r, content_type = 'text/plain') return Response(r, content_type = 'text/plain')
abort(400) abort(400)
@ -45,10 +54,10 @@ def action(user, item):
if not match('^U[0-9]{4}$', user): if not match('^U[0-9]{4}$', user):
abort(400) abort(400)
if code == 'R0000': if code == 'R0000':
# TODO: process - reset credit g.db.execute('DELETE FROM balance WHERE userid = ?', (user, ))
g.db.commit()
pass pass
if match('^\C[0-9]{4}$', code): if match('^\C[0-9]{4}$', code):
amount = int(code[1:])
# TODO: process - add credit # TODO: process - add credit
pass pass
if match('^[0-9]+$', code): if match('^[0-9]+$', code):
@ -95,7 +104,9 @@ def barcodestxt():
@app.route('/log/') @app.route('/log/')
def log(): def log():
return render_template('log.html') cur = g.db.execute('SELECT ts, userid, name, price, code, event FROM log LEFT JOIN items ON log.itemid=items.id ORDER BY ts DESC')
rows = [dict(ts = row[0], user = users[row[1]], itemname = row[2], price = row[3], code = row[4], event = row[5]) for row in cur.fetchall()]
return render_template('log.html', rows = rows)
@app.route('/stats/') @app.route('/stats/')
def stats(): def stats():

View file

@ -1,3 +1,4 @@
#!/bin/sh #!/bin/sh
rm -f brmbar.db
sqlite3 brmbar.db < schema.sql sqlite3 brmbar.db < schema.sql
sqlite3 brmbar.db < items.sql sqlite3 brmbar.db < items.sql

View file

@ -1,7 +1,27 @@
DROP TABLE IF EXISTS items;
CREATE TABLE items ( CREATE TABLE items (
id INTEGER PRIMARY KEY AUTOINCREMENT, id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL, name TEXT NOT NULL,
price INTEGER NOT NULL, price INTEGER NOT NULL,
code TEXT NOT NULL code TEXT NOT NULL
); );
CREATE INDEX items_name ON items ( name );
CREATE INDEX items_price ON items ( price );
CREATE UNIQUE INDEX items_code ON items ( code );
CREATE TABLE log (
id INTEGER PRIMARY KEY AUTOINCREMENT,
userid INTEGER NOT NULL,
itemid INTEGER,
event TEXT,
ts INTEGER NOT NULL
);
CREATE INDEX log_userid ON log ( userid );
CREATE INDEX log_itemid ON log ( userid );
CREATE INDEX log_ts ON log ( ts );
CREATE TABLE balance (
userid INTEGER PRIMARY KEY,
balance INTEGER NOT NULL
);

View file

@ -1,5 +1,18 @@
{% extends "base.html" %} {% extends "base.html" %}
{% block title %}Log{% endblock %} {% block title %}Log{% endblock %}
{% block content %} {% block content %}
log
<table>
<tr><th>date/time</th><th>user</th><th>item</th></tr>
{% for row in rows %}
<tr><td>{{ row.ts|safe }}</td><td></td>{{ row.user|safe }}</td><td>
{%- if row.itemname -%}
<img src="/static/items/{{ row.code|safe }}.jpg" width="64" height="64"/> {{ row.itemname|safe }} - {{ row.price }} Kc
{%- else -%}
{{- row.event -}}
{%- endif -%}
</td></tr>
{% endfor %}
</table>
{% endblock %} {% endblock %}