From d1536dfb3914f1bdae01d5f30dfa2b59dd198b2d Mon Sep 17 00:00:00 2001 From: Chad Whitacre Date: Wed, 27 May 2015 11:12:50 -0400 Subject: [PATCH 1/3] Failing test for #3482 --- tests/py/test_teams.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/tests/py/test_teams.py b/tests/py/test_teams.py index 4750d84471..e100c7ce47 100644 --- a/tests/py/test_teams.py +++ b/tests/py/test_teams.py @@ -13,7 +13,7 @@ class TestNewTeams(Harness): 'homepage': 'http://gratipay.com/', 'agree_terms': 'true', 'product_or_service': 'We make widgets.', - 'revenue_model': 'People pay us', + 'revenue_model': 'People pay us.', 'getting_involved': 'People do stuff.', 'getting_paid': 'We pay people.' } @@ -46,6 +46,17 @@ def test_can_create_new_team(self): assert team assert team.owner == 'alice' + def test_all_fields_persist(self): + self.make_participant('alice', claimed_time='now', email_address='', last_ach_result='') + self.post_new(dict(self.valid_data)) + team = Team.from_slug('gratiteam') + assert team.name == 'Gratiteam' + assert team.homepage == 'http://gratipay.com/' + assert team.product_or_service == 'We make widgets.' + assert team.revenue_model == 'People pay us.' + assert team.getting_involved == 'People do stuff.' + assert team.getting_paid == 'We pay people.' + def test_401_for_anon_creating_new_team(self): self.post_new(self.valid_data, auth_as=None, expected=401) assert self.db.one("SELECT COUNT(*) FROM teams") == 0 From 8ba205d1b88f5bb9870c3994bac37c3fd79684a9 Mon Sep 17 00:00:00 2001 From: Chad Whitacre Date: Wed, 27 May 2015 11:30:02 -0400 Subject: [PATCH 2/3] Refactor Team.insert to match ExchangeRoute.insert --- gratipay/models/team.py | 17 ++++++++++------- www/teams/create.json.spt | 2 +- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/gratipay/models/team.py b/gratipay/models/team.py index da4572218c..c45cec69bb 100644 --- a/gratipay/models/team.py +++ b/gratipay/models/team.py @@ -47,18 +47,21 @@ def _from_thing(cls, thing, value): """.format(thing), (value,)) @classmethod - def create_new(cls, owner, fields): + def insert(cls, owner, **fields): + fields['slug_lower'] = fields['slug'].lower() + fields['owner'] = owner.username return cls.db.one(""" INSERT INTO teams - (slug, slug_lower, name, homepage, product_or_service, - getting_involved, getting_paid, owner) - VALUES (%s, %s, %s, %s, %s, %s, %s, %s) + (slug, slug_lower, name, homepage, + product_or_service, getting_involved, getting_paid, + owner) + VALUES (%(slug)s, %(slug_lower)s, %(name)s, %(homepage)s, + %(product_or_service)s, %(getting_involved)s, %(getting_paid)s, + %(owner)s) RETURNING teams.*::teams - """, (fields['slug'], fields['slug'].lower(), fields['name'], fields['homepage'], - fields['product_or_service'], fields['getting_involved'], fields['getting_paid'], - owner.username)) + """, fields) def get_og_title(self): out = self.name diff --git a/www/teams/create.json.spt b/www/teams/create.json.spt index 56fa6518de..d82086a76f 100644 --- a/www/teams/create.json.spt +++ b/www/teams/create.json.spt @@ -47,7 +47,7 @@ if request.method == 'POST': fields['slug'] = slugize(fields['name']) try: - Team.create_new(user.participant, fields) + Team.insert(user.participant, **fields) except IntegrityError: raise Response(400, _("Sorry, there is already a team using '{}'.", fields['slug'])) From 5e55ca4893a5e31b5240c75114b32d49fbc61e19 Mon Sep 17 00:00:00 2001 From: Chad Whitacre Date: Wed, 27 May 2015 11:30:48 -0400 Subject: [PATCH 3/3] Store revenue model --- gratipay/models/team.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gratipay/models/team.py b/gratipay/models/team.py index c45cec69bb..0af439b962 100644 --- a/gratipay/models/team.py +++ b/gratipay/models/team.py @@ -54,10 +54,11 @@ def insert(cls, owner, **fields): INSERT INTO teams (slug, slug_lower, name, homepage, - product_or_service, getting_involved, getting_paid, + product_or_service, revenue_model, getting_involved, getting_paid, owner) VALUES (%(slug)s, %(slug_lower)s, %(name)s, %(homepage)s, - %(product_or_service)s, %(getting_involved)s, %(getting_paid)s, + %(product_or_service)s, %(revenue_model)s, %(getting_involved)s, + %(getting_paid)s, %(owner)s) RETURNING teams.*::teams