From 32b7d4e395cd99e1f8be835f87bd1620b7d93d54 Mon Sep 17 00:00:00 2001 From: PCoder Date: Wed, 5 Jan 2022 19:43:14 +0530 Subject: [PATCH 1/4] Reduce number of requests in the persons detail view + Optimize --- app/admin.py | 6 ++++++ gmba_django/settings/base.py | 2 ++ 2 files changed, 8 insertions(+) diff --git a/app/admin.py b/app/admin.py index 34589ae..05b543c 100644 --- a/app/admin.py +++ b/app/admin.py @@ -2,14 +2,19 @@ from django.contrib import admin from django.utils.html import format_html from .models import * from django.forms import TextInput +from django.conf import settings class PeopleResourceInline(admin.TabularInline): + autocomplete_fields = ['resource'] model = PeopleResource + extra = 0 class PeopleRangeInline(admin.TabularInline): + autocomplete_fields = ['range'] model = PeopleRange + extra = 0 class PersonAdmin(admin.ModelAdmin): @@ -60,6 +65,7 @@ class PersonAdmin(admin.ModelAdmin): ) list_display = ['id', 'full_name', 'organization'] autocomplete_fields = ['organization'] + list_per_page = settings.ADMIN_LIST_PER_PAGE # list_display_links = ['id'] diff --git a/gmba_django/settings/base.py b/gmba_django/settings/base.py index 1255a0c..1342ba3 100644 --- a/gmba_django/settings/base.py +++ b/gmba_django/settings/base.py @@ -118,3 +118,5 @@ STATIC_URL = '/static/' # https://docs.djangoproject.com/en/3.2/ref/settings/#default-auto-field DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' + +ADMIN_LIST_PER_PAGE = os.getenv('ADMIN_LIST_PER_PAGE', 20) From 77f8d6da89586841c683d842e9552af4070f166b Mon Sep 17 00:00:00 2001 From: PCoder Date: Wed, 5 Jan 2022 20:51:40 +0530 Subject: [PATCH 2/4] Optimize Resource detail admin page --- app/admin.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/app/admin.py b/app/admin.py index 05b543c..514c072 100644 --- a/app/admin.py +++ b/app/admin.py @@ -70,15 +70,21 @@ class PersonAdmin(admin.ModelAdmin): class ResourceKeywordInline(admin.TabularInline): + autocomplete_fields = ['keyword'] model = ResourceKeyword + extra = 0 class ResourceRangeInline(admin.TabularInline): + autocomplete_fields = ['range_name'] model = ResourceRange + extra = 0 class ResourcePeopleInline(admin.TabularInline): + autocomplete_fields = ['person'] model = PeopleResource + extra = 0 formfield_overrides = { models.CharField: {'widget': TextInput(attrs={'size': '20'})} } @@ -122,6 +128,7 @@ class ResourceAdmin(admin.ModelAdmin): 'PEGASuS_Check_map_with_author',),) }), ) + list_per_page = settings.ADMIN_LIST_PER_PAGE class RangeNameTranslationInline(admin.TabularInline): @@ -366,10 +373,16 @@ class RangeCountryAdmin(admin.ModelAdmin): return str(obj.country.short_name) if obj.country else 'None' +class KeywordAdmin(admin.ModelAdmin): + search_fields = ['keyword'] + + # Register your models here. admin.site.register(Person, PersonAdmin) admin.site.register(Resource, ResourceAdmin) admin.site.register(MountainRange, RangeAdmin) + +admin.site.register(Keyword, KeywordAdmin) # admin.site.register(Method) # admin.site.register(Scale) # admin.site.register(Taxon) From ca20e1490ef81bc98a2cf4eb8f835ed6082695fb Mon Sep 17 00:00:00 2001 From: PCoder Date: Wed, 5 Jan 2022 21:02:12 +0530 Subject: [PATCH 3/4] Optimize MountainRange admin page load time --- app/admin.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/app/admin.py b/app/admin.py index 514c072..f14cd25 100644 --- a/app/admin.py +++ b/app/admin.py @@ -132,11 +132,15 @@ class ResourceAdmin(admin.ModelAdmin): class RangeNameTranslationInline(admin.TabularInline): + autocomplete_fields = ['language_translation'] model = RangeNameTranslation + extra = 0 class RangeCountryInline(admin.TabularInline): + autocomplete_fields = ['country'] model = RangeCountry + extra = 0 class RangeAdmin(admin.ModelAdmin): @@ -179,6 +183,7 @@ class RangeAdmin(admin.ModelAdmin): ) list_display = ['range_name', 'mother_range', 'countries'] ordering = ['range_name'] + list_per_page = settings.ADMIN_LIST_PER_PAGE class PeopleOrganizationInline(admin.TabularInline): @@ -390,9 +395,9 @@ admin.site.register(Keyword, KeywordAdmin) # LU models -# admin.site.register(Country, CountriesAdmin) +admin.site.register(Country, CountriesAdmin) # admin.site.register(GMBA_SpeciesGroup, GMBA_SpeciesGroupAdmin) -# admin.site.register(Language, LanguageAdmin) +admin.site.register(Language, LanguageAdmin) # admin.site.register(PeopleStatus, PeopleStatusAdmin) # admin.site.register(RangeType, RangeTypeAdmin) # admin.site.register(RedListCategory, RedListCategoryAdmin) From 5d5731a090403b93ae16c61239f1effd93d44a32 Mon Sep 17 00:00:00 2001 From: PCoder Date: Wed, 5 Jan 2022 21:21:35 +0530 Subject: [PATCH 4/4] Add autocomplete_fields mother_range to RangeAdmin --- app/admin.py | 1 + 1 file changed, 1 insertion(+) diff --git a/app/admin.py b/app/admin.py index f14cd25..1debd77 100644 --- a/app/admin.py +++ b/app/admin.py @@ -144,6 +144,7 @@ class RangeCountryInline(admin.TabularInline): class RangeAdmin(admin.ModelAdmin): + autocomplete_fields = ['mother_range'] inlines = [ RangeNameTranslationInline, RangeCountryInline