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