From 17c00df0a85b0c80e23b841e4860feb76e1b3f8c Mon Sep 17 00:00:00 2001
From: "J.-S. Caux" <J.S.Caux@uva.nl>
Date: Wed, 10 Jun 2020 21:05:09 +0200
Subject: [PATCH] Accelerate admin, up to and including journals app

---
 funders/admin.py     | 15 ++++++++++++++-
 helpdesk/admin.py    |  8 ++++++++
 invitations/admin.py | 14 ++++++++++++--
 journals/admin.py    | 46 +++++++++++++++++++++++++++++++++-----------
 ontology/admin.py    |  4 +++-
 5 files changed, 72 insertions(+), 15 deletions(-)

diff --git a/funders/admin.py b/funders/admin.py
index 7914c2dba..137801194 100644
--- a/funders/admin.py
+++ b/funders/admin.py
@@ -10,4 +10,17 @@ from .models import Funder, Grant
 admin.site.register(Funder)
 
 
-admin.site.register(Grant)
+
+class GrantAdmin(admin.ModelAdmin):
+    search_fields = [
+        'funder__name',
+        'number',
+        'recipient_name',
+        'recipiend__user__last_name',
+    ]
+    autocomplete_fields = [
+        'funder',
+        'recipient',
+    ]
+
+admin.site.register(Grant, GrantAdmin)
diff --git a/helpdesk/admin.py b/helpdesk/admin.py
index 91c33beb1..fbd4593ab 100644
--- a/helpdesk/admin.py
+++ b/helpdesk/admin.py
@@ -19,9 +19,17 @@ admin.site.register(Queue, QueueAdmin)
 class FollowupInline(admin.TabularInline):
     model = Followup
     extra = 0
+    autocomplete_fields = [
+        'by',
+    ]
+
 
 class TicketAdmin(admin.ModelAdmin):
     search_fields = ['description', 'defined_by']
     inlines = [FollowupInline]
+    autocomplete_fields = [
+        'defined_by',
+        'assigned_to',
+    ]
 
 admin.site.register(Ticket, TicketAdmin)
diff --git a/invitations/admin.py b/invitations/admin.py
index ea1a25bb4..d1ca4607e 100644
--- a/invitations/admin.py
+++ b/invitations/admin.py
@@ -12,7 +12,11 @@ class RegistrationInvitationAdmin(admin.ModelAdmin):
     search_fields = ['first_name', 'last_name', 'email', 'invitation_key']
     list_display = ['__str__', 'invitation_type', 'invited_by', 'status']
     list_filter = ['invitation_type', 'message_style', 'status']
-
+    autocomplete_fields = [
+        'profile',
+        'invited_by',
+        'created_by',
+    ]
 
 admin.site.register(RegistrationInvitation, RegistrationInvitationAdmin)
 
@@ -23,6 +27,12 @@ class CitationNotificationAdmin(admin.ModelAdmin):
                      'contributor__user__first_name', 'contributor__user__last_name']
     list_display = ['__str__', 'created_by', 'date_sent', 'processed']
     list_filter = ['processed']
-
+    autocomplete_fields = [
+        'invitation',
+        'contributor',
+        'submission',
+        'publication',
+        'created_by',
+    ]
 
 admin.site.register(CitationNotification, CitationNotificationAdmin)
diff --git a/journals/admin.py b/journals/admin.py
index d89cbecce..6451142b7 100644
--- a/journals/admin.py
+++ b/journals/admin.py
@@ -36,14 +36,14 @@ admin.site.register(Issue, IssueAdmin)
 
 
 class PublicationAdminForm(forms.ModelForm):
-    accepted_submission = forms.ModelChoiceField(
-        queryset=Submission.objects.order_by('-preprint__identifier_w_vn_nr'))
-    authors_claims = forms.ModelMultipleChoiceField(
-        required=False,
-        queryset=Contributor.objects.order_by('user__last_name'))
-    authors_false_claims = forms.ModelMultipleChoiceField(
-        required=False,
-        queryset=Contributor.objects.order_by('user__last_name'))
+    # accepted_submission = forms.ModelChoiceField(
+    #     queryset=Submission.objects.order_by('-preprint__identifier_w_vn_nr'))
+    # authors_claims = forms.ModelMultipleChoiceField(
+    #     required=False,
+    #     queryset=Contributor.objects.order_by('user__last_name'))
+    # authors_false_claims = forms.ModelMultipleChoiceField(
+    #     required=False,
+    #     queryset=Contributor.objects.order_by('user__last_name'))
 
     class Meta:
         model = Publication
@@ -58,11 +58,18 @@ class ReferenceInline(admin.TabularInline):
 class AuthorsInline(admin.TabularInline):
     model = PublicationAuthorsTable
     extra = 0
+    autocomplete_fields = [
+        'profile',
+        'affiliations',
+    ]
 
 
 class OrgPubFractionInline(admin.TabularInline):
     model = OrgPubFraction
     list_display = ('organization', 'publication', 'fraction')
+    autocomplete_fields = [
+        'organization',
+    ]
 
 
 class PublicationAdmin(admin.ModelAdmin):
@@ -72,7 +79,14 @@ class PublicationAdmin(admin.ModelAdmin):
     list_filter = ['in_issue']
     inlines = [AuthorsInline, ReferenceInline, OrgPubFractionInline]
     form = PublicationAdminForm
-
+    autocomplete_fields = [
+        'accepted_submission',
+        'authors_claims',
+        'authors_false_claims',
+        'grants',
+        'funders_generic',
+        'topics',
+    ]
 
 admin.site.register(Publication, PublicationAdmin)
 
@@ -113,10 +127,20 @@ class DepositAdmin(admin.ModelAdmin):
 admin.site.register(Deposit, DepositAdmin)
 
 
-admin.site.register(DOAJDeposit)
+class DOAJDepositAdmin(admin.ModelAdmin):
+    autocomplete_fields = [
+        'publication',
+    ]
+
+admin.site.register(DOAJDeposit, DOAJDepositAdmin)
 
 
 admin.site.register(GenericDOIDeposit)
 
 
-admin.site.register(PublicationUpdate)
+class PublicationUpdateAdmin(admin.ModelAdmin):
+    autocomplete_fields = [
+        'publication',
+    ]
+
+admin.site.register(PublicationUpdate, PublicationUpdateAdmin)
diff --git a/ontology/admin.py b/ontology/admin.py
index 9a68bf929..7f1206090 100644
--- a/ontology/admin.py
+++ b/ontology/admin.py
@@ -14,7 +14,9 @@ admin.site.register(Tag, TagAdmin)
 
 
 class TopicAdmin(admin.ModelAdmin):
-    pass
+    search_fields = [
+        'name'
+    ]
 
 admin.site.register(Topic, TopicAdmin)
 
-- 
GitLab