Portfolio archiving

This commit is contained in:
George Drummond
2019-06-06 09:18:35 -04:00
parent c6e8c8eb8a
commit cad43af455
14 changed files with 217 additions and 8 deletions

View File

@@ -1 +1,5 @@
from .portfolios import Portfolios, PortfolioError
from .portfolios import (
Portfolios,
PortfolioError,
PortfolioDeletionApplicationsExistError,
)

View File

@@ -1,3 +1,4 @@
from atst.database import db
from atst.domain.permission_sets import PermissionSets
from atst.domain.authz import Authorization
from atst.domain.portfolio_roles import PortfolioRoles
@@ -13,6 +14,10 @@ class PortfolioError(Exception):
pass
class PortfolioDeletionApplicationsExistError(Exception):
pass
class Portfolios(object):
@classmethod
def create(cls, user, portfolio_attrs):
@@ -32,6 +37,21 @@ class Portfolios(object):
portfolio = PortfoliosQuery.get(portfolio_id)
return ScopedPortfolio(user, portfolio)
@classmethod
def delete(cls, portfolio):
if len(portfolio.applications) != 0:
raise PortfolioDeletionApplicationsExistError()
for portfolio_role in portfolio.roles:
PortfolioRoles.disable(portfolio_role)
portfolio.deleted = True
db.session.add(portfolio)
db.session.commit()
return portfolio
@classmethod
def get_for_update(cls, portfolio_id):
portfolio = PortfoliosQuery.get(portfolio_id)