Route for adding new application member
- domain method for creating a new application member - ApplicationInvitations domain class - nested form for adding a new user that holds user data, application permission sets, and environment roles - Invitation service can infer invitation type based on role it's given - new invitation email templates
This commit is contained in:
@@ -2,8 +2,10 @@ from sqlalchemy.orm.exc import NoResultFound
|
||||
|
||||
from atst.database import db
|
||||
from . import BaseDomainClass
|
||||
from atst.domain.application_roles import ApplicationRoles
|
||||
from atst.domain.environments import Environments
|
||||
from atst.domain.exceptions import NotFoundError
|
||||
from atst.domain.users import Users
|
||||
from atst.models.application import Application
|
||||
from atst.models.environment import Environment
|
||||
from atst.models.environment_role import EnvironmentRole
|
||||
@@ -72,3 +74,30 @@ class Applications(BaseDomainClass):
|
||||
|
||||
db.session.add(application)
|
||||
db.session.commit()
|
||||
|
||||
@classmethod
|
||||
def create_member(
|
||||
cls, application, user_data, permission_sets=None, environment_roles_data=None
|
||||
):
|
||||
permission_sets = [] if permission_sets is None else permission_sets
|
||||
environment_roles_data = (
|
||||
[] if environment_roles_data is None else environment_roles_data
|
||||
)
|
||||
|
||||
user = Users.get_or_create_by_dod_id(
|
||||
user_data["dod_id"],
|
||||
first_name=user_data["first_name"],
|
||||
last_name=user_data["last_name"],
|
||||
phone_number=user_data.get("phone_number"),
|
||||
email=user_data["email"],
|
||||
)
|
||||
|
||||
application_role = ApplicationRoles.create(user, application, permission_sets)
|
||||
|
||||
for env_role_data in environment_roles_data:
|
||||
role = env_role_data.get("role")
|
||||
if role:
|
||||
environment = Environments.get(env_role_data.get("environment_id"))
|
||||
Environments.add_member(environment, user, env_role_data.get("role"))
|
||||
|
||||
return application_role
|
||||
|
||||
@@ -2,7 +2,7 @@ import datetime
|
||||
from sqlalchemy.orm.exc import NoResultFound
|
||||
|
||||
from atst.database import db
|
||||
from atst.models import InvitationStatus, PortfolioInvitation
|
||||
from atst.models import ApplicationInvitation, InvitationStatus, PortfolioInvitation
|
||||
from atst.domain.portfolio_roles import PortfolioRoles
|
||||
|
||||
from .exceptions import NotFoundError
|
||||
@@ -127,3 +127,7 @@ class BaseInvitations(object):
|
||||
|
||||
class PortfolioInvitations(BaseInvitations):
|
||||
model = PortfolioInvitation
|
||||
|
||||
|
||||
class ApplicationInvitations(BaseInvitations):
|
||||
model = ApplicationInvitation
|
||||
|
||||
Reference in New Issue
Block a user