From db05d2b86fa2d75f162f5c3f83a21ab8552b452a Mon Sep 17 00:00:00 2001 From: Masala Date: Fri, 15 Mar 2019 17:58:19 -0400 Subject: [PATCH 1/4] no negative payouts --- backend/grant/proposal/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/grant/proposal/models.py b/backend/grant/proposal/models.py index 1224ed5a..7c80998c 100644 --- a/backend/grant/proposal/models.py +++ b/backend/grant/proposal/models.py @@ -299,7 +299,7 @@ class Proposal(db.Model): if len(milestone.content) > 200: raise ValidationException("Milestone content must be no more than 200 chars") - payout_total += float(milestone.payout_percent) + payout_total += abs(float(milestone.payout_percent)) try: present = datetime.datetime.today().replace(day=1) From 7703d274bdfe94c42ab5b9d3c98214d9669947eb Mon Sep 17 00:00:00 2001 From: Masala Date: Fri, 15 Mar 2019 19:17:55 -0400 Subject: [PATCH 2/4] raise ValidationException on invalid payout percent --- backend/grant/proposal/models.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/backend/grant/proposal/models.py b/backend/grant/proposal/models.py index 7c80998c..91dd7250 100644 --- a/backend/grant/proposal/models.py +++ b/backend/grant/proposal/models.py @@ -299,7 +299,15 @@ class Proposal(db.Model): if len(milestone.content) > 200: raise ValidationException("Milestone content must be no more than 200 chars") - payout_total += abs(float(milestone.payout_percent)) + try: + p = float(milestone.payout_percent) + if p <= 0: + raise ValidationException("Milestone payout percent must be greater than zero") + + except ValueError: + raise ValidationException("Milestone payout percent must be a number") + + payout_total += p try: present = datetime.datetime.today().replace(day=1) From 3baa6d258f8c9427e770c14c6252f07aa67326e4 Mon Sep 17 00:00:00 2001 From: Masala Date: Fri, 15 Mar 2019 19:26:15 -0400 Subject: [PATCH 3/4] add payout percent frontend validation --- frontend/client/modules/create/utils.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/frontend/client/modules/create/utils.ts b/frontend/client/modules/create/utils.ts index 123f6343..27ed8d5e 100644 --- a/frontend/client/modules/create/utils.ts +++ b/frontend/client/modules/create/utils.ts @@ -134,6 +134,8 @@ export function getCreateErrors( return 'Payout percent is required'; } else if (Number.isNaN(parseInt(ms.payoutPercent, 10))) { return 'Payout percent must be a valid number'; + } else if (parseInt(ms.payoutPercent, 10) <= 0) { + return 'Payout percent must be greater than zero'; } // Last one shows percentage errors From ba1b54d979475058393c96d0477cd4d6ee537ed2 Mon Sep 17 00:00:00 2001 From: Masala Date: Fri, 15 Mar 2019 19:31:59 -0400 Subject: [PATCH 4/4] add check for payout percent > 100 --- frontend/client/modules/create/utils.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/frontend/client/modules/create/utils.ts b/frontend/client/modules/create/utils.ts index 27ed8d5e..dd9399f9 100644 --- a/frontend/client/modules/create/utils.ts +++ b/frontend/client/modules/create/utils.ts @@ -136,6 +136,8 @@ export function getCreateErrors( return 'Payout percent must be a valid number'; } else if (parseInt(ms.payoutPercent, 10) <= 0) { return 'Payout percent must be greater than zero'; + } else if (parseInt(ms.payoutPercent, 10) > 100) { + return 'Payout percent must be less than or equal to 100'; } // Last one shows percentage errors