Add audit log to app settings page

This commit is contained in:
leigh-mil 2019-05-15 19:10:18 -04:00
parent 3e07d95969
commit 927d1b7925
4 changed files with 27 additions and 2 deletions

View File

@ -22,6 +22,15 @@ class AuditEventQuery(Query):
)
return cls.paginate(query, pagination_opts)
@classmethod
def get_application_events(cls, application_id, pagination_opts):
query = (
db.session.query(cls.model)
.filter(cls.model.application_id == application_id)
.order_by(cls.model.time_created.desc())
)
return cls.paginate(query, pagination_opts)
class AuditLog(object):
@classmethod
@ -36,6 +45,9 @@ class AuditLog(object):
def get_portfolio_events(cls, portfolio, pagination_opts=None):
return AuditEventQuery.get_portfolio_events(portfolio.id, pagination_opts)
@classmethod
def get_application_events(cls, application, pagination_opts=None):
return AuditEventQuery.get_application_events(application.id, pagination_opts)
@classmethod
def get_by_resource(cls, resource_id):

View File

@ -3,6 +3,8 @@ from flask import redirect, render_template, request as http_request, url_for
from . import applications_bp
from atst.domain.environments import Environments
from atst.domain.applications import Applications
from atst.domain.audit_log import AuditLog
from atst.domain.common import Paginator
from atst.forms.app_settings import AppEnvRolesForm
from atst.forms.application import ApplicationForm, EditEnvironmentForm
from atst.forms.data import ENV_ROLE_NO_ACCESS as NO_ACCESS
@ -90,6 +92,8 @@ def render_settings_page(application, **kwargs):
environments_obj = get_environments_obj_for_app(application=application)
members_form = AppEnvRolesForm(data=data_for_app_env_roles_form(application))
new_env_form = EditEnvironmentForm()
pagination_opts = Paginator.get_pagination_opts(http_request)
audit_events = AuditLog.get_application_events(application, pagination_opts)
if "application_form" not in kwargs:
kwargs["application_form"] = ApplicationForm(
@ -102,6 +106,7 @@ def render_settings_page(application, **kwargs):
environments_obj=environments_obj,
members_form=members_form,
new_env_form=new_env_form,
audit_events=audit_events,
**kwargs,
)

View File

@ -4,6 +4,7 @@
{% from "components/delete_confirmation.html" import DeleteConfirmation %}
{% from "components/icon.html" import Icon %}
{% from "components/modal.html" import Modal %}
{% from "components/pagination.html" import Pagination %}
{% from "components/text_input.html" import TextInput %}
{% set secondary_breadcrumb = 'portfolios.applications.existing_application_title' | translate({ "application_name": application.name }) %}
@ -102,4 +103,9 @@
{% endcall %}
{% endif %}
{% if user_can(permissions.VIEW_APPLICATION) %}
{% include "fragments/audit_events_log.html" %}
{{ Pagination(audit_events, url=url_for('applications.settings', application_id=application.id)) }}
{% endif %}
{% endblock %}

View File

@ -15,6 +15,7 @@ from atst.routes.applications.settings import check_users_are_in_application
from atst.domain.applications import Applications
from atst.domain.environment_roles import EnvironmentRoles
from atst.domain.environments import Environments
from atst.domain.common import Paginator
from atst.domain.permission_sets import PermissionSets
from atst.domain.portfolios import Portfolios
from atst.domain.exceptions import NotFoundError
@ -116,7 +117,7 @@ def test_edit_application_environments_obj(app, client, user_session):
)
assert response.status_code == 200
_, context = templates[0]
_, context = templates[-1]
assert isinstance(context["members_form"], AppEnvRolesForm)
env_obj = context["environments_obj"][0]
@ -127,6 +128,7 @@ def test_edit_application_environments_obj(app, client, user_session):
env_obj["members"].sort()
== [env_role1.user.full_name, env_role2.user.full_name].sort()
)
assert isinstance(context["audit_events"], Paginator)
def test_data_for_app_env_roles_form(app, client, user_session):
@ -156,7 +158,7 @@ def test_data_for_app_env_roles_form(app, client, user_session):
)
assert response.status_code == 200
_, context = templates[0]
_, context = templates[-1]
members_form = context["members_form"]
assert isinstance(members_form, AppEnvRolesForm)