Merge pull request #357 from dod-ccpo/audit-log-extra-info

Display user name and workspace name in audit log
This commit is contained in:
richard-dds 2018-10-01 16:18:58 -04:00 committed by GitHub
commit 8db53f5985
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 17 additions and 33 deletions

View File

@ -18,44 +18,13 @@ class AuditEvent(Base, TimestampsMixin):
workspace = relationship("Workspace", backref="audit_events")
request_id = Column(UUID(as_uuid=True), ForeignKey("requests.id"), index=True)
request = relationship("Request", backref="audit_events")
resource_type = Column(String(), nullable=False)
resource_id = Column(UUID(as_uuid=True), index=True, nullable=False)
display_name = Column(String())
action = Column(String(), nullable=False)
def __str__(self):
user_str = (
"{} performed".format(self.user.full_name) if self.user else "ATAT System"
)
action_str = "{} on {} {}".format(
self.action, self.resource_type, self.resource_id
)
display_name_str = "({})".format(self.display_name) if self.display_name else ""
scope_str = ""
if self.request_id and self.resource_type != "request":
scope_str = "for request {}".format(self.request_id)
elif self.workspace_id and self.resource_type != "workspace":
scope_str = "in workspace {}".format(self.workspace_id)
return " ".join([user_str, action_str, display_name_str, scope_str])
@property
def activity_description(self):
action_str = "{} on {} {}".format(
self.action, self.resource_type, self.resource_id
)
display_name_str = "({})".format(self.display_name) if self.display_name else ""
scope_str = ""
if self.request_id and self.resource_type != "request":
scope_str = "for request {}".format(self.request_id)
elif self.workspace_id and self.resource_type != "workspace":
scope_str = "in workspace {}".format(self.workspace_id)
return " ".join([action_str, display_name_str, scope_str])
def save(self, connection):
attrs = inspect(self).dict

View File

@ -38,3 +38,7 @@ class User(Base, mixins.TimestampsMixin, mixins.AuditableMixin):
return (
Permissions.VIEW_WORKSPACE in self.atat_role.permissions
) or self.workspace_roles
@property
def displayname(self):
return self.full_name

View File

@ -20,7 +20,18 @@
<h2 class='h4 audit-log__item__name'>
{{ event.user.full_name if event.user else "ATAT System" }}
</h2>
{{ event.activity_description }}
{{ event.action }} {{ event.resource_type }} <code>{{ event.resource_id }}</code>
{% if event.display_name %}
({{ event.display_name }})
{% endif %}
<br>
{% if event.workspace %}
in Workspace <code>{{ event.workspace_id }}</code> ({{ event.workspace.name }})
{% elif event.request %}
on Request <code>{{ event.request_id }}</code> ({{ event.request.displayname }})
{% endif %}
</div>
</article>
</li>