From a44293220652f833ac06eb3832c800cfbe8c3d2a Mon Sep 17 00:00:00 2001
From: Todd Dembrey <todd.dembrey@torchbox.com>
Date: Fri, 3 Aug 2018 09:36:54 +0100
Subject: [PATCH] Update the admin for the new form structure

---
 opentech/apply/funds/admin.py         | 18 ++++++++++--------
 opentech/apply/funds/admin_helpers.py |  6 +++---
 opentech/apply/funds/models/forms.py  |  8 ++++----
 3 files changed, 17 insertions(+), 15 deletions(-)

diff --git a/opentech/apply/funds/admin.py b/opentech/apply/funds/admin.py
index d49ce33d6..591bfcefe 100644
--- a/opentech/apply/funds/admin.py
+++ b/opentech/apply/funds/admin.py
@@ -64,22 +64,24 @@ class ApplicationFormAdmin(ModelAdmin):
     list_filter = (FormsFundRoundListFilter,)
     permission_helper_class = NoDeletePermission
 
-    related_models = ['fund', 'lab', 'round']
+    related_models = [
+        ('applicationbaseform', 'application'),
+        ('roundbaseform', 'round'),
+        ('labbaseform', 'lab'),
+    ]
 
     def get_queryset(self, request):
         qs = super().get_queryset(request)
-        related = [f'{field}form_set__{field}' for field in self.related_models]
+        related = [f'{form}_set__{field}' for form, field in self.related_models]
         return qs.prefetch_related(*related)
 
-    def _list_related(self, obj, field):
-        return ', '.join(getattr(obj, f'{field}form_set').values_list(f'{field}__title', flat=True))
+    def _list_related(self, obj, form, field):
+        return ', '.join(getattr(obj, f'{form}_set').values_list(f'{field}__title', flat=True))
 
     def used_by(self, obj):
         rows = list()
-        for model in self.related_models:
-            related = self._list_related(obj, model)
-            if related:
-                rows.append(model.title() + ': ' + related)
+        for form, field in self.related_models:
+            related = self._list_related(obj, form, field)
         return mark_safe('<br>'.join(rows))
 
 
diff --git a/opentech/apply/funds/admin_helpers.py b/opentech/apply/funds/admin_helpers.py
index f0a0002ea..75ce474fb 100644
--- a/opentech/apply/funds/admin_helpers.py
+++ b/opentech/apply/funds/admin_helpers.py
@@ -58,9 +58,9 @@ class FormsFundRoundListFilter(admin.SimpleListFilter):
 
     def lookups(self, request, model_admin):
         return (
-            ('fund', _('Funds')),
-            ('round', _('Rounds')),
-            ('lab', _('Labs')),
+            ('applicationbase', _('Funds & RFP')),
+            ('roundbase', _('Rounds and Sealed Rounds')),
+            ('labbase', _('Labs')),
         )
 
     def queryset(self, request, queryset):
diff --git a/opentech/apply/funds/models/forms.py b/opentech/apply/funds/models/forms.py
index 1c126ff67..41f6fb32b 100644
--- a/opentech/apply/funds/models/forms.py
+++ b/opentech/apply/funds/models/forms.py
@@ -58,6 +58,10 @@ class RoundBaseForm(AbstractRelatedForm):
     round = ParentalKey('RoundBase', related_name='forms')
 
 
+class LabBaseForm(AbstractRelatedForm):
+    lab = ParentalKey('LabBase', related_name='forms')
+
+
 class AbstractRelatedReviewForm(Orderable):
     form = models.ForeignKey('review.ReviewForm', on_delete=models.PROTECT)
 
@@ -86,9 +90,5 @@ class ApplicationBaseReviewForm(AbstractRelatedReviewForm):
     application = ParentalKey('ApplicationBase', related_name='review_forms')
 
 
-class LabBaseForm(AbstractRelatedForm):
-    lab = ParentalKey('LabBase', related_name='forms')
-
-
 class LabBaseReviewForm(AbstractRelatedReviewForm):
     lab = ParentalKey('LabBase', related_name='review_forms')
-- 
GitLab