Make sure all log events have portfolio and app ids (where applicable)

This commit is contained in:
leigh-mil
2019-05-16 16:58:41 -04:00
parent 927d1b7925
commit a1eb7ec935
8 changed files with 73 additions and 36 deletions

View File

@@ -26,6 +26,10 @@ class ApplicationInvitation(Base, TimestampsMixin, AuditableMixin, InvitesMixin)
def application_id(self):
return self.role.application_id
@property
def portfolio_id(self):
return self.role.portfolio_id
@property
def event_details(self):
return {"email": self.email, "dod_id": self.user_dod_id}

View File

@@ -75,6 +75,9 @@ class ApplicationRole(
lambda prms: prms.name == perm_set_name, self.permission_sets
)
@property
def portfolio_id(self):
return self.application.portfolio_id
Index(
"application_role_user_application",

View File

@@ -35,7 +35,8 @@ class Environment(
def portfolio(self):
return self.application.portfolio
def auditable_portfolio_id(self):
@property
def portfolio_id(self):
return self.application.portfolio_id
def __repr__(self):

View File

@@ -38,6 +38,14 @@ class EnvironmentRole(
def history(self):
return self.get_changes()
@property
def portfolio_id(self):
return self.environment.application.portfolio_id
@property
def application_id(self):
return self.environment.application_id
@property
def displayname(self):
return self.role

View File

@@ -13,33 +13,20 @@ class AuditableMixin(object):
@staticmethod
def create_audit_event(connection, resource, action, changed_state=None):
user_id = getattr_path(g, "current_user.id")
resource_type = resource.resource_type
display_name = resource.displayname
event_details = resource.event_details
if resource_type == "portfolio":
portfolio_id = resource.id
else:
portfolio_id = resource.portfolio_id
if resource_type == "application":
application_id = resource.id
else:
application_id = resource.application_id
if changed_state is None:
changed_state = resource.history if action == ACTION_UPDATE else None
audit_event = AuditEvent(
user_id=user_id,
portfolio_id=portfolio_id,
application_id=application_id,
resource_type=resource_type,
portfolio_id=resource.portfolio_id,
application_id=resource.application_id,
resource_type=resource.resource_type,
resource_id=resource.id,
display_name=display_name,
display_name=resource.displayname,
action=action,
changed_state=changed_state,
event_details=event_details,
event_details=resource.event_details,
)
app.logger.info(