Skip to content
Snippets Groups Projects
Commit cb0d0338 authored by Todd Dembrey's avatar Todd Dembrey
Browse files

Update the display to show the data in a single column

parent b30cd8c5
No related branches found
No related tags found
No related merge requests found
from django.utils.html import mark_safe
from wagtail.contrib.modeladmin.helpers import PermissionHelper from wagtail.contrib.modeladmin.helpers import PermissionHelper
from wagtail.contrib.modeladmin.options import ModelAdmin, ModelAdminGroup from wagtail.contrib.modeladmin.options import ModelAdmin, ModelAdminGroup
...@@ -42,26 +44,27 @@ class NoDeletePermission(PermissionHelper): ...@@ -42,26 +44,27 @@ class NoDeletePermission(PermissionHelper):
class ApplicationFormAdmin(ModelAdmin): class ApplicationFormAdmin(ModelAdmin):
model = ApplicationForm model = ApplicationForm
menu_icon = 'form' menu_icon = 'form'
list_display = ('name', 'funds', 'rounds', 'labs') list_display = ('name', 'used_by')
list_filter = (FormsFundRoundListFilter,) list_filter = (FormsFundRoundListFilter,)
permission_helper_class = NoDeletePermission permission_helper_class = NoDeletePermission
related_models = ['fund', 'lab', 'round']
def get_queryset(self, request): def get_queryset(self, request):
qs = super().get_queryset(request) qs = super().get_queryset(request)
related = [f'{field}form_set__{field}' for field in ['fund', 'round', 'lab']] related = [f'{field}form_set__{field}' for field in self.related_models]
return qs.prefetch_related(*related) return qs.prefetch_related(*related)
def _list_related(self, obj, field): def _list_related(self, obj, field):
return ', '.join(getattr(obj, f'{field}form_set').values_list(f'{field}__title', flat=True)) return ', '.join(getattr(obj, f'{field}form_set').values_list(f'{field}__title', flat=True))
def funds(self, obj): def used_by(self, obj):
return self._list_related(obj, 'fund') rows = list()
for model in self.related_models:
def labs(self, obj): related = self._list_related(obj, model)
return self._list_related(obj, 'lab') if related:
rows.append(model.title() + ': ' + related)
def rounds(self, obj): return mark_safe('<br>'.join(rows))
return self._list_related(obj, 'round')
class ApplyAdminGroup(ModelAdminGroup): class ApplyAdminGroup(ModelAdminGroup):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment