Bläddra i källkod

16136 remove Django Admin (#17619)

* 16136 remove Django Admin

* 16136 fix plugin test

* 16136 fix migrations

* Revert "16136 fix migrations"

This reverts commit 80296fa1ecc294e4df8d11d11ea6dc10921517b0.

* Remove obsolete admin module from dummy plugin

* Remove obsolete admin site configuration

* Remove unused import statement

* Remove obsolete admin module

* Misc cleanup

---------

Co-authored-by: Jeremy Stretch <jstretch@netboxlabs.com>
Arthur Hanson 1 år sedan
förälder
incheckning
c60a0f4f56

+ 0 - 8
docs/configuration/miscellaneous.md

@@ -96,14 +96,6 @@ The maximum size (in bytes) of an incoming HTTP request (i.e. `GET` or `POST` da
 
 ---
 
-## DJANGO_ADMIN_ENABLED
-
-Default: False
-
-Setting this to True installs the `django.contrib.admin` app and enables the [Django admin UI](https://docs.djangoproject.com/en/5.0/ref/contrib/admin/). This may be necessary to support older plugins which do not integrate with the native NetBox interface.
-
----
-
 ## ENFORCE_GLOBAL_UNIQUE
 
 !!! tip "Dynamic Configuration Parameter"

+ 0 - 14
netbox/netbox/admin.py

@@ -1,14 +0,0 @@
-from django.conf import settings
-from django.contrib.admin import site as admin_site
-from taggit.models import Tag
-
-
-# Override default AdminSite attributes so we can avoid creating and
-# registering our own class
-admin_site.site_header = 'NetBox Administration'
-admin_site.site_title = 'NetBox'
-admin_site.site_url = '/{}'.format(settings.BASE_PATH)
-admin_site.index_template = 'admin/index.html'
-
-# Unregister the unused stock Tag model provided by django-taggit
-admin_site.unregister(Tag)

+ 0 - 2
netbox/netbox/configuration_testing.py

@@ -39,8 +39,6 @@ REDIS = {
 
 SECRET_KEY = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
 
-DJANGO_ADMIN_ENABLED = True
-
 DEFAULT_PERMISSIONS = {}
 
 LOGGING = {

+ 0 - 2
netbox/netbox/plugins/urls.py

@@ -3,13 +3,11 @@ from importlib import import_module
 from django.apps import apps
 from django.conf import settings
 from django.conf.urls import include
-from django.contrib.admin.views.decorators import staff_member_required
 from django.urls import path
 from django.utils.module_loading import import_string, module_has_submodule
 
 from . import views
 
-# Initialize URL base, API, and admin URL patterns for plugins
 plugin_patterns = []
 plugin_api_patterns = [
     path('', views.PluginsAPIRootView.as_view(), name='api-root'),

+ 0 - 5
netbox/netbox/settings.py

@@ -110,7 +110,6 @@ DEFAULT_PERMISSIONS = getattr(configuration, 'DEFAULT_PERMISSIONS', {
     'users.delete_token': ({'user': '$user'},),
 })
 DEVELOPER = getattr(configuration, 'DEVELOPER', False)
-DJANGO_ADMIN_ENABLED = getattr(configuration, 'DJANGO_ADMIN_ENABLED', False)
 DOCS_ROOT = getattr(configuration, 'DOCS_ROOT', os.path.join(os.path.dirname(BASE_DIR), 'docs'))
 EMAIL = getattr(configuration, 'EMAIL', {})
 EVENTS_PIPELINE = getattr(configuration, 'EVENTS_PIPELINE', (
@@ -373,7 +372,6 @@ SERVER_EMAIL = EMAIL.get('FROM_EMAIL')
 #
 
 INSTALLED_APPS = [
-    'django.contrib.admin',
     'django.contrib.auth',
     'django.contrib.contenttypes',
     'django.contrib.sessions',
@@ -411,8 +409,6 @@ INSTALLED_APPS = [
 ]
 if not DEBUG:
     INSTALLED_APPS.remove('debug_toolbar')
-if not DJANGO_ADMIN_ENABLED:
-    INSTALLED_APPS.remove('django.contrib.admin')
 
 # Middleware
 MIDDLEWARE = [
@@ -549,7 +545,6 @@ EXEMPT_EXCLUDE_MODELS = (
 
 # All URLs starting with a string listed here are exempt from maintenance mode enforcement
 MAINTENANCE_EXEMPT_PATHS = (
-    f'/{BASE_PATH}admin/',
     f'/{BASE_PATH}extras/config-revisions/',  # Allow modifying the configuration
     LOGIN_URL,
     LOGIN_REDIRECT_URL,

+ 0 - 9
netbox/netbox/tests/dummy_plugin/admin.py

@@ -1,9 +0,0 @@
-from django.contrib import admin
-
-from netbox.admin import admin_site
-from .models import DummyModel
-
-
-@admin.register(DummyModel, site=admin_site)
-class DummyModelAdmin(admin.ModelAdmin):
-    list_display = ('name', 'number')

+ 0 - 6
netbox/netbox/tests/test_plugins.py

@@ -36,12 +36,6 @@ class PluginTest(TestCase):
         instance.delete()
         self.assertIsNone(instance.pk)
 
-    def test_admin(self):
-
-        # Test admin view URL resolution
-        url = reverse('admin:dummy_plugin_dummymodel_add')
-        self.assertEqual(url, '/admin/dummy_plugin/dummymodel/add/')
-
     @override_settings(LOGIN_REQUIRED=False)
     def test_views(self):
 

+ 0 - 5
netbox/netbox/urls.py

@@ -77,11 +77,6 @@ _patterns = [
     path('api/plugins/', include((plugin_api_patterns, 'plugins-api'))),
 ]
 
-# Django admin UI
-if settings.DJANGO_ADMIN_ENABLED:
-    from .admin import admin_site
-    _patterns.append(path('admin/', admin_site.urls))
-
 # django-debug-toolbar
 if settings.DEBUG:
     import debug_toolbar

+ 0 - 5
netbox/templates/inc/user_menu.html

@@ -36,11 +36,6 @@
       </div>
     </a>
     <div class="dropdown-menu dropdown-menu-end dropdown-menu-arrow" {% htmx_boost %}>
-      {% if config.DJANGO_ADMIN_ENABLED and request.user.is_staff %}
-        <a class="dropdown-item" href="{% url 'admin:index' %}">
-          <i class="mdi mdi-cog"></i> {% trans "Django Admin" %}
-        </a>
-      {% endif %}
       <a href="{% url 'account:profile' %}" class="dropdown-item">
         <i class="mdi mdi-account"></i> {% trans "Profile" %}
       </a>

+ 0 - 5
netbox/users/admin.py

@@ -1,5 +0,0 @@
-from django.contrib import admin
-from django.contrib.auth.models import Group as DjangoGroup
-
-# Prevent the stock Django Group model from appearing in the admin UI (if enabled)
-admin.site.unregister(DjangoGroup)