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:
commit
04becafbdd
2 changed files with 33 additions and 12 deletions
|
@ -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):
|
||||
|
|
|
@ -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")
|
||||
|
||||
|
|
Loading…
Reference in a new issue