diff --git a/jdav_web/members/admin.py b/jdav_web/members/admin.py index b417ffc..2bfbe9d 100644 --- a/jdav_web/members/admin.py +++ b/jdav_web/members/admin.py @@ -802,40 +802,38 @@ class GroupAdmin(CommonAdminMixin, admin.ModelAdmin): list_display = ('name', 'year_from', 'year_to') inlines = [RegistrationPasswordInline, PermissionOnGroupInline] search_fields = ('name',) - + def get_urls(self): urls = super().get_urls() - + def wrap(view): def wrapper(*args, **kwargs): return self.admin_site.admin_view(view)(*args, **kwargs) wrapper.model_admin = self return update_wrapper(wrapper, view) - + custom_urls = [ path('action/', self.action_view, name='members_group_action'), ] return custom_urls + urls - + def action_view(self, request): if "group_overview" in request.POST: return self.group_overview(request) def group_overview(self, request): - + if not request.user.has_perm('members.view_group'): messages.error(request, _("You are not allowed to create a group overview.")) return HttpResponseRedirect(reverse('admin:%s_%s_changelist' % (self.opts.app_label, self.opts.model_name))) - + ensure_media_dir() filename = generate_group_overview(all_groups=self.model.objects.all()) response = serve_media(filename=filename, content_type='application/xlsx') return response - - class ActivityCategoryAdmin(admin.ModelAdmin): diff --git a/jdav_web/members/excel.py b/jdav_web/members/excel.py index 22d4b3f..6fa8ff7 100644 --- a/jdav_web/members/excel.py +++ b/jdav_web/members/excel.py @@ -7,11 +7,11 @@ from .models import WEEKDAYS def generate_group_overview(all_groups, limit_to_public = True): """ - Creates an Excel Sheet with an overview of all the groups, their dates, times, age range and + Creates an Excel Sheet with an overview of all the groups, their dates, times, age range and number of members, etc. - + arguments: - limit_to_public (optional, default is True): If False, all groups are returned in the overview, + limit_to_public (optional, default is True): If False, all groups are returned in the overview, including technical ones. If True, only groups with the flag "show_on_website" are returned. """ @@ -23,7 +23,7 @@ def generate_group_overview(all_groups, limit_to_public = True): title = workbook.add_format({'bold': True, 'font_size': 16, 'align': 'center'}) right = workbook.add_format({'bold': True, 'align': 'right'}) worksheet = workbook.add_worksheet() - + worksheet.merge_range(0, 0, 0, 6, f"Gruppenübersicht JDAV {settings.SEKTION}", title) row = 1 worksheet.write(row, 0, "Gruppe", bold) @@ -46,7 +46,7 @@ def generate_group_overview(all_groups, limit_to_public = True): tn_count = group.member_set.count() - yl_count members = f"JG {group.year_from} - {group.year_to}" leaders = f"{', '.join([yl.name for yl in group.leiters.all()])}" - + worksheet.write(row, 0, group.name, default) worksheet.write(row, 1, wd, default) worksheet.write(row, 2, times, default) @@ -54,7 +54,7 @@ def generate_group_overview(all_groups, limit_to_public = True): worksheet.write(row, 4, tn_count, default) worksheet.write(row, 5, yl_count, default) worksheet.write(row, 6, leaders, default) - + worksheet.write(row+2, 6, f"Stand: {today}", right) # set column width worksheet.set_column_pixels(0, 0, 100)