mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-23 04:22:01 -06:00
Fixes #2362: Implemented custom admin site to properly handle BASE_PATH
This commit is contained in:
parent
cd2aee3053
commit
ff65f7fd7b
@ -4,12 +4,9 @@ from django import forms
|
||||
from django.contrib import admin
|
||||
from django.utils.safestring import mark_safe
|
||||
|
||||
from netbox.admin import admin_site
|
||||
from utilities.forms import LaxURLField
|
||||
from .constants import OBJECTCHANGE_ACTION_CREATE, OBJECTCHANGE_ACTION_DELETE, OBJECTCHANGE_ACTION_UPDATE
|
||||
from .models import (
|
||||
ConfigContext, CustomField, CustomFieldChoice, Graph, ExportTemplate, ObjectChange, TopologyMap, UserAction,
|
||||
Webhook,
|
||||
)
|
||||
from .models import CustomField, CustomFieldChoice, Graph, ExportTemplate, TopologyMap, UserAction, Webhook
|
||||
|
||||
|
||||
def order_content_types(field):
|
||||
@ -39,7 +36,7 @@ class WebhookForm(forms.ModelForm):
|
||||
order_content_types(self.fields['obj_type'])
|
||||
|
||||
|
||||
@admin.register(Webhook)
|
||||
@admin.register(Webhook, site=admin_site)
|
||||
class WebhookAdmin(admin.ModelAdmin):
|
||||
list_display = [
|
||||
'name', 'models', 'payload_url', 'http_content_type', 'enabled', 'type_create', 'type_update',
|
||||
@ -72,7 +69,7 @@ class CustomFieldChoiceAdmin(admin.TabularInline):
|
||||
extra = 5
|
||||
|
||||
|
||||
@admin.register(CustomField)
|
||||
@admin.register(CustomField, site=admin_site)
|
||||
class CustomFieldAdmin(admin.ModelAdmin):
|
||||
inlines = [CustomFieldChoiceAdmin]
|
||||
list_display = ['name', 'models', 'type', 'required', 'filter_logic', 'default', 'weight', 'description']
|
||||
@ -86,7 +83,7 @@ class CustomFieldAdmin(admin.ModelAdmin):
|
||||
# Graphs
|
||||
#
|
||||
|
||||
@admin.register(Graph)
|
||||
@admin.register(Graph, site=admin_site)
|
||||
class GraphAdmin(admin.ModelAdmin):
|
||||
list_display = ['name', 'type', 'weight', 'source']
|
||||
|
||||
@ -109,7 +106,7 @@ class ExportTemplateForm(forms.ModelForm):
|
||||
self.fields['content_type'].choices.insert(0, ('', '---------'))
|
||||
|
||||
|
||||
@admin.register(ExportTemplate)
|
||||
@admin.register(ExportTemplate, site=admin_site)
|
||||
class ExportTemplateAdmin(admin.ModelAdmin):
|
||||
list_display = ['name', 'content_type', 'description', 'mime_type', 'file_extension']
|
||||
form = ExportTemplateForm
|
||||
@ -119,7 +116,7 @@ class ExportTemplateAdmin(admin.ModelAdmin):
|
||||
# Topology maps
|
||||
#
|
||||
|
||||
@admin.register(TopologyMap)
|
||||
@admin.register(TopologyMap, site=admin_site)
|
||||
class TopologyMapAdmin(admin.ModelAdmin):
|
||||
list_display = ['name', 'slug', 'site']
|
||||
prepopulated_fields = {
|
||||
@ -131,7 +128,7 @@ class TopologyMapAdmin(admin.ModelAdmin):
|
||||
# User actions
|
||||
#
|
||||
|
||||
@admin.register(UserAction)
|
||||
@admin.register(UserAction, site=admin_site)
|
||||
class UserActionAdmin(admin.ModelAdmin):
|
||||
actions = None
|
||||
list_display = ['user', 'action', 'content_type', 'object_id', '_message']
|
||||
|
30
netbox/netbox/admin.py
Normal file
30
netbox/netbox/admin.py
Normal file
@ -0,0 +1,30 @@
|
||||
from django.conf import settings
|
||||
from django.contrib.admin import AdminSite
|
||||
from django.contrib.auth.models import Group, User
|
||||
from django.contrib.auth.admin import GroupAdmin, UserAdmin
|
||||
from taggit.admin import TagAdmin
|
||||
from taggit.models import Tag
|
||||
|
||||
|
||||
class NetBoxAdminSite(AdminSite):
|
||||
"""
|
||||
Custom admin site
|
||||
"""
|
||||
site_header = 'NetBox Administration'
|
||||
site_title = 'NetBox'
|
||||
site_url = '/{}'.format(settings.BASE_PATH)
|
||||
|
||||
|
||||
admin_site = NetBoxAdminSite(name='admin')
|
||||
|
||||
# Register external models
|
||||
admin_site.register(Group, GroupAdmin)
|
||||
admin_site.register(User, UserAdmin)
|
||||
admin_site.register(Tag, TagAdmin)
|
||||
|
||||
# Modify the template to include an RQ link if django_rq is installed (see RQ_SHOW_ADMIN_LINK)
|
||||
try:
|
||||
import django_rq
|
||||
admin_site.index_template = 'django_rq/index.html'
|
||||
except ImportError:
|
||||
pass
|
@ -272,7 +272,6 @@ RQ_QUEUES = {
|
||||
'DEFAULT_TIMEOUT': REDIS_DEFAULT_TIMEOUT,
|
||||
}
|
||||
}
|
||||
RQ_SHOW_ADMIN_LINK = True
|
||||
|
||||
# drf_yasg settings for Swagger
|
||||
SWAGGER_SETTINGS = {
|
||||
|
@ -2,13 +2,13 @@ from __future__ import unicode_literals
|
||||
|
||||
from django.conf import settings
|
||||
from django.conf.urls import include, url
|
||||
from django.contrib import admin
|
||||
from django.views.static import serve
|
||||
from drf_yasg.views import get_schema_view
|
||||
from drf_yasg import openapi
|
||||
|
||||
from netbox.views import APIRootView, HomeView, SearchView
|
||||
from users.views import LoginView, LogoutView
|
||||
from .admin import admin_site
|
||||
|
||||
schema_view = get_schema_view(
|
||||
openapi.Info(
|
||||
@ -60,7 +60,7 @@ _patterns = [
|
||||
url(r'^media/(?P<path>.*)$', serve, {'document_root': settings.MEDIA_ROOT}),
|
||||
|
||||
# Admin
|
||||
url(r'^admin/', admin.site.urls),
|
||||
url(r'^admin/', admin_site.urls),
|
||||
|
||||
]
|
||||
|
||||
@ -69,7 +69,6 @@ if settings.WEBHOOKS_ENABLED:
|
||||
url(r'^admin/webhook-backend-status/', include('django_rq.urls')),
|
||||
]
|
||||
|
||||
|
||||
if settings.DEBUG:
|
||||
import debug_toolbar
|
||||
_patterns += [
|
||||
|
@ -3,11 +3,12 @@ from __future__ import unicode_literals
|
||||
from django.contrib import admin, messages
|
||||
from django.shortcuts import redirect, render
|
||||
|
||||
from netbox.admin import admin_site
|
||||
from .forms import ActivateUserKeyForm
|
||||
from .models import UserKey
|
||||
|
||||
|
||||
@admin.register(UserKey)
|
||||
@admin.register(UserKey, site=admin_site)
|
||||
class UserKeyAdmin(admin.ModelAdmin):
|
||||
actions = ['activate_selected']
|
||||
list_display = ['user', 'is_filled', 'is_active', 'created']
|
||||
|
@ -3,6 +3,7 @@ from __future__ import unicode_literals
|
||||
from django import forms
|
||||
from django.contrib import admin
|
||||
|
||||
from netbox.admin import admin_site
|
||||
from .models import Token
|
||||
|
||||
|
||||
@ -14,7 +15,7 @@ class TokenAdminForm(forms.ModelForm):
|
||||
model = Token
|
||||
|
||||
|
||||
@admin.register(Token)
|
||||
@admin.register(Token, site=admin_site)
|
||||
class TokenAdmin(admin.ModelAdmin):
|
||||
form = TokenAdminForm
|
||||
list_display = ['key', 'user', 'created', 'expires', 'write_enabled', 'description']
|
||||
|
Loading…
Reference in New Issue
Block a user