summaryrefslogtreecommitdiff
path: root/controller.py
diff options
context:
space:
mode:
authorRené 'Necoro' Neumann <necoro@necoro.net>2013-02-13 12:54:53 +0100
committerRené 'Necoro' Neumann <necoro@necoro.net>2013-02-13 12:54:53 +0100
commit458b4e7a1135df8859e94b10e316d3f8c5c5a561 (patch)
tree449fc7eb3d5d17740eb3cc6cb97e6fe2349005a2 /controller.py
parentec4b54dd0f27e59087c5f087dedf5fee51fd9000 (diff)
downloadkosten-458b4e7a1135df8859e94b10e316d3f8c5c5a561.tar.gz
kosten-458b4e7a1135df8859e94b10e316d3f8c5c5a561.tar.bz2
kosten-458b4e7a1135df8859e94b10e316d3f8c5c5a561.zip
Remove dependency on elixir
Diffstat (limited to 'controller.py')
-rw-r--r--controller.py38
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(