diff --git a/api/config/urls.py b/api/config/urls.py index ba3b630d991828aa1be65c5eb524b560ee6a47bf..99fc32f1fce09e6a3b8c227e530102ba0e9abd17 100644 --- a/api/config/urls.py +++ b/api/config/urls.py @@ -5,7 +5,7 @@ from django.conf import settings from django.conf.urls import url from django.urls import include, path from django.conf.urls.static import static -from django.contrib import admin +from funkwhale_api.common import admin from django.views import defaults as default_views diff --git a/api/funkwhale_api/common/admin.py b/api/funkwhale_api/common/admin.py new file mode 100644 index 0000000000000000000000000000000000000000..4124a69b895fbdc5fe51e44d53b99810ac113a7d --- /dev/null +++ b/api/funkwhale_api/common/admin.py @@ -0,0 +1,19 @@ +from django.contrib.admin import register as initial_register, site, ModelAdmin # noqa +from django.db.models.fields.related import RelatedField + + +def register(model): + """ + To make the admin more performant, we ensure all the the relations + are listed under raw_id_fields + """ + + def decorator(modeladmin): + raw_id_fields = [] + for field in model._meta.fields: + if isinstance(field, RelatedField): + raw_id_fields.append(field.name) + setattr(modeladmin, "raw_id_fields", raw_id_fields) + return initial_register(model)(modeladmin) + + return decorator diff --git a/api/funkwhale_api/favorites/admin.py b/api/funkwhale_api/favorites/admin.py index f56980e8cc9b368fe2c6702588f23ca50f457e6d..05530b0c67dd0a9c42808ff2e24d721b32f911cf 100644 --- a/api/funkwhale_api/favorites/admin.py +++ b/api/funkwhale_api/favorites/admin.py @@ -1,4 +1,4 @@ -from django.contrib import admin +from funkwhale_api.common import admin from . import models diff --git a/api/funkwhale_api/federation/admin.py b/api/funkwhale_api/federation/admin.py index 7be8ac89ccff5f3a7cdbac444400b09187c3e315..98bc65247c9125d6548016ec540e2b1231a1fad2 100644 --- a/api/funkwhale_api/federation/admin.py +++ b/api/funkwhale_api/federation/admin.py @@ -1,4 +1,4 @@ -from django.contrib import admin +from funkwhale_api.common import admin from . import models from . import tasks diff --git a/api/funkwhale_api/history/admin.py b/api/funkwhale_api/history/admin.py index cbc7f89dd45e5cf57e082790acbf40b570d5f93b..6aac94d0a4ef35abe6d673ba415b3e07c2840219 100644 --- a/api/funkwhale_api/history/admin.py +++ b/api/funkwhale_api/history/admin.py @@ -1,4 +1,4 @@ -from django.contrib import admin +from funkwhale_api.common import admin from . import models diff --git a/api/funkwhale_api/music/admin.py b/api/funkwhale_api/music/admin.py index 0cb4641808b0bcb4a1fc1106b73118e302890684..8f9768857bbae298eb5587e526cc99a7c9f6e02d 100644 --- a/api/funkwhale_api/music/admin.py +++ b/api/funkwhale_api/music/admin.py @@ -1,4 +1,4 @@ -from django.contrib import admin +from funkwhale_api.common import admin from . import models diff --git a/api/funkwhale_api/playlists/admin.py b/api/funkwhale_api/playlists/admin.py index 98ced232ee2f24c79db58529ace1539fa7fbb3de..0565352707690d6b955ddc5d4f9ea73ec1e543a6 100644 --- a/api/funkwhale_api/playlists/admin.py +++ b/api/funkwhale_api/playlists/admin.py @@ -1,4 +1,4 @@ -from django.contrib import admin +from funkwhale_api.common import admin from . import models diff --git a/api/funkwhale_api/radios/admin.py b/api/funkwhale_api/radios/admin.py index 187950aeb2a011b7f332d493b97ba20622468efc..0cfd5d9250d0d417760e878324a1531fbac7f990 100644 --- a/api/funkwhale_api/radios/admin.py +++ b/api/funkwhale_api/radios/admin.py @@ -1,4 +1,4 @@ -from django.contrib import admin +from funkwhale_api.common import admin from . import models diff --git a/api/funkwhale_api/users/admin.py b/api/funkwhale_api/users/admin.py index 365db615efe10518cc207dbd05fd657065a64b85..f7ee90c7e50a5f700e002eb062fbcc06ee9795f9 100644 --- a/api/funkwhale_api/users/admin.py +++ b/api/funkwhale_api/users/admin.py @@ -2,7 +2,7 @@ from __future__ import absolute_import, unicode_literals from django import forms -from django.contrib import admin +from funkwhale_api.common import admin from django.contrib.auth.admin import UserAdmin as AuthUserAdmin from django.contrib.auth.forms import UserChangeForm, UserCreationForm from django.utils.translation import ugettext_lazy as _