aboutsummaryrefslogtreecommitdiff
path: root/budget
diff options
context:
space:
mode:
authorAlexis Metaireau <ametaireau@gmail.com>2011-11-14 07:27:08 -0800
committerAlexis Metaireau <ametaireau@gmail.com>2011-11-14 07:27:08 -0800
commit04becafbddf6cac095d1429a37242fb79a83bba0 (patch)
treedf12a3501733160af125b3b04154cbc063a3de8b /budget
parent0fe49c13d5512a2a172c47f3497c0442d909a040 (diff)
parente20c3bdb6bea10d56e72d903952875da53cabd90 (diff)
downloadihatemoney-mirror-04becafbddf6cac095d1429a37242fb79a83bba0.zip
ihatemoney-mirror-04becafbddf6cac095d1429a37242fb79a83bba0.tar.gz
ihatemoney-mirror-04becafbddf6cac095d1429a37242fb79a83bba0.tar.bz2
Merge pull request #66 from aavenel/master
Partial fix to #62 : french numbers should use commas rather than dots
Diffstat (limited to 'budget')
-rw-r--r--budget/forms.py12
-rw-r--r--budget/tests.py33
2 files changed, 33 insertions, 12 deletions
diff --git a/budget/forms.py b/budget/forms.py
index 36bde64..f5c3fb5 100644
--- a/budget/forms.py
+++ b/budget/forms.py
@@ -45,6 +45,12 @@ def get_billform_for(project, set_default=True, **kwargs):
form.set_default()
return form
+class CommaDecimalField(DecimalField):
+ """A class to deal with comma in Decimal Field"""
+ def process_formdata(self, value):
+ if value:
+ value[0] = str(value[0]).replace(',', '.')
+ return super(CommaDecimalField, self).process_formdata(value)
class EditProjectForm(Form):
@@ -101,7 +107,7 @@ class BillForm(Form):
date = DateField(_("Date"), validators=[Required()], default=datetime.now)
what = TextField(_("What?"), validators=[Required()])
payer = SelectField(_("Payer"), validators=[Required()], coerce=int)
- amount = DecimalField(_("Amount paid"), validators=[Required()])
+ amount = CommaDecimalField(_("Amount paid"), validators=[Required()])
payed_for = SelectMultipleField(_("For whom?"),
validators=[Required()], widget=select_multi_checkbox, coerce=int)
submit = SubmitField(_("Send the bill"))
@@ -128,7 +134,9 @@ class BillForm(Form):
def validate_amount(self, field):
if field.data < 0:
- raise ValidationError(_("Bills can't be negative"))
+ field.data = abs(field.data)
+ elif field.data == 0:
+ raise ValidationError(_("Bills can't be null"))
class MemberForm(Form):
diff --git a/budget/tests.py b/budget/tests.py
index 3f261fa..de6317b 100644
--- a/budget/tests.py
+++ b/budget/tests.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
import os
import tempfile
-import unittest
+import unittest2 as unittest
import base64
import json
@@ -283,15 +283,6 @@ class BudgetTestCase(TestCase):
bill = models.Bill.query.one()
self.assertEqual(bill.amount, 25)
- self.app.post("/raclette/add", data={
- 'date': '2011-08-10',
- 'what': u'fromage à raclette',
- 'payer': members_ids[0],
- 'payed_for': members_ids,
- 'amount': '-25', # bill with a negative value is not possible
- })
- self.assertEqual(1, models.Bill.query.count())
-
# edit the bill
resp = self.app.post("/raclette/edit/%s" % bill.id, data={
'date': '2011-08-10',
@@ -336,6 +327,28 @@ class BudgetTestCase(TestCase):
balance = models.Project.query.get("raclette").balance
self.assertEqual(set(balance.values()), set([19.0, -19.0]))
+ #Bill with negative amount
+ self.app.post("/raclette/add", data={
+ 'date': '2011-08-12',
+ 'what': u'fromage à raclette',
+ 'payer': members_ids[0],
+ 'payed_for': members_ids,
+ 'amount': '-25', # bill with a negative value should be converted to a positive value
+ })
+ bill = models.Bill.query.filter(models.Bill.date=='2011-08-12')[0]
+ self.assertEqual(bill.amount, 25)
+
+ #add a bill with a comma
+ self.app.post("/raclette/add", data={
+ 'date': '2011-08-01',
+ 'what': u'fromage à raclette',
+ 'payer': members_ids[0],
+ 'payed_for': members_ids,
+ 'amount': '25,02',
+ })
+ bill = models.Bill.query.filter(models.Bill.date=='2011-08-01')[0]
+ self.assertEqual(bill.amount, 25.02)
+
def test_rounding(self):
self.post_project("raclette")