from bluechips.lib.totals import *
import sqlalchemy
+from sqlalchemy import orm
from datetime import date, timedelta
c.debts = debts()
c.settle = settle(c.debts)
- c.total = self._total(sqlalchemy.text('1=1'))
+ c.total = self._total()
year = date.today() - timedelta(days=365)
this_year = date.today().replace(month=1, day=1)
last_month = (date.today() - timedelta(days=30)).replace(day=1)
c.year_total, c.this_year_total, c.this_month_total = \
- [self._total(model.expenditures.c.date >= i)
+ [self._total(model.Expenditure.date >= i)
for i in [year, this_year, this_month]]
c.last_month_total = self._total(sqlalchemy.and_(
- model.expenditures.c.date >= last_month,
- model.expenditures.c.date < this_month))
+ model.Expenditure.date >= last_month,
+ model.Expenditure.date < this_month))
c.expenditures = meta.Session.query(model.Expenditure).\
- filter(model.Expenditure.spender==request.environ['user']).\
- limit(10).all()
+ filter(sqlalchemy.or_(
+ model.Expenditure.spender == request.environ['user'],
+ model.Expenditure.splits.any(
+ sqlalchemy.and_(
+ model.Split.user == request.environ['user'],
+ model.Split.share != 0)))).\
+ options(orm.eagerload('splits')).\
+ limit(10).all()
c.transfers = meta.Session.query(model.Transfer).\
filter(sqlalchemy.or_(
model.Transfer.debtor==request.environ['user'],
return render('/status/index.mako')
- def _total(self, where):
- return Currency(meta.Session.execute(sqlalchemy.sql.select([
- sqlalchemy.func.sum(model.expenditures.c.amount).\
- label('total')]).\
- where(where)).scalar() or 0)
+ def _total(self, conditions=None):
+ q = meta.Session.query(sqlalchemy.func.SUM(
+ model.Expenditure.amount))
+ if conditions is not None:
+ q = q.filter(conditions)
+ return q.scalar()