diff options
Diffstat (limited to '')
-rw-r--r-- | controller.py | 38 |
1 files changed, 25 insertions, 13 deletions
diff --git a/controller.py b/controller.py index 39e8d7a..66039ac 100644 --- a/controller.py +++ b/controller.py @@ -12,7 +12,7 @@ from renderer import render import datetime, decimal import itertools as iter import operator as op -from sqlalchemy import sql +from sqlalchemy import sql, func class Show: def GET(self, year = '', month = ''): @@ -35,7 +35,7 @@ class Show: year = int(year) month = int(month) - ssum = sql.functions.sum(SingleExpense.expense) + ssum = func.sum(SingleExpense.expense) query = SingleExpense.of_month(month, year) result = query.group_by(SingleExpense.category_id).\ @@ -119,7 +119,13 @@ class Edit (Add): exp = SingleExpense.get(id) self.get_expense = lambda *x: exp - fvalues = { "date" : exp.date.strftime(self.dformat), "expense" : str(exp.expense), "description" : exp.description, "category" : exp.category.name } + fvalues = { + "date" : exp.date.strftime(self.dformat), + "expense" : str(exp.expense), + "description" : exp.description, + "category" : exp.category.name + } + f = self.form() f.fill(fvalues) @@ -140,15 +146,19 @@ class Const: if id is None: d = datetime.date.today() - current = ConstExpense.of_month(d.month, d.year) + expenses = ConstExpense.query.order_by(ConstExpense.start).all() - csub = current.subquery() + current = [] + old = [] - # if only mysql would allow "EXCEPT" -.- - old = ConstExpense.query.outerjoin((csub, csub.c.id == ConstExpense.id)).filter(csub.c.id == None) - old = old.order_by(ConstExpense.start) - - return render("constlist", current = current.order_by(ConstExpense.start).all(), old = old.all()) + for e in expenses: + if e.start <= d: + if e.end >= d: + current.append(e) + else: + old.append(e) + + return render("constlist", current = current, old = old) else: exp = ConstExpense.get(id) @@ -194,7 +204,9 @@ class ConstAdd: return render(self.template, form = f) def get_expense(self): - return ConstExpense() + ce = ConstExpense() + web.ctx.orm.add(ce) + return ce def form_fill(self, exp): return { @@ -211,8 +223,8 @@ class ConstAdd: CE = ConstExpense # get the list of 'previous' expenses + cur = self.get_expense() # need to be before the next stmt, else 'next' might be undefined filter = (CE.next == None) - cur = self.get_expense() if cur.id is None: # empty web.ctx.orm.expunge(cur) @@ -260,7 +272,7 @@ class ConstAdd: ), form.Dropdown( "category", - map(op.itemgetter(0), sorted(Category.query.values(Category.name))), + map(op.itemgetter(0), Category.query.order_by(Category.name).values(Category.name)), description = "Kategorie" ), form.Dropdown( |