]> asedeno.scripts.mit.edu Git - bluechips.git/blob - bluechips/widgets/spend.py
Adding more fields to the expenditure form
[bluechips.git] / bluechips / widgets / spend.py
1 from tw import forms
2 from tw.api import WidgetsList
3
4 from tw.forms import validators
5
6 from bluechips.widgets import *
7 from bluechips import model
8 from bluechips.model.meta import Session
9
10 class _SplitFieldset(forms.ListFieldSet):
11     def getChildren():
12         try:
13             resident_share = 100.0 / float(Session.query(model.User).count())
14         except ZeroDivisionError:
15             resident_share = 0
16         for u in Session.query(model.User):
17             yield forms.TextField('%s' % u.id,
18                                   label_text=u.name,
19                                   default=(resident_share if u.resident else 0))
20     
21     children = getChildren()
22
23 class NewSpendForm(forms.ListForm):
24     class fields(WidgetsList):
25         spender = UserSelect()
26         amount = AmountField()
27         date = forms.CalendarDatePicker(
28             validator=validators.DateConverter(not_empty=True))
29         description = forms.TextField(size=40)
30         split = _SplitFieldset(suppress_label=True)
31
32 new_spend_form = NewSpendForm()