X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=bluechips%2Fmodel%2Fexpenditure.py;fp=bluechips%2Fmodel%2Fexpenditure.py;h=9d0fc7e0f981ad2719f2435789199a934b5c5bca;hb=9458527642fab328a945d06daed04404c1ae2091;hp=296ecf04929aa2c3c66790d3f5a86a76cdcd88b9;hpb=ed8863d32a4d626a02bf1c5c930253003068ea3f;p=bluechips.git diff --git a/bluechips/model/expenditure.py b/bluechips/model/expenditure.py index 296ecf0..9d0fc7e 100644 --- a/bluechips/model/expenditure.py +++ b/bluechips/model/expenditure.py @@ -88,19 +88,13 @@ class Expenditure(object): def involves(self, user): "Returns True if ``user`` is involved in this expenditure." - return (meta.Session.query(Split.id).\ - filter(Split.expenditure == self).\ - filter(Split.user == user).\ - filter(Split.share != 0).first() is not None) + return any((split.user == user) and (split.share != 0) + for split in self.splits) def share(self, user): "Return the share corresponding to ``user``." - share = meta.Session.query(Split.share).\ - filter(Split.expenditure == self).\ - filter(Split.user == user).scalar() - if share is None: - return Currency(0) - else: - return share + shares = dict((split.user, split.share) + for split in self.splits) + return shares.get(user, Currency(0)) __all__ = ['Expenditure']