X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=bluechips%2Fmodel%2Fexpenditure.py;h=9d0fc7e0f981ad2719f2435789199a934b5c5bca;hb=9458527642fab328a945d06daed04404c1ae2091;hp=59867238bb46018fb2d0d224c181b758b83acb94;hpb=7d0a733ac2fe069d02ac5040d17129bf2bfbdc93;p=bluechips.git diff --git a/bluechips/model/expenditure.py b/bluechips/model/expenditure.py index 5986723..9d0fc7e 100644 --- a/bluechips/model/expenditure.py +++ b/bluechips/model/expenditure.py @@ -65,9 +65,6 @@ class Expenditure(object): del split_dict[user] else: split_dict[user] = share / total - - for user, share in split_dict.iteritems(): - split_dict[user] = share / total amounts_dict = dict() @@ -81,12 +78,23 @@ class Expenditure(object): winner = random.choice(amounts_dict.keys()) amounts_dict[winner] += Currency(1) elif difference < 0: - for i in xrange(difference): + for i in xrange(-difference): winner = random.choice(amounts_dict.keys()) amounts_dict[winner] -= Currency(1) for user, share in amounts_dict.iteritems(): s = Split(self, user, share) - meta.Session.save(s) + meta.Session.add(s) + + def involves(self, user): + "Returns True if ``user`` is involved in this expenditure." + return any((split.user == user) and (split.share != 0) + for split in self.splits) + + def share(self, user): + "Return the share corresponding to ``user``." + shares = dict((split.user, split.share) + for split in self.splits) + return shares.get(user, Currency(0)) __all__ = ['Expenditure']