X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=bluechips%2Fmodel%2Fexpenditure.py;h=296ecf04929aa2c3c66790d3f5a86a76cdcd88b9;hb=ed8863d32a4d626a02bf1c5c930253003068ea3f;hp=58456fb8a71730d48c0a4936da2eabd1ee1384ca;hpb=5c9f0e33552b9420736f0d733134a1e62ef8df03;p=bluechips.git diff --git a/bluechips/model/expenditure.py b/bluechips/model/expenditure.py index 58456fb..296ecf0 100644 --- a/bluechips/model/expenditure.py +++ b/bluechips/model/expenditure.py @@ -60,12 +60,6 @@ class Expenditure(object): total = sum(split_dict.itervalues()) - for user, share in split_dict.items(): - if share == 0: - del split_dict[user] - else: - split_dict[user] = share / total - for user, share in split_dict.items(): if share == 0: del split_dict[user] @@ -84,12 +78,29 @@ 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) + + 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 __all__ = ['Expenditure']