Minor fixes

This commit is contained in:
leigh-mil 2018-11-14 16:57:34 -05:00 committed by Montana
parent b903336707
commit f35d0add55
4 changed files with 23 additions and 16 deletions

View File

@ -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)

View File

@ -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):

View File

@ -29,7 +29,7 @@
<br>
{% if event.event_details %}
for User <code>{{ event.event_details.updated_user_id }}</code> ({{ event.event_details.updated_user }})
for User <code>{{ event.event_details.updated_user_id }}</code> ({{ event.event_details.updated_user_name }})
<br>
{% endif %}

View File

@ -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)