Route for accepting an application invitation.

- Domain method for enabling an application role.
- Updated ApplicationRole model `history` property so that it serializes
  the `status` correctly
This commit is contained in:
dandds
2019-05-03 06:21:30 -04:00
parent d8771accca
commit a2ebdf78a0
7 changed files with 71 additions and 3 deletions

View File

@@ -1,5 +1,5 @@
from atst.database import db
from atst.models.application_role import ApplicationRole
from atst.models import ApplicationRole, ApplicationRoleStatus
from atst.domain.permission_sets import PermissionSets
@@ -21,3 +21,10 @@ class ApplicationRoles(object):
db.session.commit()
return application_role
@classmethod
def enable(cls, role):
role.status = ApplicationRoleStatus.ACTIVE
db.session.add(role)
db.session.commit()

View File

@@ -62,7 +62,13 @@ class ApplicationRole(
@property
def history(self):
return self.get_changes()
previous_state = self.get_changes()
change_set = {}
if "status" in previous_state:
from_status = previous_state["status"][0].value
to_status = self.status.value
change_set["status"] = [from_status, to_status]
return change_set
def has_permission_set(self, perm_set_name):
return first_or_none(

View File

@@ -6,6 +6,7 @@ from . import index
from . import new
from . import settings
from . import team
from . import invitations
from atst.domain.environment_roles import EnvironmentRoles
from atst.domain.exceptions import UnauthorizedError
from atst.domain.authz.decorator import user_can_access_decorator as user_can

View File

@@ -0,0 +1,15 @@
from flask import redirect, url_for, g
from . import applications_bp
from atst.domain.invitations import ApplicationInvitations
@applications_bp.route("/applications/invitations/<token>", methods=["GET"])
def accept_invitation(token):
invite = ApplicationInvitations.accept(g.current_user, token)
return redirect(
url_for(
"portfolios.show_portfolio", portfolio_id=invite.application.portfolio_id
)
)