diff --git a/ihatemoney/forms.py b/ihatemoney/forms.py index 701e7c58..d0619aa1 100644 --- a/ihatemoney/forms.py +++ b/ihatemoney/forms.py @@ -15,6 +15,10 @@ import email_validator from ihatemoney.models import Project, Person from ihatemoney.utils import slugify +def strip_filter(string): + if hasattr(string, 'strip'): + return string.strip() + return string def get_billform_for(project, set_default=True, **kwargs): """Return an instance of BillForm configured for a particular project. @@ -149,7 +153,7 @@ class BillForm(FlaskForm): class MemberForm(FlaskForm): - name = StringField(_("Name"), validators=[Required()]) + name = StringField(_("Name"), validators=[Required()], 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 6fbd6f93..eed2269c 100644 --- a/ihatemoney/tests/tests.py +++ b/ihatemoney/tests/tests.py @@ -604,6 +604,17 @@ 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") @@ -1212,7 +1223,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,