diff --git a/atst/models/audit_event.py b/atst/models/audit_event.py
index 0e60dcdc..dd5f94a2 100644
--- a/atst/models/audit_event.py
+++ b/atst/models/audit_event.py
@@ -1,5 +1,5 @@
from sqlalchemy import String, Column, ForeignKey, inspect
-from sqlalchemy.dialects.postgresql import UUID, JSON
+from sqlalchemy.dialects.postgresql import UUID, JSONB
from sqlalchemy.orm import relationship
from atst.models import Base, types
@@ -20,8 +20,8 @@ class AuditEvent(Base, TimestampsMixin):
request_id = Column(UUID(as_uuid=True), ForeignKey("requests.id"), index=True)
request = relationship("Request", backref="audit_events")
- changed_state = Column(JSON())
- event_details = Column(JSON())
+ changed_state = Column(JSONB())
+ event_details = Column(JSONB())
resource_type = Column(String(), nullable=False)
resource_id = Column(UUID(as_uuid=True), index=True, nullable=False)
diff --git a/atst/models/workspace_role.py b/atst/models/workspace_role.py
index 9627c58a..b23563a1 100644
--- a/atst/models/workspace_role.py
+++ b/atst/models/workspace_role.py
@@ -45,19 +45,24 @@ class WorkspaceRole(Base, mixins.TimestampsMixin, mixins.AuditableMixin):
@property
def history(self):
previous_state = mixins.AuditableMixin.get_history(self)
- auditable_previous_state = {}
+ change_set = {}
if "role_id" in previous_state:
from_role_id = previous_state["role_id"]
from_role = db.session.query(Role).filter(Role.id == from_role_id).one()
to_role = self.role_displayname
- auditable_previous_state["role"] = [from_role.display_name, to_role]
+ change_set["role"] = [from_role.display_name, to_role]
if "status" in previous_state:
- auditable_previous_state["status"]= previous_state["status"].value
- return auditable_previous_state
+ from_status = previous_state["status"].value
+ to_status = self.status.value
+ change_set["status"] = [from_status, to_status]
+ return change_set
@property
def event_details(self):
- return {"updated_user": self.user_name, "updated_user_id": str(self.user_id)}
+ return {
+ "updated_user_name": self.user_name,
+ "updated_user_id": str(self.user_id),
+ }
@property
def latest_invitation(self):
diff --git a/templates/audit_log.html b/templates/audit_log.html
index 5e143aa9..5e679dfe 100644
--- a/templates/audit_log.html
+++ b/templates/audit_log.html
@@ -29,7 +29,7 @@
{% if event.event_details %}
- for User {{ event.event_details.updated_user_id }}
({{ event.event_details.updated_user }})
+ for User {{ event.event_details.updated_user_id }}
({{ event.event_details.updated_user_name }})
{% endif %}
diff --git a/tests/models/test_workspace_role.py b/tests/models/test_workspace_role.py
index 6418b72e..476ce09f 100644
--- a/tests/models/test_workspace_role.py
+++ b/tests/models/test_workspace_role.py
@@ -20,14 +20,15 @@ def test_has_no_history(session):
workspace = Workspaces.create(RequestFactory.create(creator=owner))
workspace_role = WorkspaceRoles.add(user, workspace.id, "developer")
- audit_events = (
+ create_event = (
session.query(AuditEvent)
- .filter(AuditEvent.resource_id == workspace_role.id)
- .all()
+ .filter(
+ AuditEvent.resource_id == workspace_role.id, AuditEvent.action == "create"
+ )
+ .one()
)
- create_event = [event for event in audit_events if event.action == "create"]
- assert not create_event[0].changed_state
+ assert not create_event.changed_state
def test_has_history(session):
@@ -44,7 +45,8 @@ def test_has_history(session):
)
changed_events = [event for event in audit_events if event.changed_state]
- assert changed_events[0].changed_state["role"]
+ assert changed_events[0].changed_state["role"][0]
+ assert changed_events[0].changed_state["role"][1]
def test_event_details():
@@ -54,7 +56,7 @@ def test_event_details():
workspace = Workspaces.create(RequestFactory.create(creator=owner))
workspace_role = WorkspaceRoles.add(user, workspace.id, "developer")
- assert workspace_role.event_details["updated_user"] == user.displayname
+ assert workspace_role.event_details["updated_user_name"] == user.displayname
assert workspace_role.event_details["updated_user_id"] == str(user.id)