]> asedeno.scripts.mit.edu Git - bluechips.git/blobdiff - bluechips/controllers/spend.py
Make navigation links work with edit pages
[bluechips.git] / bluechips / controllers / spend.py
index a775084d4e8c1de57818e0a0d9792a924b381a88..a3f502d9dbd9325465153b0bdb1932f3ec364cbb 100644 (file)
@@ -6,7 +6,6 @@ import logging
 
 from bluechips.lib.base import *
 from bluechips.widgets import spend
-from bluechips.lib.split import *
 
 from pylons import request
 
@@ -14,18 +13,44 @@ log = logging.getLogger(__name__)
 
 class SpendController(BaseController):
     def index(self):
+        c.title = 'Add a New Expenditure'
+        
         c.expenditure = dict()
         c.expenditure['spender'] = request.environ['user']
         
         return render('/spend/index.mako')
     
-    @validate(form=spend.new_spend_form, error_handler='index')
-    def new(self):
-        e = model.Expenditure()
+    def edit(self, id):
+        c.title = 'Edit an Expenditure'
+        
+        c.expenditure = meta.Session.query(model.Expenditure).get(id)
+        
+        return render('/spend/index.mako')
+    
+    def update(self, id=None):
+        # Validate the submission
+        if not valid(self, spend.new_spend_form):
+            if id is None:
+                return self.index()
+            else:
+                return self.edit(id)
+        
+        # Either create a new object, or, if we're editing, get the
+        # old one
+        if id is None:
+            e = model.Expenditure()
+        else:
+            e = meta.Session.query(model.Expenditure).get(id)
+        
+        # Set the fields that were submitted
         update_sar(e, self.form_result)
-        meta.Session.save(e)
+        meta.Session.save_or_update(e)
+        
+        if id is None:
+            e.even_split()
+        else:
+            e.update_split()
         
-        even_split(e)
         meta.Session.commit()
         
         h.flash('Expenditure recorded.')