diff --git a/alembic/versions/875841fac207_add_audit_events_table.py b/alembic/versions/875841fac207_add_audit_events_table.py index eecbbd29..2b573a9e 100644 --- a/alembic/versions/875841fac207_add_audit_events_table.py +++ b/alembic/versions/875841fac207_add_audit_events_table.py @@ -24,6 +24,7 @@ def upgrade(): sa.Column('id', postgresql.UUID(as_uuid=True), server_default=sa.text('uuid_generate_v4()'), nullable=False), sa.Column('user_id', postgresql.UUID(as_uuid=True), nullable=True), sa.Column('resource_type', sa.String(), nullable=False), + sa.Column('display_name', sa.String(), nullable=True), sa.Column('resource_id', postgresql.UUID(as_uuid=True), nullable=False), sa.Column('action', sa.String(), nullable=False), sa.Column('workspace_id', postgresql.UUID(as_uuid=True), nullable=True), diff --git a/atst/models/audit_event.py b/atst/models/audit_event.py index 288704a7..3d6c9a00 100644 --- a/atst/models/audit_event.py +++ b/atst/models/audit_event.py @@ -19,21 +19,19 @@ class AuditEvent(Base, TimestampsMixin): 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): - full_action = "{} on {} {}".format( + + 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 "" + workspace_str = "in workspace {}".format(self.workspace_id) if self.workspace_id else "" - if self.user and self.workspace: - return "{} performed {} in workspace {}".format( - self.user.full_name, full_action, self.workspace_id - ) - if self.user: - return "{} performed {}".format(self.user.full_name, full_action) - else: - return "ATAT System performed {}".format(full_action) + return " ".join([user_str, action_str, display_name_str, workspace_str]) def save(self, connection): attrs = inspect(self).dict diff --git a/atst/models/mixins/auditable.py b/atst/models/mixins/auditable.py index 285bd17c..89645186 100644 --- a/atst/models/mixins/auditable.py +++ b/atst/models/mixins/auditable.py @@ -27,12 +27,14 @@ class AuditableMixin(object): user_id = getattr_path(g, "current_user.id") workspace_id = resource.auditable_workspace_id() resource_type = resource.auditable_resource_type() + display_name = resource.auditable_displayname() audit_event = AuditEvent( user_id=user_id, workspace_id=workspace_id, resource_type=resource_type, resource_id=resource.id, + display_name=display_name, action=action, ) @@ -63,3 +65,6 @@ class AuditableMixin(object): def auditable_workspace_id(self): return getattr_path(self, "workspace.id") + + def auditable_displayname(self): + return getattr_path(self, "displayname")