From a0e5007958f5176e60a715a47fb92f4f302338ce Mon Sep 17 00:00:00 2001 From: Klaus-Uwe Mitterer Date: Sat, 2 Feb 2019 10:03:33 +0000 Subject: [PATCH] Implement organization selection in user management --- manager/signals.py | 2 +- manager/templatetags/manager.py | 13 ++++++++++--- manager/views.py | 6 ++++++ templates/manager/edituser.html | 12 ++++++++++++ templates/manager/index.html | 2 +- 5 files changed, 30 insertions(+), 5 deletions(-) diff --git a/manager/signals.py b/manager/signals.py index 29985e0..5146afa 100644 --- a/manager/signals.py +++ b/manager/signals.py @@ -62,7 +62,7 @@ def sigSuperUser(target, source, newstatus): sigUser(target, source, UserLog.SUPERUSER, str(not newstatus), str(newstatus)) def sigOrgaUser(target, source, oldorga, neworga): - sigUser(target, source, UserLog.ORGA, oldorga, neworga) + sigUser(target, source, UserLog.ORGA, ", ".join(str(x) for x in oldorga), ", ".join(str(x) for x in neworga)) # WiFi Signals diff --git a/manager/templatetags/manager.py b/manager/templatetags/manager.py index edbcd10..e3607bc 100644 --- a/manager/templatetags/manager.py +++ b/manager/templatetags/manager.py @@ -4,11 +4,18 @@ from django.contrib.auth.models import User register = template.Library() +def abcSort(inlist): + return sorted(inlist, key=lambda x: str(x)) + +@register.simple_tag +def allOrgas(): + return abcSort(Organization.objects.all()) + def orgaObjects(cls, orga): - return sorted(set(cls.objects.filter(organization__in=orga)), key=lambda x: str(x)) + return abcSort(set(cls.objects.filter(organization__in=orga))) def directUserOrgas(user): - return sorted(user.organization_set.all(), key=lambda x: str(x)) + return abcSort(user.organization_set.all()) @register.simple_tag def directOrgaString(user): @@ -32,5 +39,5 @@ def userWifis(context): @register.simple_tag(takes_context=True) def userUsers(context): - return orgaObjects(User, userOrgas(context)) if context.request.user.is_staff else [] + return orgaObjects(User, userOrgas(context)) diff --git a/manager/views.py b/manager/views.py index 80d94ea..83a24ff 100644 --- a/manager/views.py +++ b/manager/views.py @@ -291,6 +291,12 @@ def edituser(request, user_id): sigSuperUser(user[0].username, request.user.username, newsuper) user[0].is_superuser = newsuper + neworgas = set(request.POST.getlist("orga", [])) + oldorgas = set(user[0].organization_set.all()) + if neworgas != oldorgas: + sigOrgaUser(user[0].username, request.user.username, oldorgas, neworgas) + user[0].organization_set.set(neworgas) + newmail = request.POST.get("email", "") if newmail != user[0].email: sigMailUser(user[0].username, request.user.username, user[0].email, newmail) diff --git a/templates/manager/edituser.html b/templates/manager/edituser.html index 983a046..122a9b6 100644 --- a/templates/manager/edituser.html +++ b/templates/manager/edituser.html @@ -1,4 +1,5 @@ {% extends "base.html" %} +{% load manager %} {% block content %} @@ -20,6 +21,17 @@ + {% if user.is_superuser %} +
+ + +
+ {% endif %} {% if user.is_staff %}
diff --git a/templates/manager/index.html b/templates/manager/index.html index 11cc902..63ae4c6 100644 --- a/templates/manager/index.html +++ b/templates/manager/index.html @@ -84,7 +84,7 @@ {% userUsers as users %} {% for auser in users %} -
{% if auser.is_staff %}{% endif %}{{ auser.username }}{% if auser.is_staff %}{% endif %}
+
{% if auser.is_staff %}{% endif %}{{ auser.username }}{% if auser.is_staff %}{% endif %}
{% if auser.is_staff %}{% endif %}{{ auser.first_name }} {{ auser.last_name }}{% if auser.is_staff %}{% endif %} {{ auser.userstatus.last_action }} {% if auser.email %}{% endif %}