Skip to content

Commit

Permalink
groupadmin: option to advertise group and ownership
Browse files Browse the repository at this point in the history
  • Loading branch information
timhawes committed Jun 15, 2024
1 parent 4a6dcd8 commit 69e7bd4
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 2 deletions.
18 changes: 18 additions & 0 deletions groupadmin/migrations/0003_groupproperties_advertise_owners.py
Original file line number Diff line number Diff line change
@@ -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),
),
]
1 change: 1 addition & 0 deletions groupadmin/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand Down
9 changes: 9 additions & 0 deletions groupadmin/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down
14 changes: 12 additions & 2 deletions hackdb/templates/groupadmin/groups.html
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,16 @@ <h1>Groups</h1>
{% for group in groups %}
<tr>
<td>{{ group.object.name }}</td>
<td>{{ group.object.properties.description }}</td>
<td>
{{ group.object.properties.description }}
{% if group.owners_text %}
<i class="bi bi-info-circle" style="color:blue" data-bs-toggle="tooltip" data-bs-title="Managed by {{ group.owners_text }}"></i>
{% endif %}
</td>
<td>{% if group.member %}<i class="bi-check-lg" data-bs-toggle="tooltip" title="You are a member of this group."></i>{% endif %}</td>
<td>
{% if group.owner %}
<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>
<a href="{% url 'groupadmin_view' group.object.name %}" class="btn btn-sm btn-light" data-bs-toggle="tooltip" title="Manage this group.">admin</a>
{% endif %}
{% if group.object.properties.self_service %}
{% if group.member %}
Expand All @@ -45,4 +50,9 @@ <h1>Groups</h1>
</table>
</div>

<script type="module">
const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]')
const tooltipList = [...tooltipTriggerList].map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl))
</script>

{% endblock %}

0 comments on commit 69e7bd4

Please sign in to comment.