diff --git a/src/pretix/control/templates/pretixcontrol/event/index.html b/src/pretix/control/templates/pretixcontrol/event/index.html index c77932eac3..b4239163f1 100644 --- a/src/pretix/control/templates/pretixcontrol/event/index.html +++ b/src/pretix/control/templates/pretixcontrol/event/index.html @@ -182,6 +182,12 @@
{{ log.display }} + {% if staff_session %} + + + {% trans "Inspect" %} + + {% endif %}
diff --git a/src/pretix/control/templates/pretixcontrol/event/logs.html b/src/pretix/control/templates/pretixcontrol/event/logs.html index e95ab7dc2e..39564d2262 100644 --- a/src/pretix/control/templates/pretixcontrol/event/logs.html +++ b/src/pretix/control/templates/pretixcontrol/event/logs.html @@ -31,7 +31,8 @@
  • - {{ log.datetime|date:"SHORT_DATETIME_FORMAT" }} + + {{ log.datetime|date:"SHORT_DATETIME_FORMAT" }} {% if log.shredded %}
    {{ log.display }} + {% if staff_session %} + + + {% trans "Inspect" %} + + {% endif %}
  • diff --git a/src/pretix/control/templates/pretixcontrol/includes/logs.html b/src/pretix/control/templates/pretixcontrol/includes/logs.html index 3bdffd840c..e26f393206 100644 --- a/src/pretix/control/templates/pretixcontrol/includes/logs.html +++ b/src/pretix/control/templates/pretixcontrol/includes/logs.html @@ -30,13 +30,18 @@ - {% endif %}

    {{ log.display }} + {% if staff_session %} + + + {% trans "Inspect" %} + + {% endif %}

    {% endfor %} diff --git a/src/pretix/control/urls.py b/src/pretix/control/urls.py index 4137e8fa09..dd6b052655 100644 --- a/src/pretix/control/urls.py +++ b/src/pretix/control/urls.py @@ -18,6 +18,7 @@ urlpatterns = [ url(r'^global/settings/$', global_settings.GlobalSettingsView.as_view(), name='global.settings'), url(r'^global/update/$', global_settings.UpdateCheckView.as_view(), name='global.update'), url(r'^global/message/$', global_settings.MessageView.as_view(), name='global.message'), + url(r'^logdetail/$', global_settings.LogDetailView.as_view(), name='global.logdetail'), url(r'^reauth/$', user.ReauthView.as_view(), name='user.reauth'), url(r'^sudo/$', user.StartStaffSession.as_view(), name='user.sudo'), url(r'^sudo/stop/$', user.StopStaffSession.as_view(), name='user.sudo.stop'), diff --git a/src/pretix/control/views/global_settings.py b/src/pretix/control/views/global_settings.py index 9301555182..5986c3f050 100644 --- a/src/pretix/control/views/global_settings.py +++ b/src/pretix/control/views/global_settings.py @@ -1,8 +1,11 @@ from django.contrib import messages -from django.shortcuts import redirect, reverse +from django.http import JsonResponse +from django.shortcuts import get_object_or_404, redirect, reverse from django.utils.translation import ugettext_lazy as _ +from django.views import View from django.views.generic import FormView, TemplateView +from pretix.base.models import LogEntry from pretix.base.services.update_check import check_result_table, update_check from pretix.base.settings import GlobalSettingsObject from pretix.control.forms.global_settings import ( @@ -62,3 +65,9 @@ class UpdateCheckView(StaffMemberRequiredMixin, FormView): class MessageView(TemplateView): template_name = 'pretixcontrol/global_message.html' + + +class LogDetailView(AdministratorPermissionRequiredMixin, View): + def get(self, request, *args, **kwargs): + le = get_object_or_404(LogEntry, pk=request.GET.get('pk')) + return JsonResponse({'data': le.parsed_data}) diff --git a/src/pretix/static/pretixcontrol/js/ui/main.js b/src/pretix/static/pretixcontrol/js/ui/main.js index 7d7e943520..7eb8780f2b 100644 --- a/src/pretix/static/pretixcontrol/js/ui/main.js +++ b/src/pretix/static/pretixcontrol/js/ui/main.js @@ -551,6 +551,22 @@ $(function () { } }); + $("a[data-expandlogs]").click(function (e) { + e.preventDefault(); + var $a = $(this); + var id = $(this).attr("data-id"); + $a.find(".fa").removeClass("fa-eye").addClass("fa-cog fa-spin"); + $.getJSON('/control/logdetail/?pk=' + id, function (data) { + if ($a.parent().tagName === "p") { + $("
    ").html(JSON.stringify(data.data, null, 2)).insertAfter($a.parent());
    +            } else {
    +                $("
    ").html(JSON.stringify(data.data, null, 2)).appendTo($a.parent());
    +            }
    +            $a.remove();
    +        });
    +        return false;
    +    });
    +
         $("#ajaxerr").on("click", ".ajaxerr-close", ajaxErrDialog.hide);
         moment.locale($("body").attr("data-datetimelocale"));
     });
    diff --git a/src/tests/control/test_permissions.py b/src/tests/control/test_permissions.py
    index 7e58a61ffa..ef58b98c25 100644
    --- a/src/tests/control/test_permissions.py
    +++ b/src/tests/control/test_permissions.py
    @@ -26,6 +26,7 @@ def env():
     
     superuser_urls = [
         "global/settings/",
    +    "logdetail/",
         "users/select2",
         "users/",
         "users/add",