From 0950f29735aeb3f74d736ec0920dd874472f06e6 Mon Sep 17 00:00:00 2001 From: "holger.trampe" Date: Fri, 8 Jan 2021 10:14:56 +0100 Subject: [PATCH] Userlog nur der eine Nutzer --- dump.rdb | Bin 39224 -> 74135 bytes users/templates/users/userlog_forbidden.html | 10 ++++++++ users/views.py | 24 +++++++++++-------- 3 files changed, 24 insertions(+), 10 deletions(-) create mode 100644 users/templates/users/userlog_forbidden.html diff --git a/dump.rdb b/dump.rdb index 1cc37bb20332f2c246523248a7dc90001cbc83c5..10f0b79ff40096202ebb6978cea800c554eceb44 100644 GIT binary patch delta 22277 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 delta 1220 zcmXYwO^DZJ5XV>7U5hN(Hp)n;P=g@xndh13d1jzXbO?GoB=mMjo@btC=-`_6wg)e^ zBpV?Z{6R0(p@U@^hHDsz^yW$HAQW}$1?nc%A(Zu{X7{(JAJ31^%zS6&JBPnr^TmnP z@3^fGZn(T-@rKu4>22#wpZR9rnW?eGb>$`9y8Go`X6nxV)!6m1D-#n}Pfwrxee~Ut z^`p5zo*CabzkPK6$X%-*8@aWQPy8_V-qp#`)GgZ>k}V`@j~@9SB|W)EXkS+ERq%K#3_pXOOz{CPs~1+9yxMpLRl|PKlUl9hLg%~cD`rHTZ#(WO|v zoV#^)Agy%Hg_E_z=xaC0+)+YxHX@C2^!mPC14+UmwFubBVUo_3L5ZNp42@Keef*zJhP!F>5L60OhZz_uf2^DMw0P%Fs*hMKo~v%babIsV8f{I7!zZdGgwcWg~~GQ}G)c20va@Jfq zp+->gp!ME!PhDCf-DWTYmB7SN?26RRB>3ops+VrMt|tG>kdnI;?ExHDLf=9yDWh}R zp_2N-H(l6!W*}X+6F`veV?=P-T*}VbHX)Y!!OlnUg+!L#%4pSZSg>7Uc%H~x3{(D$D`oOb>6 EKOP*0H2?qr diff --git a/users/templates/users/userlog_forbidden.html b/users/templates/users/userlog_forbidden.html new file mode 100644 index 0000000..8e741e4 --- /dev/null +++ b/users/templates/users/userlog_forbidden.html @@ -0,0 +1,10 @@ +{% extends "users/base.html" %} +{% load counter_tag %} +{% block content %} +
+

Anmeldelog

+Hier sehen Sie eine Auflistung Ihrer letzten 50 Anmeldevorgänge. +
+Diese Daten dürfen Sie nicht einsehen. +
+{% endblock %} \ No newline at end of file diff --git a/users/views.py b/users/views.py index 4d7b33f..fd07314 100644 --- a/users/views.py +++ b/users/views.py @@ -644,21 +644,25 @@ from auditlog.models import LogEntry @login_required def showUserLog(request, pk): - logdata = LogEntry.objects.filter(object_pk=request.user.pk)[:50] + if (request.user.pk == pk): + logdata = LogEntry.objects.filter(object_pk=request.user.pk)[:50] - logdata_logins = [] + logdata_logins = [] - for ele in logdata: + for ele in logdata: - datestring = json.loads(ele.changes)["last_login"][1] + datestring = json.loads(ele.changes)["last_login"][1] - datestring = datestring.split(".")[0] - logdata_logins.append(datetime.strptime(datestring, '%Y-%m-%d %H:%M:%S')) + datestring = datestring.split(".")[0] + logdata_logins.append(datetime.strptime(datestring, '%Y-%m-%d %H:%M:%S')) - context = { - 'logdata' : logdata_logins - } - return render(request, 'users/userlog.html', context) + context = { + 'logdata' : logdata_logins + } + return render(request, 'users/userlog.html', context) + else: + context = {} + return render(request, 'users/userlog_forbidden.html', context) @login_required def dashboard(request):