From 69e7bd4a0a74a478fef78edb5dfa4023544dcc00 Mon Sep 17 00:00:00 2001 From: Tim Hawes Date: Sat, 15 Jun 2024 01:12:36 +0100 Subject: [PATCH] groupadmin: option to advertise group and ownership --- .../0003_groupproperties_advertise_owners.py | 18 ++++++++++++++++++ groupadmin/models.py | 1 + groupadmin/views.py | 9 +++++++++ hackdb/templates/groupadmin/groups.html | 14 ++++++++++++-- 4 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 groupadmin/migrations/0003_groupproperties_advertise_owners.py diff --git a/groupadmin/migrations/0003_groupproperties_advertise_owners.py b/groupadmin/migrations/0003_groupproperties_advertise_owners.py new file mode 100644 index 0000000..7b83721 --- /dev/null +++ b/groupadmin/migrations/0003_groupproperties_advertise_owners.py @@ -0,0 +1,18 @@ +# Generated by Django 4.0.4 on 2024-06-13 21:34 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("groupadmin", "0002_groupproperties_owners_manage_owners"), + ] + + operations = [ + migrations.AddField( + model_name="groupproperties", + name="advertise_owners", + field=models.BooleanField(default=False), + ), + ] diff --git a/groupadmin/models.py b/groupadmin/models.py index 9c9b67d..53dc52e 100644 --- a/groupadmin/models.py +++ b/groupadmin/models.py @@ -26,6 +26,7 @@ class GroupProperties(models.Model): ) description = models.CharField(max_length=255, blank=True, null=True) self_service = models.BooleanField(default=False) + advertise_owners = models.BooleanField(default=False) owners_manage_owners = models.BooleanField(default=False) def __str__(self): diff --git a/groupadmin/views.py b/groupadmin/views.py index 02cdb60..6de713b 100644 --- a/groupadmin/views.py +++ b/groupadmin/views.py @@ -34,6 +34,15 @@ def groupadmin_list(request): if group.name not in groups: groups[group.name] = {"object": group} + # groups that are configured to advertise owners + for group in Group.objects.filter(properties__advertise_owners=True): + if group.name not in groups: + groups[group.name] = {"object": group} + if group.owners.count() > 0: + groups[group.name]["owners_text"] = ", ".join( + sorted(owner.user.get_full_name() for owner in group.owners.all()) + ) + context = {"groups": [groups[name] for name in sorted(groups.keys())]} return render(request, "groupadmin/groups.html", context) diff --git a/hackdb/templates/groupadmin/groups.html b/hackdb/templates/groupadmin/groups.html index b55b56f..dbd1b6a 100644 --- a/hackdb/templates/groupadmin/groups.html +++ b/hackdb/templates/groupadmin/groups.html @@ -19,11 +19,16 @@

Groups

{% for group in groups %} {{ group.object.name }} - {{ group.object.properties.description }} + + {{ group.object.properties.description }} + {% if group.owners_text %} + + {% endif %} + {% if group.member %}{% endif %} {% if group.owner %} - admin + admin {% endif %} {% if group.object.properties.self_service %} {% if group.member %} @@ -45,4 +50,9 @@

Groups

+ + {% endblock %}