summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--controller.py34
-rw-r--r--templates/edit.mako5
-rw-r--r--templates/show.mako4
3 files changed, 34 insertions, 9 deletions
diff --git a/controller.py b/controller.py
index 617bab5..370391a 100644
--- a/controller.py
+++ b/controller.py
@@ -47,24 +47,29 @@ class Show:
class Add:
dformat = "%d.%m.%Y"
+ template = "add"
def GET(self):
- return render("add", form = self.form())
+ return render(self.template, form = self.form())
def POST(self):
f = self.form()
if f.validates():
- e = SingleExpense(category = Category.get_by(name = f.category.value))
-
+ category = Category.get_by(name = f.category.value)
+
+ e = self.get_expense()
+ e.category = category
e.date = datetime.datetime.strptime(f.date.value, self.dformat)
e.expense = decimal.Decimal(f.expense.value)
e.description = f.description.value
raise web.seeother("/")
else:
- return render("add", form = f)
+ return render(self.template, form = f)
+
+ def get_expense(self):
+ return SingleExpense()
- @property
def form(self):
return form.Form(
form.Textbox(
@@ -90,9 +95,24 @@ class Add:
))
)
-class Edit:
+class Edit (Add):
+
+ template = "edit"
+
def GET(self, id):
- return "Edit " + id
+ 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 }
+ f = self.form()
+ f.fill(fvalues)
+
+ return render(self.template, form = f)
+
+ def POST(self, id):
+ exp = SingleExpense.get(id)
+ self.get_expense = lambda *x: exp
+ return Add.POST(self)
class Const:
def GET(self):
diff --git a/templates/edit.mako b/templates/edit.mako
new file mode 100644
index 0000000..09d5ea4
--- /dev/null
+++ b/templates/edit.mako
@@ -0,0 +1,5 @@
+<%inherit file="/add.mako" />
+
+<%def name="heading()">
+ Edit expense
+</%def>
diff --git a/templates/show.mako b/templates/show.mako
index 88d802c..dc23b9c 100644
--- a/templates/show.mako
+++ b/templates/show.mako
@@ -9,7 +9,7 @@
<div class="details">
<ul>
% for exp in c.all:
- <li>${exp.day}.${exp.month}. -- ${exp.description}: ${exp.expense} </li>
+ <li><a href=${"/edit/%s" % exp.id | url}>${exp.day}.${exp.month}. -- ${exp.description}: ${exp.expense}</a></li>
% endfor
</ul>
</div>
@@ -26,7 +26,7 @@
<div class="details">
<ul>
% for exp in e.all:
- <li>${exp.day}.${exp.month}. -- ${exp.description}: ${exp.expense} </li>
+ <li><a href=${"/edit/%s" % exp.id | url}>${exp.day}.${exp.month}. -- ${exp.description}: ${exp.expense}</a></li>
% endfor
</ul>
</div>