From 01531c519a4a93b985a8494d28f951c746683f56 Mon Sep 17 00:00:00 2001 From: René 'Necoro' Neumann Date: Wed, 12 May 2010 10:44:15 +0200 Subject: Show more details --- model.py | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) (limited to 'model.py') 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): -- cgit v1.2.3-70-g09d2