]> asedeno.scripts.mit.edu Git - bluechips.git/blobdiff - bluechips/controllers/transfer.py
ripped out toscawidgets, replaced with formencode, put split editing on main expendit...
[bluechips.git] / bluechips / controllers / transfer.py
index b4b375ab2de4019a765aae26b301e24bf3d17be5..79628ef3c18b0abb834e97ecbd12dd3ae377850e 100644 (file)
@@ -5,46 +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.title = 'Add a New Transfer'
-        
-        c.transfer = dict()
-        c.transfer['debtor'] = request.environ['user']
-        
-        return render('/transfer/index.mako')
+       return self.edit()
     
-    def edit(self, id):
-        c.title = 'Edit a Transfer'
-        
-        c.transfer = meta.Session.query(model.Transfer).get(id)
-        
+    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')
+    @validate(schema=TransferSchema(), form='edit')
     def update(self, id=None):
-        # Validate the submission
-        if not valid(self, transfer.new_transfer_form):
-            if id is None:
-                return self.index()
-            else:
-                return self.edit(id)
-        
         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 recorded.')
+        h.flash('Transfer updated.')
         
         return h.redirect_to('/')