Make portfolio invitation specific to portfolio
- add a base domain class - extract shared model code to mixin - rename invitation classes - invitation model relationship to portfolio_role name is now more generic "role"
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
from flask import g, redirect, url_for, render_template
|
||||
|
||||
from . import portfolios_bp
|
||||
from atst.domain.invitations import Invitations
|
||||
from atst.domain.invitations import PortfolioInvitations
|
||||
from atst.queue import queue
|
||||
from atst.utils.flash import formatted_flash as flash
|
||||
from atst.domain.authz.decorator import user_can_access_decorator as user_can
|
||||
@@ -19,7 +19,7 @@ def send_invite_email(owner_name, token, new_member_email):
|
||||
|
||||
@portfolios_bp.route("/portfolios/invitations/<token>", methods=["GET"])
|
||||
def accept_invitation(token):
|
||||
invite = Invitations.accept(g.current_user, token)
|
||||
invite = PortfolioInvitations.accept(g.current_user, token)
|
||||
|
||||
for task_order in invite.portfolio.task_orders:
|
||||
if g.current_user in task_order.officers:
|
||||
@@ -37,7 +37,7 @@ def accept_invitation(token):
|
||||
)
|
||||
@user_can(Permissions.EDIT_PORTFOLIO_USERS, message="revoke invitation")
|
||||
def revoke_invitation(portfolio_id, token):
|
||||
Invitations.revoke(token)
|
||||
PortfolioInvitations.revoke(token)
|
||||
|
||||
return redirect(
|
||||
url_for(
|
||||
@@ -54,7 +54,7 @@ def revoke_invitation(portfolio_id, token):
|
||||
)
|
||||
@user_can(Permissions.EDIT_PORTFOLIO_USERS, message="resend invitation")
|
||||
def resend_invitation(portfolio_id, token):
|
||||
invite = Invitations.resend(g.current_user, token)
|
||||
invite = PortfolioInvitations.resend(g.current_user, token)
|
||||
send_invite_email(g.current_user.full_name, invite.token, invite.email)
|
||||
flash("resend_portfolio_invitation", user_name=invite.user_name)
|
||||
return redirect(
|
||||
|
||||
@@ -7,7 +7,7 @@ from atst.domain.authz.decorator import user_can_access_decorator as user_can
|
||||
from atst.models.permissions import Permissions
|
||||
from atst.database import db
|
||||
from atst.domain.exceptions import NotFoundError, NoAccessError
|
||||
from atst.domain.invitations import Invitations
|
||||
from atst.domain.invitations import PortfolioInvitations
|
||||
from atst.domain.portfolios import Portfolios
|
||||
from atst.utils.localization import translate
|
||||
from atst.forms.officers import EditTaskOrderOfficersForm
|
||||
@@ -57,7 +57,7 @@ def resend_invite(task_order_id):
|
||||
if not officer:
|
||||
raise NotFoundError("officer")
|
||||
|
||||
invitation = Invitations.lookup_by_portfolio_and_user(portfolio, officer)
|
||||
invitation = PortfolioInvitations.lookup_by_portfolio_and_user(portfolio, officer)
|
||||
|
||||
if not invitation:
|
||||
raise NotFoundError("invitation")
|
||||
@@ -65,11 +65,11 @@ def resend_invite(task_order_id):
|
||||
if not invitation.can_resend:
|
||||
raise NoAccessError("invitation")
|
||||
|
||||
Invitations.revoke(token=invitation.token)
|
||||
PortfolioInvitations.revoke(token=invitation.token)
|
||||
|
||||
invite_service = InvitationService(
|
||||
g.current_user,
|
||||
invitation.portfolio_role,
|
||||
invitation.role,
|
||||
invitation.email,
|
||||
subject=invite_type_info["subject"],
|
||||
email_template=invite_type_info["template"],
|
||||
|
||||
Reference in New Issue
Block a user