diff options
author | René 'Necoro' Neumann <necoro@necoro.net> | 2010-05-12 10:44:15 +0200 |
---|---|---|
committer | René 'Necoro' Neumann <necoro@necoro.net> | 2010-05-12 10:44:15 +0200 |
commit | 01531c519a4a93b985a8494d28f951c746683f56 (patch) | |
tree | f51692a74057fbb65196254df9158fbdb505f959 /model.py | |
parent | 585e2750154a4b6816bb2a67aca02b1640a5c7d6 (diff) | |
download | kosten-01531c519a4a93b985a8494d28f951c746683f56.tar.gz kosten-01531c519a4a93b985a8494d28f951c746683f56.tar.bz2 kosten-01531c519a4a93b985a8494d28f951c746683f56.zip |
Show more details
Diffstat (limited to 'model.py')
-rw-r--r-- | model.py | 22 |
1 files changed, 18 insertions, 4 deletions
@@ -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): |