]> asedeno.scripts.mit.edu Git - bluechips.git/blobdiff - bluechips/controllers/transfer.py
if we GET to an update action, redirect to the edit action
[bluechips.git] / bluechips / controllers / transfer.py
index 0fb9a557f6948b8899e69b602b2bd1f43259d34c..50948456fad832da5bd81035aee1ea08a6d15d8c 100644 (file)
@@ -8,11 +8,14 @@ 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 pylons.controllers.util import abort
 
 from formencode import Schema, validators
 
+from mailer import Message
+
 log = logging.getLogger(__name__)
 
 
@@ -40,22 +43,33 @@ class TransferController(BaseController):
         else:
             c.title = 'Edit a Transfer'
             c.transfer = meta.Session.query(model.Transfer).get(id)
+            if c.transfer is None:
+                abort(404)
         return render('/transfer/index.mako')
     
+    @redirect_on_get('edit')
     @validate(schema=TransferSchema(), form='edit')
     def update(self, id=None):
         if id is None:
             t = model.Transfer()
             meta.Session.add(t)
+            op = 'created'
         else:
             t = meta.Session.query(model.Transfer).get(id)
+            if t is None:
+                abort(404)
+            op = 'updated'
         
         update_sar(t, self.form_result)
         meta.Session.commit()
        
-        if id is None:
-            h.flash('Transfer created.')
-        else:
-            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('/')