mirror of
https://github.com/YunoHost-Apps/ihatemoney_ynh.git
synced 2024-09-03 19:26:15 +02:00
Merge branch 'master' of github.com:spiral-project/ihatemoney
This commit is contained in:
commit
9962b6d60f
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()
|
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):
|
||||||
|
|
|
@ -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")
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue