]> asedeno.scripts.mit.edu Git - bluechips.git/blobdiff - bluechips/controllers/transfer.py
Added UI for working with tags
[bluechips.git] / bluechips / controllers / transfer.py
index 5aa8be20601ad651d978db51f48de37f20abe352..46bc77b9f6f10c168feff9efd22423b1019183fc 100644 (file)
@@ -10,6 +10,7 @@ from bluechips.lib.base import *
 
 from pylons import request, app_globals as g
 from pylons.decorators import validate
+from pylons.decorators.secure import authenticate_form
 from pylons.controllers.util import abort
 
 from formencode import Schema, validators
@@ -34,7 +35,7 @@ class TransferController(BaseController):
        return self.edit()
     
     def edit(self, id=None):
-        c.users = meta.Session.query(model.User.id, model.User.name)
+        c.users = get_users()
         if id is None:
             c.title = 'Add a New Transfer'
             c.transfer = model.Transfer()
@@ -47,6 +48,8 @@ class TransferController(BaseController):
                 abort(404)
         return render('/transfer/index.mako')
     
+    @redirect_on_get('edit')
+    @authenticate_form
     @validate(schema=TransferSchema(), form='edit')
     def update(self, id=None):
         if id is None:
@@ -72,3 +75,33 @@ class TransferController(BaseController):
         g.handle_notification((t.debtor, t.creditor), show, body)
 
         return h.redirect_to('/')
+
+    def delete(self, id):
+        c.title = 'Delete a Transfer'
+        c.transfer = meta.Session.query(model.Transfer).get(id)
+        if c.transfer is None:
+            abort(404)
+
+        return render('/transfer/delete.mako')
+
+    @redirect_on_get('delete')
+    @authenticate_form
+    def destroy(self, id):
+        t = meta.Session.query(model.Transfer).get(id)
+        if t is None:
+            abort(404)
+
+        if 'delete' in request.params:
+            meta.Session.delete(t)
+
+            meta.Session.commit()
+            show = ("Transfer of %s from %s to %s deleted." %
+                    (t.amount, t.debtor, t.creditor))
+            h.flash(show)
+
+            body = render('/emails/transfer.txt',
+                          extra_vars={'transfer': t,
+                                      'op': 'deleted'})
+            g.handle_notification((t.debtor, t.creditor), show, body)
+
+        return h.redirect_to('/')