Add route for applications.revoke_invite

This commit is contained in:
leigh-mil
2019-09-20 10:09:25 -04:00
parent a4f0b10bbb
commit 5c54c043c0
7 changed files with 82 additions and 1 deletions

View File

@@ -70,3 +70,16 @@ class ApplicationRoles(object):
db.session.commit()
return application_role
@classmethod
def _update_status(cls, application_role, new_status):
application_role.status = new_status
db.session.add(application_role)
db.session.commit()
return application_role
@classmethod
def disable(cls, application_role):
application_role.deleted = True
return cls._update_status(application_role, ApplicationRoleStatus.DISABLED)

View File

@@ -143,3 +143,10 @@ class PortfolioInvitations(BaseInvitations):
class ApplicationInvitations(BaseInvitations):
model = ApplicationInvitation
role_domain_class = ApplicationRoles
@classmethod
def _update_status(cls, invite, new_status):
invite = super()._update_status(invite, new_status)
ApplicationRoles.disable(invite.role)
return invite

View File

@@ -8,6 +8,7 @@ from atst.domain.application_roles import ApplicationRoles
from atst.domain.audit_log import AuditLog
from atst.domain.common import Paginator
from atst.domain.environment_roles import EnvironmentRoles
from atst.domain.invitations import ApplicationInvitations
from atst.forms.application_member import NewForm as NewMemberForm, UpdateMemberForm
from atst.forms.application import NameAndDescriptionForm, EditEnvironmentForm
from atst.forms.data import ENV_ROLE_NO_ACCESS as NO_ACCESS
@@ -379,3 +380,25 @@ def update_member(application_id, application_role_id):
_anchor="application-members",
)
)
@applications_bp.route(
"/applications/<application_id>/members/<application_role_id>/revoke_invite",
methods=["POST"],
)
@user_can(Permissions.DELETE_APPLICATION_MEMBER, message="revoke appliction invitation")
def revoke_invite(application_id, application_role_id):
app_role = ApplicationRoles.get_by_id(application_role_id)
invite = app_role.latest_invitation
if invite.is_revokable:
ApplicationInvitations.revoke(invite.token)
return redirect(
url_for(
"applications.settings",
application_id=application_id,
fragment="application-members",
_anchor="application-members",
)
)