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 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 sqlalchemy.orm import relationship
from atst.models import Base, types 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_id = Column(UUID(as_uuid=True), ForeignKey("requests.id"), index=True)
request = relationship("Request", backref="audit_events") request = relationship("Request", backref="audit_events")
changed_state = Column(JSON()) changed_state = Column(JSONB())
event_details = Column(JSON()) event_details = Column(JSONB())
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)

View File

@ -45,19 +45,24 @@ class WorkspaceRole(Base, mixins.TimestampsMixin, mixins.AuditableMixin):
@property @property
def history(self): def history(self):
previous_state = mixins.AuditableMixin.get_history(self) previous_state = mixins.AuditableMixin.get_history(self)
auditable_previous_state = {} change_set = {}
if "role_id" in previous_state: if "role_id" in previous_state:
from_role_id = previous_state["role_id"] from_role_id = previous_state["role_id"]
from_role = db.session.query(Role).filter(Role.id == from_role_id).one() from_role = db.session.query(Role).filter(Role.id == from_role_id).one()
to_role = self.role_displayname 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: if "status" in previous_state:
auditable_previous_state["status"]= previous_state["status"].value from_status = previous_state["status"].value
return auditable_previous_state to_status = self.status.value
change_set["status"] = [from_status, to_status]
return change_set
@property @property
def event_details(self): 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 @property
def latest_invitation(self): def latest_invitation(self):

View File

@ -29,7 +29,7 @@
<br> <br>
{% if event.event_details %} {% 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> <br>
{% endif %} {% endif %}

View File

@ -20,14 +20,15 @@ def test_has_no_history(session):
workspace = Workspaces.create(RequestFactory.create(creator=owner)) workspace = Workspaces.create(RequestFactory.create(creator=owner))
workspace_role = WorkspaceRoles.add(user, workspace.id, "developer") workspace_role = WorkspaceRoles.add(user, workspace.id, "developer")
audit_events = ( create_event = (
session.query(AuditEvent) session.query(AuditEvent)
.filter(AuditEvent.resource_id == workspace_role.id) .filter(
.all() 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.changed_state
assert not create_event[0].changed_state
def test_has_history(session): 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] 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(): def test_event_details():
@ -54,7 +56,7 @@ def test_event_details():
workspace = Workspaces.create(RequestFactory.create(creator=owner)) workspace = Workspaces.create(RequestFactory.create(creator=owner))
workspace_role = WorkspaceRoles.add(user, workspace.id, "developer") 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) assert workspace_role.event_details["updated_user_id"] == str(user.id)