X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=bluechips%2Fcontrollers%2Fspend.py;h=1a1c34612091b888df800ebeacfba199fc631da3;hb=9458527642fab328a945d06daed04404c1ae2091;hp=a3f502d9dbd9325465153b0bdb1932f3ec364cbb;hpb=5c217cff01216eb1784fab6d78fb9032363ca3b5;p=bluechips.git diff --git a/bluechips/controllers/spend.py b/bluechips/controllers/spend.py index a3f502d..1a1c346 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__) @@ -39,12 +42,12 @@ class SpendController(BaseController): # old one if id is None: e = model.Expenditure() + meta.Session.add(e) else: e = meta.Session.query(model.Expenditure).get(id) # Set the fields that were submitted update_sar(e, self.form_result) - meta.Session.save_or_update(e) if id is None: e.even_split() @@ -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('/')