From 9f66bbafe5ff446883d1082b91187172cc5ea4a9 Mon Sep 17 00:00:00 2001 From: leigh-mil Date: Tue, 21 May 2019 16:55:55 -0400 Subject: [PATCH] Raise NotImplementedError in AuditableMixin if the model does not have the properties portfolio_id or application_id --- atst/models/application.py | 4 ++++ atst/models/mixins/auditable.py | 4 ++-- atst/models/portfolio.py | 7 ++++++- atst/models/portfolio_invitation.py | 4 ++++ atst/models/portfolio_role.py | 4 ++++ atst/models/user.py | 8 ++++++++ 6 files changed, 28 insertions(+), 3 deletions(-) diff --git a/atst/models/application.py b/atst/models/application.py index ef783ff6..d1187aef 100644 --- a/atst/models/application.py +++ b/atst/models/application.py @@ -52,6 +52,10 @@ class Application( def displayname(self): return self.name + @property + def application_id(self): + return self.id + def __repr__(self): # pragma: no cover return "".format( self.name, self.description, self.portfolio.name, self.id diff --git a/atst/models/mixins/auditable.py b/atst/models/mixins/auditable.py index 1d83da82..acfa6b2e 100644 --- a/atst/models/mixins/auditable.py +++ b/atst/models/mixins/auditable.py @@ -90,11 +90,11 @@ class AuditableMixin(object): @property def portfolio_id(self): - return None + raise NotImplementedError() @property def application_id(self): - return None + raise NotImplementedError() @property def displayname(self): diff --git a/atst/models/portfolio.py b/atst/models/portfolio.py index 0e65b146..7f2bbe84 100644 --- a/atst/models/portfolio.py +++ b/atst/models/portfolio.py @@ -68,9 +68,14 @@ class Portfolio(Base, mixins.TimestampsMixin, mixins.AuditableMixin): def all_environments(self): return list(chain.from_iterable(p.environments for p in self.applications)) - def auditable_portfolio_id(self): + @property + def portfolio_id(self): return self.id + @property + def application_id(self): + return None + def __repr__(self): return "".format( self.name, self.user_count, self.id diff --git a/atst/models/portfolio_invitation.py b/atst/models/portfolio_invitation.py index 33aaadb6..a6e070d4 100644 --- a/atst/models/portfolio_invitation.py +++ b/atst/models/portfolio_invitation.py @@ -25,3 +25,7 @@ class PortfolioInvitation(Base, TimestampsMixin, InvitesMixin, AuditableMixin): @property def portfolio_id(self): return self.role.portfolio_id + + @property + def application_id(self): + return None diff --git a/atst/models/portfolio_role.py b/atst/models/portfolio_role.py index 3b5859cf..2d26f636 100644 --- a/atst/models/portfolio_role.py +++ b/atst/models/portfolio_role.py @@ -164,6 +164,10 @@ class PortfolioRole( def full_name(self): return self.user.full_name + @property + def application_id(self): + return None + Index( "portfolio_role_user_portfolio", diff --git a/atst/models/user.py b/atst/models/user.py index d40501a4..c1693a37 100644 --- a/atst/models/user.py +++ b/atst/models/user.py @@ -96,6 +96,14 @@ class User( def displayname(self): return self.full_name + @property + def portfolio_id(self): + return None + + @property + def application_id(self): + return None + def __repr__(self): return "".format( self.full_name, self.dod_id, self.email, self.has_portfolios, self.id