diff --git a/ihatemoney/forms.py b/ihatemoney/forms.py index d00b5fe4..cce36e39 100644 --- a/ihatemoney/forms.py +++ b/ihatemoney/forms.py @@ -17,6 +17,13 @@ from ihatemoney.models import Project, Person from ihatemoney.utils import slugify, eval_arithmetic_expression +def strip_filter(string): + try: + return string.strip() + except Exception: + return string + + def get_billform_for(project, set_default=True, **kwargs): """Return an instance of BillForm configured for a particular project. @@ -170,7 +177,7 @@ class BillForm(FlaskForm): class MemberForm(FlaskForm): - name = StringField(_("Name"), validators=[DataRequired()]) + name = StringField(_("Name"), validators=[DataRequired()], filters=[strip_filter, ]) weight_validators = [NumberRange(min=0.1, message=_("Weights should be positive"))] weight = CommaDecimalField(_("Weight"), default=1, diff --git a/ihatemoney/tests/tests.py b/ihatemoney/tests/tests.py index 551af96c..7c4fe8c1 100644 --- a/ihatemoney/tests/tests.py +++ b/ihatemoney/tests/tests.py @@ -632,6 +632,16 @@ class BudgetTestCase(IhatemoneyTestCase): balance = models.Project.query.get("raclette").balance self.assertEqual(set(balance.values()), set([6, -6])) + def test_trimmed_members(self): + self.post_project("raclette") + + # Add two times the same person (with a space at the end). + self.client.post("/raclette/members/add", data={'name': 'alexis'}) + self.client.post("/raclette/members/add", data={'name': 'alexis '}) + members = models.Project.query.get("raclette").members + + self.assertEqual(len(members), 1) + def test_weighted_members_list(self): self.post_project("raclette") @@ -1220,7 +1230,6 @@ class APITestCase(IhatemoneyTestCase): self.assertEqual(False, json.loads(req.data.decode('utf-8'))["activated"]) # re-activate the user - req = self.client.put("/api/projects/raclette/members/1", data={ "name": "Fred", "activated": True,