X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;ds=sidebyside;f=bluechips%2Fmodel%2Fexpenditure.py;h=dda06c1e0a9c7bf837e3668eef7835dc5cf2ca70;hb=2b77a3bedbc04fafd15ba8cadd1adad91a44d465;hp=acd77852172f595466dd34bd84c07ac2f836d178;hpb=54a4d9536f79008479ef41bfc328038945436a7b;p=bluechips.git diff --git a/bluechips/model/expenditure.py b/bluechips/model/expenditure.py index acd7785..dda06c1 100644 --- a/bluechips/model/expenditure.py +++ b/bluechips/model/expenditure.py @@ -60,8 +60,11 @@ class Expenditure(object): total = sum(split_dict.itervalues()) - for user, share in split_dict.iteritems(): - split_dict[user] = share / total + for user, share in split_dict.items(): + if share == 0: + del split_dict[user] + else: + split_dict[user] = share / total amounts_dict = dict() @@ -75,12 +78,19 @@ 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 (meta.Session.query(Split.id).\ + filter(Split.expenditure == self).\ + filter(Split.user == user).\ + filter(Split.share != 0).first() is not None) __all__ = ['Expenditure']