X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=bluechips%2Fcontrollers%2Fspend.py;h=a3f502d9dbd9325465153b0bdb1932f3ec364cbb;hb=7032113d23283d31c3b9146c5b749fcbed32031a;hp=a775084d4e8c1de57818e0a0d9792a924b381a88;hpb=453203089544e106ccbfcae591cc52d678ef7ef5;p=bluechips.git diff --git a/bluechips/controllers/spend.py b/bluechips/controllers/spend.py index a775084..a3f502d 100644 --- a/bluechips/controllers/spend.py +++ b/bluechips/controllers/spend.py @@ -6,7 +6,6 @@ import logging from bluechips.lib.base import * from bluechips.widgets import spend -from bluechips.lib.split import * from pylons import request @@ -14,18 +13,44 @@ log = logging.getLogger(__name__) class SpendController(BaseController): def index(self): + c.title = 'Add a New Expenditure' + c.expenditure = dict() c.expenditure['spender'] = request.environ['user'] return render('/spend/index.mako') - @validate(form=spend.new_spend_form, error_handler='index') - def new(self): - e = model.Expenditure() + def edit(self, id): + c.title = 'Edit an Expenditure' + + c.expenditure = meta.Session.query(model.Expenditure).get(id) + + return render('/spend/index.mako') + + def update(self, id=None): + # Validate the submission + if not valid(self, spend.new_spend_form): + if id is None: + return self.index() + else: + return self.edit(id) + + # Either create a new object, or, if we're editing, get the + # old one + if id is None: + e = model.Expenditure() + else: + e = meta.Session.query(model.Expenditure).get(id) + + # Set the fields that were submitted update_sar(e, self.form_result) - meta.Session.save(e) + meta.Session.save_or_update(e) + + if id is None: + e.even_split() + else: + e.update_split() - even_split(e) meta.Session.commit() h.flash('Expenditure recorded.')