From e2bf820de64d9814700bb3f49b33e1dc58100b30 Mon Sep 17 00:00:00 2001 From: leigh-mil Date: Thu, 14 Mar 2019 14:51:32 -0400 Subject: [PATCH] Check if invite cannot be resent before raising error --- atst/models/invitation.py | 4 ++++ atst/routes/portfolios/task_orders.py | 8 +++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/atst/models/invitation.py b/atst/models/invitation.py index fb92c178..62628d0a 100644 --- a/atst/models/invitation.py +++ b/atst/models/invitation.py @@ -103,6 +103,10 @@ class Invitation(Base, TimestampsMixin, AuditableMixin): def is_revokable(self): return self.is_pending and not self.is_expired + @property + def can_resend(self): + return self.is_pending or self.is_expired + @property def user_dod_id(self): return self.user.dod_id if self.user is not None else None diff --git a/atst/routes/portfolios/task_orders.py b/atst/routes/portfolios/task_orders.py index 385b4124..d8f4fba8 100644 --- a/atst/routes/portfolios/task_orders.py +++ b/atst/routes/portfolios/task_orders.py @@ -14,7 +14,6 @@ from atst.forms.dd_254 import DD254Form from atst.forms.ko_review import KOReviewForm from atst.forms.officers import EditTaskOrderOfficersForm from atst.models.task_order import Status as TaskOrderStatus -from atst.models.invitation import Status as InvitationStatus from atst.utils.flash import formatted_flash as flash from atst.services.invitation import ( update_officer_invitations, @@ -126,7 +125,10 @@ def resend_invite(portfolio_id, task_order_id, form=None): invitation = Invitations.lookup_by_portfolio_and_user(portfolio, officer) - if invitation.status is not InvitationStatus.PENDING: + if not invitation: + raise NotFoundError("invitation") + + if not invitation.can_resend: raise NoAccessError("invitation") Invitations.revoke(token=invitation.token) @@ -210,7 +212,7 @@ def task_order_invitations(portfolio_id, task_order_id): form=form, ) else: - raise NoAccessError("task_order") + raise NotFoundError("task_order") @portfolios_bp.route(