X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=bluechips%2Fcontrollers%2Ftransfer.py;h=79628ef3c18b0abb834e97ecbd12dd3ae377850e;hb=acccaf1c26b247e15d6fe5e10658548cc4718295;hp=485c1179be602750817912498c7f5c095abdabe7;hpb=d64da284fc2644493b1aa42900a32d6a120d8fef;p=bluechips.git diff --git a/bluechips/controllers/transfer.py b/bluechips/controllers/transfer.py index 485c117..79628ef 100644 --- a/bluechips/controllers/transfer.py +++ b/bluechips/controllers/transfer.py @@ -5,19 +5,52 @@ Handle transfers import logging from bluechips.lib.base import * -from bluechips.widgets import transfer from pylons import request +from pylons.decorators import validate + +from formencode import Schema, validators log = logging.getLogger(__name__) + +class TransferSchema(Schema): + "Validate a transfer." + allow_extra_fields = False + debtor_id = validators.Int(not_empty=True) + creditor_id = validators.Int(not_empty=True) + amount = validators.Number(not_empty=True) + description = validators.UnicodeString() + date = validators.String() + + class TransferController(BaseController): def index(self): - c.transfer = dict() - c.transfer['debtor'] = request.environ['user'] - + return self.edit() + + def edit(self, id=None): + c.users = meta.Session.query(model.User.id, model.User.name) + if id is None: + c.title = 'Add a New Transfer' + c.transfer = model.Transfer() + c.transfer.debtor_id = request.environ['user'].id + else: + c.title = 'Edit a Transfer' + c.transfer = meta.Session.query(model.Transfer).get(id) return render('/transfer/index.mako') - @validate(form=transfer.new_transfer_form, error_handler='index') - def new(self): - return str(self.form_result) + @validate(schema=TransferSchema(), form='edit') + def update(self, id=None): + if id is None: + t = model.Transfer() + meta.Session.add(t) + else: + t = meta.Session.query(model.Transfer).get(id) + + t.amount = self.form_result.pop('amount') * 100 + update_sar(t, self.form_result) + meta.Session.commit() + + h.flash('Transfer updated.') + + return h.redirect_to('/')