Skip to content

Commit 69e7bd4

Browse files
committed
groupadmin: option to advertise group and ownership
1 parent 4a6dcd8 commit 69e7bd4

File tree

4 files changed

+40
-2
lines changed

4 files changed

+40
-2
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Generated by Django 4.0.4 on 2024-06-13 21:34
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
("groupadmin", "0002_groupproperties_owners_manage_owners"),
10+
]
11+
12+
operations = [
13+
migrations.AddField(
14+
model_name="groupproperties",
15+
name="advertise_owners",
16+
field=models.BooleanField(default=False),
17+
),
18+
]

groupadmin/models.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ class GroupProperties(models.Model):
2626
)
2727
description = models.CharField(max_length=255, blank=True, null=True)
2828
self_service = models.BooleanField(default=False)
29+
advertise_owners = models.BooleanField(default=False)
2930
owners_manage_owners = models.BooleanField(default=False)
3031

3132
def __str__(self):

groupadmin/views.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,15 @@ def groupadmin_list(request):
3434
if group.name not in groups:
3535
groups[group.name] = {"object": group}
3636

37+
# groups that are configured to advertise owners
38+
for group in Group.objects.filter(properties__advertise_owners=True):
39+
if group.name not in groups:
40+
groups[group.name] = {"object": group}
41+
if group.owners.count() > 0:
42+
groups[group.name]["owners_text"] = ", ".join(
43+
sorted(owner.user.get_full_name() for owner in group.owners.all())
44+
)
45+
3746
context = {"groups": [groups[name] for name in sorted(groups.keys())]}
3847
return render(request, "groupadmin/groups.html", context)
3948

hackdb/templates/groupadmin/groups.html

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,16 @@ <h1>Groups</h1>
1919
{% for group in groups %}
2020
<tr>
2121
<td>{{ group.object.name }}</td>
22-
<td>{{ group.object.properties.description }}</td>
22+
<td>
23+
{{ group.object.properties.description }}
24+
{% if group.owners_text %}
25+
<i class="bi bi-info-circle" style="color:blue" data-bs-toggle="tooltip" data-bs-title="Managed by {{ group.owners_text }}"></i>
26+
{% endif %}
27+
</td>
2328
<td>{% if group.member %}<i class="bi-check-lg" data-bs-toggle="tooltip" title="You are a member of this group."></i>{% endif %}</td>
2429
<td>
2530
{% if group.owner %}
26-
<a href="{% url 'groupadmin_view' group.object.name %}" class="btn btn-sm btn-light" data-bs-toggle="tooltip" title="You are an owner of this group.">admin</a>
31+
<a href="{% url 'groupadmin_view' group.object.name %}" class="btn btn-sm btn-light" data-bs-toggle="tooltip" title="Manage this group.">admin</a>
2732
{% endif %}
2833
{% if group.object.properties.self_service %}
2934
{% if group.member %}
@@ -45,4 +50,9 @@ <h1>Groups</h1>
4550
</table>
4651
</div>
4752

53+
<script type="module">
54+
const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]')
55+
const tooltipList = [...tooltipTriggerList].map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl))
56+
</script>
57+
4858
{% endblock %}

0 commit comments

Comments
 (0)