From 76ef34f9bdc60d497cdb57cdc531b1da5bb6e231 Mon Sep 17 00:00:00 2001 From: Gagan Deep Date: Tue, 20 Dec 2022 19:25:08 +0530 Subject: [PATCH] Fixed overwriting changes to UserAdmin Instead of defining a new UserAdmin class to add inline forms, monkey patch existing UserAdmin. This prevents overwriting changes made to UserAdmin by other Django apps. --- microsoft_auth/admin.py | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/microsoft_auth/admin.py b/microsoft_auth/admin.py index 62ec4191..ca21c90e 100644 --- a/microsoft_auth/admin.py +++ b/microsoft_auth/admin.py @@ -1,7 +1,6 @@ from django.apps import apps from django.contrib import admin from django.contrib.auth import get_user_model -from django.contrib.auth.admin import UserAdmin as BaseUserAdmin from .conf import LOGIN_TYPE_MA, LOGIN_TYPE_XBL, config from .models import MicrosoftAccount, XboxLiveAccount @@ -27,11 +26,6 @@ extra_base = [DjangoQLSearchMixin] base_admin = extra_base + [admin.ModelAdmin] -base_user_admin = extra_base + [BaseUserAdmin] - -# unregister User mode if it is already registered -if admin.site.is_registered(User): # pragma: no branch - admin.site.unregister(User) class MicrosoftAccountAdmin(*base_admin): @@ -81,14 +75,11 @@ def _get_inlines(): return inlines -@admin.register(User) -class UserAdmin(*base_user_admin): - @property - def inlines(self): - """Adds MicrosoftAccount and/or XboxLiveAccount foreign keys to - User model""" - - return _get_inlines() +try: + UserAdmin = admin.site._registry[User] +except KeyError: + from django.contrib.auth.admin import UserAdmin +UserAdmin.inlines.extend(_get_inlines()) _register_admins()