added counter to freizeit member page

pull/119/head
mariusrklein 11 months ago
parent edf343710d
commit e5ff6cdfbd

@ -920,6 +920,31 @@ class MemberOnListInline(CommonAdminInlineMixin, GenericTabularInline):
TextField: {'widget': Textarea(attrs={'rows': 1, 'cols': 40})}
}
sortable_options = []
template = "admin/edit_inline/tabular_footer.html"
def people_count(self, obj):
if isinstance(obj, Freizeit):
# Number of organizers who are also in the Memberlist
organizer_count = len(obj.staff_on_memberlist)
# Total number of people in the Memberlist
total_people = obj.participant_count + organizer_count
else: # fallback if no activity was found
total_people = 0
organizer_count = 0
return dict(total_people=total_people, organizer_count=organizer_count)
def get_formset(self, request, obj=None, **kwargs):
"""Override get_formset to add extra context."""
formset = super().get_formset(request, obj, **kwargs)
if obj: # Ensure there is an Activity instance
formset.total_people = self.people_count(obj)['total_people']
formset.organizer_count = self.people_count(obj)['organizer_count']
return formset
class MemberNoteListAdmin(admin.ModelAdmin):

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-01-19 19:16+0100\n"
"POT-Creation-Date: 2025-02-01 02:24+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -1062,6 +1062,14 @@ msgstr "Zurück auf die Warteliste setzen"
msgid "Cancel"
msgstr "Abbrechen"
#: members/templates/admin/edit_inline/tabular_footer.html
msgid "Number of persons:"
msgstr "Anzahl Personen:"
#: members/templates/admin/edit_inline/tabular_footer.html
msgid "thereof leaders:"
msgstr "davon Leitung:"
#: members/templates/admin/freizeit_finance_overview.html
msgid ""
"\n"

@ -1139,6 +1139,12 @@ class Freizeit(CommonModel):
@property
def staff_count(self):
return self.jugendleiter.count()
@property
def staff_on_memberlist(self):
ps = set(map(lambda x: x.member, self.membersonlist.distinct()))
jls = set(self.jugendleiter.distinct())
return ps.intersection(jls)
@property
def participant_count(self):

@ -0,0 +1,10 @@
{% extends "admin/edit_inline/tabular.html" %}
{% load i18n admin_urls static %}
{% block extra_footer_content %}
<tfoot><tr class="inline-summary">
<td colspan="99" style="text-align: right; font-weight: bold;">
{% trans "Number of persons:" %} {{ inline_admin_formset.formset.total_people }}, {% trans "thereof leaders:" %} {{ inline_admin_formset.formset.organizer_count }}
</td>
</tr>
</tfoot>
{% endblock %}

@ -71,6 +71,7 @@
</tr>
{% endfor %}
</tbody>
{% block extra_footer_content %}{% endblock %}
</table>
{% if inline_admin_formset.is_collapsible %}</details>{% endif %}
</fieldset>

Loading…
Cancel
Save