When new member is added, an invite is sent to the new member

This commit is contained in:
leigh-mil 2018-10-23 16:54:51 -04:00 committed by dandds
parent b8fc92cd14
commit 1c444c726c
3 changed files with 40 additions and 0 deletions

View File

@ -24,6 +24,8 @@ from atst.forms.workspace import WorkspaceForm
from atst.forms.data import ENVIRONMENT_ROLES, ENV_ROLE_MODAL_DESCRIPTION from atst.forms.data import ENVIRONMENT_ROLES, ENV_ROLE_MODAL_DESCRIPTION
from atst.domain.authz import Authorization from atst.domain.authz import Authorization
from atst.models.permissions import Permissions from atst.models.permissions import Permissions
from atst.domain.invitations import Invitations
from atst.queue import queue
bp = Blueprint("workspaces", __name__) bp = Blueprint("workspaces", __name__)
@ -218,6 +220,17 @@ def new_member(workspace_id):
) )
def send_invite_email(owner_name, invite_id, new_member_email):
body = render_template(
"emails/invitation.txt", owner=owner_name, invite_id=invite_id
)
queue.send_mail(
[new_member_email],
"{} has invited you to a JEDI Cloud Workspace".format(owner_name),
body,
)
@bp.route("/workspaces/<workspace_id>/members/new", methods=["POST"]) @bp.route("/workspaces/<workspace_id>/members/new", methods=["POST"])
def create_member(workspace_id): def create_member(workspace_id):
workspace = Workspaces.get(g.current_user, workspace_id) workspace = Workspaces.get(g.current_user, workspace_id)
@ -226,6 +239,11 @@ def create_member(workspace_id):
if form.validate(): if form.validate():
try: try:
new_member = Workspaces.create_member(g.current_user, workspace, form.data) new_member = Workspaces.create_member(g.current_user, workspace, form.data)
invite = Invitations.create(workspace, new_member.user)
send_invite_email(
g.current_user.full_name, invite.id, new_member.user.email
)
return redirect( return redirect(
url_for( url_for(
"workspaces.workspace_members", "workspaces.workspace_members",
@ -318,3 +336,8 @@ def update_member(workspace_id, member_id):
workspace=workspace, workspace=workspace,
member=member, member=member,
) )
@bp.route("/workspaces/invitation/<invite_id>", methods=["GET"])
def accept_invitation(invite_id):
pass

View File

@ -0,0 +1,12 @@
Join this JEDI Cloud Workspace
{{ owner }} has invited you to join a JEDI Cloud Workspace. Login now to view or use your JEDI Cloud resources.
{{ url_for("workspaces.accept_invitation", invite_id=invite_id, _external=True) }}
What is JEDI Cloud?
JEDI Cloud is a DoD enterprise-wide solution for commercial cloud services.
What is a JEDI Cloud Workspace?
A JEDI Cloud Workspace is where you may access and manage the cloud resources associated with your projects and environments.
JEDI Cloud is managed by the Cloud Computing Program Office. Learn more at jedi.cloud.

View File

@ -7,6 +7,7 @@ from atst.domain.projects import Projects
from atst.domain.environments import Environments from atst.domain.environments import Environments
from atst.domain.environment_roles import EnvironmentRoles from atst.domain.environment_roles import EnvironmentRoles
from atst.models.workspace_user import WorkspaceUser from atst.models.workspace_user import WorkspaceUser
from atst.queue import queue
def test_user_with_permission_has_budget_report_link(client, user_session): def test_user_with_permission_has_budget_report_link(client, user_session):
@ -181,6 +182,8 @@ def test_create_member(client, user_session):
workspace = WorkspaceFactory.create() workspace = WorkspaceFactory.create()
Workspaces._create_workspace_role(owner, workspace, "admin") Workspaces._create_workspace_role(owner, workspace, "admin")
user_session(owner) user_session(owner)
queue_length = len(queue.get_queue())
response = client.post( response = client.post(
url_for("workspaces.create_member", workspace_id=workspace.id), url_for("workspaces.create_member", workspace_id=workspace.id),
data={ data={
@ -195,6 +198,8 @@ def test_create_member(client, user_session):
assert response.status_code == 200 assert response.status_code == 200
assert user.has_workspaces assert user.has_workspaces
assert user.invitations
assert len(queue.get_queue()) == queue_length + 1
def test_permissions_for_view_member(client, user_session): def test_permissions_for_view_member(client, user_session):