summaryrefslogtreecommitdiff
path: root/controller.py
diff options
context:
space:
mode:
authorRené 'Necoro' Neumann <necoro@necoro.net>2011-02-15 03:19:21 +0100
committerRené 'Necoro' Neumann <necoro@necoro.net>2011-02-15 03:19:21 +0100
commit01444a8e45b7bd5b846ebc1a26afb87ee18f8265 (patch)
treeceb2fcc0b90663eb02a8271fdc2427cd869771d4 /controller.py
parenta69e90c161e0a476f81efe907631c4c26c4fd88e (diff)
downloadkosten-01444a8e45b7bd5b846ebc1a26afb87ee18f8265.tar.gz
kosten-01444a8e45b7bd5b846ebc1a26afb87ee18f8265.tar.bz2
kosten-01444a8e45b7bd5b846ebc1a26afb87ee18f8265.zip
More nice things for constant expenses
Diffstat (limited to 'controller.py')
-rw-r--r--controller.py43
1 files changed, 37 insertions, 6 deletions
diff --git a/controller.py b/controller.py
index 95dba66..21684ee 100644
--- a/controller.py
+++ b/controller.py
@@ -9,6 +9,7 @@ from helper import appdir
from renderer import render
import datetime, decimal
+import itertools as iter
import operator as op
from sqlalchemy import sql
@@ -134,8 +135,19 @@ class Edit (Add):
raise web.seeother("/")
class Const:
- def GET(self):
- return "Const"
+ dformat = "%m.%Y"
+ def GET(self, id=None):
+ if id is None:
+ d = datetime.date.today()
+
+ current = ConstExpense.of_month(d.month, d.year)
+ old = ConstExpense.query.except_(current).order_by(ConstExpense.start)
+
+ return render("constlist", current = current.order_by(ConstExpense.start).all(), old = old.all())
+
+ else:
+ exp = ConstExpense.get(id)
+ return render("const", exp = exp, dformat = lambda x: x.strftime(self.dformat))
class ConstAdd:
template = "constadd"
@@ -157,7 +169,10 @@ class ConstAdd:
e.expense = decimal.Decimal(f.expense.value)
e.description = f.description.value
- raise web.seeother("/")
+ if int(f.prev.value) != -1:
+ e.prev = ConstExpense.get(f.prev.value)
+
+ raise web.seeother("/const/%s" % e.id)
else:
return render(self.template, form = f)
@@ -165,6 +180,7 @@ class ConstAdd:
return ConstExpense()
def form(self):
+ CE = ConstExpense
return Form(
form.Textbox(
"start",
@@ -197,14 +213,28 @@ class ConstAdd:
form.Dropdown(
"category",
map(op.itemgetter(0), sorted(Category.query.values(Category.name)))
+ ),
+ form.Dropdown(
+ "prev",
+ iter.chain([(-1, '')], ConstExpense.query.order_by(CE.description).values(CE.id, CE.description))
)
)
class ConstEdit (ConstAdd):
template = "constedit"
- def GET(self, id):
- exp = ConstExpense.get(id)
+ def GET(self, id, fromId):
+
+ if id == "from":
+ fromC = ConstExpense.get(fromId)
+
+ exp = ConstExpense()
+ exp.from_dict(fromC.to_dict(exclude=["id", "prev"]))
+ exp.prev = fromC
+ session.commit()
+ else:
+ exp = ConstExpense.get(id)
+
self.get_expense = lambda *x: exp
fvalues = {
@@ -213,7 +243,8 @@ class ConstEdit (ConstAdd):
"months" : str(exp.months),
"expense" : str(exp.expense),
"description" : exp.description,
- "category" : exp.category.name
+ "category" : exp.category.name,
+ "prev" : exp.prev.id if exp.prev else str(-1)
}
f = self.form()
f.fill(fvalues)