diff --git a/subsites/lunchuman-apache b/subsites/lunchuman-apache index 3f037fb..bd6f149 100644 --- a/subsites/lunchuman-apache +++ b/subsites/lunchuman-apache @@ -10,6 +10,7 @@ Alias /favicon.ico /home/niels/www/meta/subsites/lunchuman/favicon.ico Alias /favicon.png /home/niels/www/meta/subsites/lunchuman/favicon.png Alias /static /home/niels/www/meta/subsites/lunchuman/static + Alias /media /home/niels/www/meta/subsites/lunchuman/media Alias /lunchuman.wsgi /home/niels/www/meta/subsites/lunchuman/lunchuman.wsgi Alias /apache-config-template /home/niels/www/meta/subsites/lunchuman/apache-config-template diff --git a/subsites/lunchuman/.gitignore b/subsites/lunchuman/.gitignore index b18461c..0d8388f 100644 --- a/subsites/lunchuman/.gitignore +++ b/subsites/lunchuman/.gitignore @@ -1,3 +1,4 @@ /.dynamicsettings /.old -/lunchuman.sqlite \ No newline at end of file +/lunchuman.sqlite +/media \ No newline at end of file diff --git a/subsites/lunchuman/frontpage.html b/subsites/lunchuman/frontpage.html index 26b34b7..8a5907e 100644 --- a/subsites/lunchuman/frontpage.html +++ b/subsites/lunchuman/frontpage.html @@ -1,11 +1,3 @@ -

Add user

- -
-

Name:

- -
- -

Update user data

@@ -26,6 +18,26 @@
+

Add user

+ +
+

Name:

+ +
+ + +

Log

+ +
+{log}
+
+ + +

Image gallery

+ +Datalosjen haz pics. + +

FAQ

Question: What is one food?

diff --git a/subsites/lunchuman/lunchuman.wsgi b/subsites/lunchuman/lunchuman.wsgi index 165b9a6..1e87d2a 100644 --- a/subsites/lunchuman/lunchuman.wsgi +++ b/subsites/lunchuman/lunchuman.wsgi @@ -26,6 +26,7 @@ import os import bottle from bottle import route, abort, error, request, redirect import sqlite3 +import datetime import threading import itertools import atexit @@ -74,6 +75,13 @@ name text, moneys int, foods int ) +''') + self.cursor.execute(''' +create table if not exists actions ( +id integer primary key autoincrement, +action_when datetime, +action text +) ''') self.conn.commit() @@ -83,14 +91,51 @@ foods int def add_user(self, name): self.cursor.execute('insert into users values (NULL, ?, 0, 0)', (name,)) + self.log('new user created: {}'.format(repr(name))) self.conn.commit() + def log(self, msg): + self.cursor.execute('insert into actions values (NULL, ?, ?)', + (datetime.datetime.utcnow(), msg)) + self.conn.commit() + + def get_log(self): + self.cursor.execute('select * from actions order by action_when desc') + return self.cursor.fetchall() + def update_user_data(self, *users): + log_msg = [] for id, new_name, moneys_incr, foods_incr in users: + try: + foods_incr = int(foods_incr) + except ValueError: + foods_incr = 0 + try: + moneys_incr = int(moneys_incr) + except ValueError: + moneys_incr = 0 + self.cursor.execute('select name from users where id=?', (id,)) + old_name = self.cursor.fetchone()[0] self.cursor.execute(''' update users set name=?, moneys=moneys + (?), foods=foods + (?) where id=? ''', (new_name, moneys_incr, foods_incr, id)) + loclog = [] + if old_name != new_name: + loclog.append('change name to {}\n'.format(new_name)) + if foods_incr > 0: + loclog.append('eat {} foods'.format(foods_incr)) + elif foods_incr < 0: + loclog.append('uneat {} foods'.format(foods_incr)) + if moneys_incr > 0: + loclog.append('spend {} moneys'.format(moneys_incr)) + elif moneys_incr < 0: + loclog.append('unspend {} moneys'.format(moneys_incr)) + if loclog: + log_msg.append('{} do:\n'.format(old_name) + + ' ' + '\n '.join(loclog)) + if log_msg: + self.log('\n'.join(log_msg)) self.conn.commit() def add_settings_from_file(fname, settings): @@ -160,7 +205,8 @@ def frontpage(): users[i][2] / users[i][3]) if users[i][3] > 0 else None)) for i in range(len(users))) - return _frontpage.format(userdata=userdata) + log = '\n\n'.join('{} UTC:\n{}'.format(*row[1:]) for row in db.get_log()) + return _frontpage.format(userdata=userdata, log=log) @route('/adduser', method='post') def add_user(): @@ -169,14 +215,17 @@ def add_user(): @route('/updateuserdata', method='post') def update_user_data(): - users = (vals[1:] for vals in - filter(lambda vals: vals[0] != vals[2] or - (vals[3] != '0' and vals[3] != '') or - (vals[4] != '0' and vals[4] != ''), - zip(*(get_seq_input(request.forms, attr) - for attr in ('orig_name', 'id', 'new_name', - 'moneys_incr', 'foods_incr'))))) - db.update_user_data(*users) + try: + users = (vals[1:] for vals in + filter(lambda vals: vals[0] != vals[2] or + (vals[3] != '0' and vals[3] != '') or + (vals[4] != '0' and vals[4] != ''), + zip(*(get_seq_input(request.forms, attr) + for attr in ('orig_name', 'id', 'new_name', + 'moneys_incr', 'foods_incr'))))) + db.update_user_data(*users) + except Exception: + traceback.print_exc() redirect('/')