X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=bluechips%2Fcontrollers%2Ftransfer.py;h=016f508df07f7d379d468db895be23454dd2ec8e;hb=25e0dd950ef119f1bf6b7ab0a54c730f4f9f5922;hp=79628ef3c18b0abb834e97ecbd12dd3ae377850e;hpb=acccaf1c26b247e15d6fe5e10658548cc4718295;p=bluechips.git diff --git a/bluechips/controllers/transfer.py b/bluechips/controllers/transfer.py index 79628ef..016f508 100644 --- a/bluechips/controllers/transfer.py +++ b/bluechips/controllers/transfer.py @@ -4,13 +4,17 @@ Handle transfers import logging +from datetime import date + from bluechips.lib.base import * -from pylons import request +from pylons import request, app_globals as g from pylons.decorators import validate from formencode import Schema, validators +from mailer import Message + log = logging.getLogger(__name__) @@ -19,9 +23,9 @@ class TransferSchema(Schema): allow_extra_fields = False debtor_id = validators.Int(not_empty=True) creditor_id = validators.Int(not_empty=True) - amount = validators.Number(not_empty=True) + amount = model.types.CurrencyValidator(not_empty=True) description = validators.UnicodeString() - date = validators.String() + date = validators.DateConverter() class TransferController(BaseController): @@ -34,6 +38,7 @@ class TransferController(BaseController): c.title = 'Add a New Transfer' c.transfer = model.Transfer() c.transfer.debtor_id = request.environ['user'].id + c.transfer.date = date.today() else: c.title = 'Edit a Transfer' c.transfer = meta.Session.query(model.Transfer).get(id) @@ -44,13 +49,21 @@ class TransferController(BaseController): if id is None: t = model.Transfer() meta.Session.add(t) + op = 'created' else: t = meta.Session.query(model.Transfer).get(id) + op = 'updated' - t.amount = self.form_result.pop('amount') * 100 update_sar(t, self.form_result) meta.Session.commit() - - h.flash('Transfer updated.') - + + show = ('Transfer of %s from %s to %s %s.' % + (t.amount, t.debtor, t.creditor, op)) + h.flash(show) + + # Send email notification to involved users if they have an email set. + body = render('/emails/transfer.txt', extra_vars={'transfer': t, + 'op': op}) + g.handle_notification((t.debtor, t.creditor), show, body) + return h.redirect_to('/')