1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/ihatemoney_ynh.git synced 2024-09-03 19:26:15 +02:00

Merge pull request #66 from aavenel/master

Partial fix to #62 : french numbers should use commas rather than dots
This commit is contained in:
Alexis Metaireau 2011-11-14 07:27:08 -08:00
commit 04becafbdd
2 changed files with 33 additions and 12 deletions

View file

@ -45,6 +45,12 @@ def get_billform_for(project, set_default=True, **kwargs):
form.set_default() form.set_default()
return form 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): class EditProjectForm(Form):
@ -101,7 +107,7 @@ class BillForm(Form):
date = DateField(_("Date"), validators=[Required()], default=datetime.now) date = DateField(_("Date"), validators=[Required()], default=datetime.now)
what = TextField(_("What?"), validators=[Required()]) what = TextField(_("What?"), validators=[Required()])
payer = SelectField(_("Payer"), validators=[Required()], coerce=int) payer = SelectField(_("Payer"), validators=[Required()], coerce=int)
amount = DecimalField(_("Amount paid"), validators=[Required()]) amount = CommaDecimalField(_("Amount paid"), validators=[Required()])
payed_for = SelectMultipleField(_("For whom?"), payed_for = SelectMultipleField(_("For whom?"),
validators=[Required()], widget=select_multi_checkbox, coerce=int) validators=[Required()], widget=select_multi_checkbox, coerce=int)
submit = SubmitField(_("Send the bill")) submit = SubmitField(_("Send the bill"))
@ -128,7 +134,9 @@ class BillForm(Form):
def validate_amount(self, field): def validate_amount(self, field):
if field.data < 0: 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): class MemberForm(Form):

View file

@ -1,7 +1,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import os import os
import tempfile import tempfile
import unittest import unittest2 as unittest
import base64 import base64
import json import json
@ -283,15 +283,6 @@ class BudgetTestCase(TestCase):
bill = models.Bill.query.one() bill = models.Bill.query.one()
self.assertEqual(bill.amount, 25) 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 # edit the bill
resp = self.app.post("/raclette/edit/%s" % bill.id, data={ resp = self.app.post("/raclette/edit/%s" % bill.id, data={
'date': '2011-08-10', 'date': '2011-08-10',
@ -336,6 +327,28 @@ class BudgetTestCase(TestCase):
balance = models.Project.query.get("raclette").balance balance = models.Project.query.get("raclette").balance
self.assertEqual(set(balance.values()), set([19.0, -19.0])) 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): def test_rounding(self):
self.post_project("raclette") self.post_project("raclette")