summaryrefslogtreecommitdiff
path: root/model.py
diff options
context:
space:
mode:
authorRené 'Necoro' Neumann <necoro@necoro.net>2010-05-12 10:44:15 +0200
committerRené 'Necoro' Neumann <necoro@necoro.net>2010-05-12 10:44:15 +0200
commit01531c519a4a93b985a8494d28f951c746683f56 (patch)
treef51692a74057fbb65196254df9158fbdb505f959 /model.py
parent585e2750154a4b6816bb2a67aca02b1640a5c7d6 (diff)
downloadkosten-01531c519a4a93b985a8494d28f951c746683f56.tar.gz
kosten-01531c519a4a93b985a8494d28f951c746683f56.tar.bz2
kosten-01531c519a4a93b985a8494d28f951c746683f56.zip
Show more details
Diffstat (limited to '')
-rw-r--r--model.py22
1 files changed, 18 insertions, 4 deletions
diff --git a/model.py b/model.py
index 2a16bde..d8cf91d 100644
--- a/model.py
+++ b/model.py
@@ -82,7 +82,7 @@ class ConstExpense (Expense):
next = OneToOne('ConstExpense', inverse = 'prev')
prev = ManyToOne('ConstExpense')
- monthly = ColumnProperty(lambda c: sql.cast(c.expense / c.months, ExpNum), deferred = True)
+ monthly = ColumnProperty(lambda c: sql.cast(c.expense / c.months, ExpNum))
@classmethod
def of_month (cls, month, year):
@@ -92,14 +92,28 @@ class ConstExpense (Expense):
#
# Work entities (not stored in DB)
#
-CatExpense = namedtuple('CatExpense', 'cat expense')
+class CatExpense (namedtuple('CatExpense', 'cat expense exps')):
+ __slots__ = ()
+
+ @property
+ def all (self):
+ return self.exps.order_by(SingleExpense.day).all()
-class MonthExpense (namedtuple('MonthExpense', 'date const catexps')):
+class MonthExpense (namedtuple('MonthExpense', 'date catexps')):
__slots__ = ()
@property
+ def constsum (self):
+ c = ConstExpense.of_month(self.date.month, self.date.year)
+ return c.value(sql.functions.sum(ConstExpense.monthly)) or None
+
+ @property
+ def consts (self):
+ return ConstExpense.of_month(self.date.month, self.date.year).all()
+
+ @property
def sum (self):
- return self.const + sum(x.expense for x in self.catexps)
+ return self.constsum + sum(x.expense for x in self.catexps)
@property
def all (self):