diff options
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): |