mirror of
https://github.com/pretix/pretix.git
synced 2026-05-10 16:04:02 +00:00
Allow to inspect logs by device
This commit is contained in:
@@ -0,0 +1,55 @@
|
|||||||
|
{% extends "pretixcontrol/items/base.html" %}
|
||||||
|
{% load i18n %}
|
||||||
|
{% load static %}
|
||||||
|
{% block title %}{% trans "Device logs" %}{% endblock %}
|
||||||
|
{% block inside %}
|
||||||
|
<h1>{% trans "Device logs" %}</h1>
|
||||||
|
<h2>
|
||||||
|
<span class="fa fa-mobile fa-fw"></span> {{ device }}
|
||||||
|
</h2>
|
||||||
|
<ul class="list-group">
|
||||||
|
{% for log in logs %}
|
||||||
|
<li class="list-group-item logentry">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-2 col-sm-6 col-xs-12">
|
||||||
|
<span class="fa fa-clock-o"></span>
|
||||||
|
{{ log.datetime|date:"SHORT_DATETIME_FORMAT" }}
|
||||||
|
{% if log.shredded %}
|
||||||
|
<span class="fa fa-eraser fa-danger fa-fw"
|
||||||
|
data-toggle="tooltip"
|
||||||
|
title="{% trans "Personal data was cleared from this log entry." %}">
|
||||||
|
</span>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-2 col-sm-6 col-xs-12">
|
||||||
|
{% if log.event %}
|
||||||
|
<span class="fa fa-calendar fa-fw"></span>
|
||||||
|
<a href="{% url "control:event.index" organizer=request.organizer.slug event=log.event.slug %}">
|
||||||
|
{{ log.event.name }}
|
||||||
|
</a>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-2 col-sm-12 col-xs-12">
|
||||||
|
{% if log.display_object %}
|
||||||
|
<span class="fa fa-flag"></span> {{ log.display_object|safe }}
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-6 col-sm-12 col-xs-12">
|
||||||
|
{{ log.display }}
|
||||||
|
{% if staff_session %}
|
||||||
|
<a href="" class="btn btn-default btn-xs" data-expandlogs data-id="{{ log.pk }}">
|
||||||
|
<span class="fa-eye fa fa-fw"></span>
|
||||||
|
{% trans "Inspect" %}
|
||||||
|
</a>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
{% empty %}
|
||||||
|
<div class="list-group-item">
|
||||||
|
<em>{% trans "No results" %}</em>
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
{% include "pretixcontrol/pagination.html" %}
|
||||||
|
{% endblock %}
|
||||||
@@ -92,6 +92,11 @@
|
|||||||
class="btn btn-default btn-sm">
|
class="btn btn-default btn-sm">
|
||||||
{% trans "Revoke access" %}</a>
|
{% trans "Revoke access" %}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
<a href="{% url "control:organizer.device.logs" organizer=request.organizer.slug device=d.id %}"
|
||||||
|
class="btn btn-default btn-sm">
|
||||||
|
<span class="fa fa-list-alt"></span>
|
||||||
|
{% trans "Logs" %}
|
||||||
|
</a>
|
||||||
<a href="{% url "control:organizer.device.edit" organizer=request.organizer.slug device=d.id %}"
|
<a href="{% url "control:organizer.device.edit" organizer=request.organizer.slug device=d.id %}"
|
||||||
class="btn btn-default btn-sm"><i class="fa fa-edit"></i></a>
|
class="btn btn-default btn-sm"><i class="fa fa-edit"></i></a>
|
||||||
</td>
|
</td>
|
||||||
|
|||||||
@@ -97,6 +97,8 @@ urlpatterns = [
|
|||||||
name='organizer.device.connect'),
|
name='organizer.device.connect'),
|
||||||
url(r'^organizer/(?P<organizer>[^/]+)/device/(?P<device>[^/]+)/revoke$', organizer.DeviceRevokeView.as_view(),
|
url(r'^organizer/(?P<organizer>[^/]+)/device/(?P<device>[^/]+)/revoke$', organizer.DeviceRevokeView.as_view(),
|
||||||
name='organizer.device.revoke'),
|
name='organizer.device.revoke'),
|
||||||
|
url(r'^organizer/(?P<organizer>[^/]+)/device/(?P<device>[^/]+)/logs$', organizer.DeviceLogView.as_view(),
|
||||||
|
name='organizer.device.logs'),
|
||||||
url(r'^organizer/(?P<organizer>[^/]+)/teams$', organizer.TeamListView.as_view(), name='organizer.teams'),
|
url(r'^organizer/(?P<organizer>[^/]+)/teams$', organizer.TeamListView.as_view(), name='organizer.teams'),
|
||||||
url(r'^organizer/(?P<organizer>[^/]+)/team/add$', organizer.TeamCreateView.as_view(), name='organizer.team.add'),
|
url(r'^organizer/(?P<organizer>[^/]+)/team/add$', organizer.TeamCreateView.as_view(), name='organizer.team.add'),
|
||||||
url(r'^organizer/(?P<organizer>[^/]+)/team/(?P<team>[^/]+)/$', organizer.TeamMemberView.as_view(),
|
url(r'^organizer/(?P<organizer>[^/]+)/team/(?P<team>[^/]+)/$', organizer.TeamMemberView.as_view(),
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ from pretix.api.models import WebHook
|
|||||||
from pretix.base.auth import get_auth_backends
|
from pretix.base.auth import get_auth_backends
|
||||||
from pretix.base.models import (
|
from pretix.base.models import (
|
||||||
CachedFile, Device, GiftCard, OrderPayment, Organizer, Team, TeamInvite,
|
CachedFile, Device, GiftCard, OrderPayment, Organizer, Team, TeamInvite,
|
||||||
User,
|
User, LogEntry,
|
||||||
)
|
)
|
||||||
from pretix.base.models.event import Event, EventMetaProperty, EventMetaValue
|
from pretix.base.models.event import Event, EventMetaProperty, EventMetaValue
|
||||||
from pretix.base.models.giftcards import gen_giftcard_secret
|
from pretix.base.models.giftcards import gen_giftcard_secret
|
||||||
@@ -731,6 +731,31 @@ class DeviceCreateView(OrganizerDetailViewMixin, OrganizerPermissionRequiredMixi
|
|||||||
return super().form_invalid(form)
|
return super().form_invalid(form)
|
||||||
|
|
||||||
|
|
||||||
|
class DeviceLogView(OrganizerDetailViewMixin, OrganizerPermissionRequiredMixin, ListView):
|
||||||
|
template_name = 'pretixcontrol/organizers/device_logs.html'
|
||||||
|
permission = 'can_change_organizer_settings'
|
||||||
|
model = LogEntry
|
||||||
|
context_object_name = 'logs'
|
||||||
|
paginate_by = 20
|
||||||
|
|
||||||
|
@cached_property
|
||||||
|
def device(self):
|
||||||
|
return get_object_or_404(Device, organizer=self.request.organizer, pk=self.kwargs.get('device'))
|
||||||
|
|
||||||
|
def get_context_data(self, **kwargs):
|
||||||
|
ctx = super().get_context_data(**kwargs)
|
||||||
|
ctx['device'] = self.device
|
||||||
|
return ctx
|
||||||
|
|
||||||
|
def get_queryset(self):
|
||||||
|
qs = LogEntry.objects.filter(
|
||||||
|
device_id=self.device
|
||||||
|
).select_related(
|
||||||
|
'user', 'content_type', 'api_token', 'oauth_application', 'device', 'event'
|
||||||
|
).order_by('-datetime')
|
||||||
|
return qs
|
||||||
|
|
||||||
|
|
||||||
class DeviceUpdateView(OrganizerDetailViewMixin, OrganizerPermissionRequiredMixin, UpdateView):
|
class DeviceUpdateView(OrganizerDetailViewMixin, OrganizerPermissionRequiredMixin, UpdateView):
|
||||||
model = Device
|
model = Device
|
||||||
template_name = 'pretixcontrol/organizers/device_edit.html'
|
template_name = 'pretixcontrol/organizers/device_edit.html'
|
||||||
|
|||||||
Reference in New Issue
Block a user