Small tweaks for adding a new application member:

- raise specific invitation type if invite not found in invitation domain classes
- more terse assignments of defaults in invitation service, smh
- terser margin expression for inline input fields
- sass formatting
- use translation for cancel link
- oxford comma for app team management permission explanation
- do not format environment roles with hyphens for role selection
- generalize some additional methods in the invitation domain base class
- use plain atst.models import path
This commit is contained in:
dandds
2019-04-30 14:49:53 -04:00
parent 5db4d9bab3
commit 4f304d747e
10 changed files with 23 additions and 30 deletions

View File

@@ -4,6 +4,7 @@ from sqlalchemy.orm.exc import NoResultFound
from atst.database import db
from atst.models import ApplicationInvitation, InvitationStatus, PortfolioInvitation
from atst.domain.portfolio_roles import PortfolioRoles
from atst.domain.application_roles import ApplicationRoles
from .exceptions import NotFoundError
@@ -40,6 +41,7 @@ class InvitationError(Exception):
class BaseInvitations(object):
model = None
role_domain_class = None
# number of minutes a given invitation is considered valid
EXPIRATION_LIMIT_MINUTES = 360
@@ -48,7 +50,7 @@ class BaseInvitations(object):
try:
invite = db.session.query(cls.model).filter_by(token=token).one()
except NoResultFound:
raise NotFoundError("invite")
raise NotFoundError(cls.model.__tablename__)
return invite
@@ -86,7 +88,7 @@ class BaseInvitations(object):
elif invite.is_pending: # pragma: no branch
cls._update_status(invite, InvitationStatus.ACCEPTED)
PortfolioRoles.enable(invite.role)
cls.role_domain_class.enable(invite.role)
return invite
@classmethod
@@ -109,11 +111,11 @@ class BaseInvitations(object):
return cls._update_status(invite, InvitationStatus.REVOKED)
@classmethod
def lookup_by_portfolio_and_user(cls, portfolio, user):
role = PortfolioRoles.get(portfolio.id, user.id)
def lookup_by_resource_and_user(cls, resource, user):
role = cls.role_domain_class.get(resource.id, user.id)
if role.latest_invitation is None:
raise NotFoundError("invitation")
raise NotFoundError(cls.model.__tablename__)
return role.latest_invitation
@@ -127,7 +129,9 @@ class BaseInvitations(object):
class PortfolioInvitations(BaseInvitations):
model = PortfolioInvitation
role_domain_class = PortfolioRoles
class ApplicationInvitations(BaseInvitations):
model = ApplicationInvitation
role_domain_class = ApplicationRoles