From c9680d75c972488ac2af8e507d49d3a0d7402cd9 Mon Sep 17 00:00:00 2001
From: Thomas Merkel <drscream@frubar.net>
Date: Mon, 3 Jul 2023 10:39:43 +0200
Subject: [PATCH] Sub-Assemblies details (people count and managers)

Show people_count of each sub-assembly including manager username and
e-mail address (if configured correctly).

Signed-off-by: Thomas Merkel <drscream@frubar.net>
---
 .../backoffice/assembly_editchildren.html     | 47 +++++++++++++++----
 src/backoffice/views/assemblies.py            |  6 +++
 2 files changed, 44 insertions(+), 9 deletions(-)

diff --git a/src/backoffice/templates/backoffice/assembly_editchildren.html b/src/backoffice/templates/backoffice/assembly_editchildren.html
index ac8f2c29d..d75197faf 100644
--- a/src/backoffice/templates/backoffice/assembly_editchildren.html
+++ b/src/backoffice/templates/backoffice/assembly_editchildren.html
@@ -42,26 +42,55 @@
         {% trans 'assemblyedit_children' %}
       </div>
       <div class="card-body">
-        {% with children=assembly.children.all %}
         {% if children|length > 0 %}
-        <ul>
+        <table class="table table-hover">
+          <thead>
+            <tr>
+              <th>{% trans 'assembly_name' %}</th>
+              <th>{% trans 'people_count' %} </th>
+              <th>{% trans 'manager' %}</th>
+              <th> </th>
+            </tr>
+          </thead>
+          <tbody>
           {% for child in children %}
-            <li>
-              <a href="{% url 'backoffice:assembly' pk=child.id %}">{{ child.name }}</a>
+            <tr>
+              <td>
+                <a href="{% url 'backoffice:assembly' pk=child.assembly.id %}">{{ child.assembly.name }}</a>
+              </td>
+              <td>
+                {% if child.assembly.registration_data.people %}
+                  {{ child.assembly.registration_data.people }}
+                {% else %}
+                -
+                {% endif %}
+              </td>
+              <td>
+                {% for manager in child.managers %}
+                  {% if manager.member.get_verified_mail_addresses|length %}
+                    <a href="#mail-{{ manager.member.pk }}" id="user-{{ manager.member.pk }}" class="badge badge-primary" data-toggle="collapse">{{ manager.member }}</a>
+                    <div class="collapse" id="mail-{{ manager.member.pk }}"><span class="badge badge-pill badge-light">{{ manager.member.get_verified_mail_addresses.0 }}</span></div>
+                  {% else %}
+                    <span class="badge badge-secondary">{{ manager.member }}</span>
+                  {% endif %}
+                {% endfor %}
+              </td>
+              <td>
               <form action="{% url 'backoffice:assembly-editchildren' pk=assembly.id %}" method="POST" style="display: inline;">{% csrf_token %}
                 <input type="hidden" name="delete" value="{{ child.pk }}">
-                <button type="submit" class="btn btn-sm btn-secondary">{% trans 'delete' %}</button>
+                <button type="submit" class="btn btn-sm btn-danger">{% trans 'delete' %}</button>
               </form>
-            </li>
+              </td>
+            </tr>
           {% endfor %}
-        </ul>
+          </tbody>
+        </table>
         {% else %}
         {% trans 'no_entries' %}
         {% endif %}
-        {% endwith %}
       </div>
     </div>
   </div>
 </div>
 
-{% endblock %}
\ No newline at end of file
+{% endblock %}
diff --git a/src/backoffice/views/assemblies.py b/src/backoffice/views/assemblies.py
index 01399aada..ba807fd30 100644
--- a/src/backoffice/views/assemblies.py
+++ b/src/backoffice/views/assemblies.py
@@ -363,8 +363,14 @@ class AssemblyEditChildrenView(AssemblyMixin, View):
             exclude(state_assembly__in=[Assembly.State.NONE, Assembly.State.REJECTED, Assembly.State.HIDDEN, Assembly.State.PLANNED])
         candidates = list(candidates_qs.order_by('name'))
 
+        children = []
+        for assembly in Assembly.objects.filter(parent=self.assembly.pk):
+            managers = assembly.members.filter(can_manage_assembly=True)
+            children.append({'assembly': assembly, 'managers': managers})
+
         context = self.get_context_data()
         context['candidates'] = candidates
+        context['children'] = children
         return render(self.request, 'backoffice/assembly_editchildren.html', context)
 
 
-- 
GitLab