X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=bluechips%2Fcontrollers%2Fspend.py;h=fd884536b1d02811ce0977c40bbbe8c9c9956831;hb=7c2374b6690fe10cfb8e02d63f0596919ceda85f;hp=a3f502d9dbd9325465153b0bdb1932f3ec364cbb;hpb=37cc44480ccdc7fb1d6d24ca4c388b6ac755ed0c;p=bluechips.git diff --git a/bluechips/controllers/spend.py b/bluechips/controllers/spend.py index a3f502d..fd88453 100644 --- a/bluechips/controllers/spend.py +++ b/bluechips/controllers/spend.py @@ -8,6 +8,9 @@ from bluechips.lib.base import * from bluechips.widgets import spend from pylons import request +from pylons.decorators.rest import dispatch_on + +from decimal import Decimal, InvalidOperation log = logging.getLogger(__name__) @@ -67,3 +70,41 @@ class SpendController(BaseController): id=e.id)))) return h.redirect_to('/') + + @dispatch_on(POST='_post_split', + GET='_get_split') + def split(self, id): + abort(500) + + def _get_split(self, id): + c.title = 'Change Expenditure Split' + + c.expenditure = meta.Session.query(model.Expenditure).get(id) + c.users = meta.Session.query(model.User) + + return render('/spend/split.mako') + + def _post_split(self, id): + c.values = request.params + c.errors = dict() + + split_dict = dict() + + for username, percent in c.values.iteritems(): + try: + user = meta.Session.query(model.User).\ + filter(model.User.username==username).one() + split_dict[user] = Decimal(percent) + except InvalidOperation: + c.errors[username] = 'Please enter a number' + if c.errors != dict(): + return self._get_split(id) + + e = meta.Session.query(model.Expenditure).get(id) + e.split(split_dict) + + meta.Session.commit() + + h.flash('Expenditure redivided') + + return h.redirect_to('/')