]> asedeno.scripts.mit.edu Git - bluechips.git/blob - bluechips/controllers/transfer.py
ripped out toscawidgets, replaced with formencode, put split editing on main expendit...
[bluechips.git] / bluechips / controllers / transfer.py
1 """
2 Handle transfers
3 """
4
5 import logging
6
7 from bluechips.lib.base import *
8
9 from pylons import request
10 from pylons.decorators import validate
11
12 from formencode import Schema, validators
13
14 log = logging.getLogger(__name__)
15
16
17 class TransferSchema(Schema):
18     "Validate a transfer."
19     allow_extra_fields = False
20     debtor_id = validators.Int(not_empty=True)
21     creditor_id = validators.Int(not_empty=True)
22     amount = validators.Number(not_empty=True)
23     description = validators.UnicodeString()
24     date = validators.String()
25  
26
27 class TransferController(BaseController):
28     def index(self):
29        return self.edit()
30     
31     def edit(self, id=None):
32         c.users = meta.Session.query(model.User.id, model.User.name)
33         if id is None:
34             c.title = 'Add a New Transfer'
35             c.transfer = model.Transfer()
36             c.transfer.debtor_id = request.environ['user'].id
37         else:
38             c.title = 'Edit a Transfer'
39             c.transfer = meta.Session.query(model.Transfer).get(id)
40         return render('/transfer/index.mako')
41     
42     @validate(schema=TransferSchema(), form='edit')
43     def update(self, id=None):
44         if id is None:
45             t = model.Transfer()
46             meta.Session.add(t)
47         else:
48             t = meta.Session.query(model.Transfer).get(id)
49         
50         t.amount = self.form_result.pop('amount') * 100
51         update_sar(t, self.form_result)
52         meta.Session.commit()
53         
54         h.flash('Transfer updated.')
55         
56         return h.redirect_to('/')