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:
@@ -18,44 +18,13 @@ class AuditEvent(Base, TimestampsMixin):
|
|||||||
workspace = relationship("Workspace", backref="audit_events")
|
workspace = relationship("Workspace", backref="audit_events")
|
||||||
|
|
||||||
request_id = Column(UUID(as_uuid=True), ForeignKey("requests.id"), index=True)
|
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_type = Column(String(), nullable=False)
|
||||||
resource_id = Column(UUID(as_uuid=True), index=True, nullable=False)
|
resource_id = Column(UUID(as_uuid=True), index=True, nullable=False)
|
||||||
display_name = Column(String())
|
display_name = Column(String())
|
||||||
action = Column(String(), nullable=False)
|
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):
|
def save(self, connection):
|
||||||
attrs = inspect(self).dict
|
attrs = inspect(self).dict
|
||||||
|
|
||||||
|
@@ -38,3 +38,7 @@ class User(Base, mixins.TimestampsMixin, mixins.AuditableMixin):
|
|||||||
return (
|
return (
|
||||||
Permissions.VIEW_WORKSPACE in self.atat_role.permissions
|
Permissions.VIEW_WORKSPACE in self.atat_role.permissions
|
||||||
) or self.workspace_roles
|
) or self.workspace_roles
|
||||||
|
|
||||||
|
@property
|
||||||
|
def displayname(self):
|
||||||
|
return self.full_name
|
||||||
|
@@ -20,7 +20,18 @@
|
|||||||
<h2 class='h4 audit-log__item__name'>
|
<h2 class='h4 audit-log__item__name'>
|
||||||
{{ event.user.full_name if event.user else "ATAT System" }}
|
{{ event.user.full_name if event.user else "ATAT System" }}
|
||||||
</h2>
|
</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>
|
</div>
|
||||||
</article>
|
</article>
|
||||||
</li>
|
</li>
|
||||||
|
Reference in New Issue
Block a user