diff --git a/apps/audits/api.py b/apps/audits/api.py index fc39209c2..c401d0333 100644 --- a/apps/audits/api.py +++ b/apps/audits/api.py @@ -31,6 +31,9 @@ from orgs.models import Organization from orgs.utils import current_org, tmp_to_root_org from rbac.permissions import RBACPermission from terminal.models import default_storage +from tickets.filters import TicketFilter +from tickets.models import Ticket +from tickets.serializers.ticket import TicketSerializer from users.models import User from .backends import TYPE_ENGINE_MAPPING from .const import ActivityChoices, ActionChoices @@ -314,6 +317,25 @@ class PasswordChangeLogViewSet(ReportExportMixin, OrgReadonlyModelViewSet): return self.model.filter_queryset_by_org(queryset) +class TicketAuditViewSet(OrgReadonlyModelViewSet): + model = Ticket + serializer_class = TicketSerializer + filterset_class = TicketFilter + search_fields = ['title', 'type', 'status'] + ordering = ('-date_created',) + permission_classes = [RBACPermission] + rbac_perms = { + 'list': 'tickets.view_ticket', + 'retrieve': 'tickets.view_ticket', + } + + def get_queryset(self): + queryset = self.model.objects.all() + if not current_org.is_root(): + queryset = queryset.filter(org_id=str(current_org.id)) + return queryset + + class UserSessionViewSet(CommonApiMixin, viewsets.ModelViewSet): http_method_names = ('get', 'post', 'head', 'options', 'trace') serializer_class = UserSessionSerializer diff --git a/apps/audits/urls/api_urls.py b/apps/audits/urls/api_urls.py index 8471196c8..305687447 100644 --- a/apps/audits/urls/api_urls.py +++ b/apps/audits/urls/api_urls.py @@ -17,6 +17,7 @@ router.register(r'job-logs', api.JobLogAuditViewSet, 'job-log') router.register(r'jobs', api.JobsAuditViewSet, 'job') router.register(r'my-login-logs', api.MyLoginLogViewSet, 'my-login-log') +router.register(r'tickets', api.TicketAuditViewSet, 'ticket-audit') router.register(r'user-sessions', api.UserSessionViewSet, 'user-session') router.register(r'service-access-logs', api.ServiceAccessLogViewSet, 'service-access-log')