mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-25 01:48:38 -06:00
Closes #6097: Redirect old slug-based object views
This commit is contained in:
parent
d6fcd22752
commit
696b5c80a7
@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
### Enhancements (from Beta)
|
### Enhancements (from Beta)
|
||||||
|
|
||||||
|
* [#6097](https://github.com/netbox-community/netbox/issues/6097) - Redirect old slug-based object views
|
||||||
* [#6109](https://github.com/netbox-community/netbox/issues/6109) - Add device counts to locations table
|
* [#6109](https://github.com/netbox-community/netbox/issues/6109) - Add device counts to locations table
|
||||||
|
|
||||||
### Bug Fixes (from Beta)
|
### Bug Fixes (from Beta)
|
||||||
|
@ -2,6 +2,7 @@ from django.urls import path
|
|||||||
|
|
||||||
from dcim.views import CableCreateView, PathTraceView
|
from dcim.views import CableCreateView, PathTraceView
|
||||||
from extras.views import ObjectChangeLogView, ObjectJournalView
|
from extras.views import ObjectChangeLogView, ObjectJournalView
|
||||||
|
from utilities.views import SlugRedirectView
|
||||||
from . import views
|
from . import views
|
||||||
from .models import *
|
from .models import *
|
||||||
|
|
||||||
@ -15,6 +16,7 @@ urlpatterns = [
|
|||||||
path('providers/edit/', views.ProviderBulkEditView.as_view(), name='provider_bulk_edit'),
|
path('providers/edit/', views.ProviderBulkEditView.as_view(), name='provider_bulk_edit'),
|
||||||
path('providers/delete/', views.ProviderBulkDeleteView.as_view(), name='provider_bulk_delete'),
|
path('providers/delete/', views.ProviderBulkDeleteView.as_view(), name='provider_bulk_delete'),
|
||||||
path('providers/<int:pk>/', views.ProviderView.as_view(), name='provider'),
|
path('providers/<int:pk>/', views.ProviderView.as_view(), name='provider'),
|
||||||
|
path('providers/<slug:slug>/', SlugRedirectView.as_view(), kwargs={'model': Provider}),
|
||||||
path('providers/<int:pk>/edit/', views.ProviderEditView.as_view(), name='provider_edit'),
|
path('providers/<int:pk>/edit/', views.ProviderEditView.as_view(), name='provider_edit'),
|
||||||
path('providers/<int:pk>/delete/', views.ProviderDeleteView.as_view(), name='provider_delete'),
|
path('providers/<int:pk>/delete/', views.ProviderDeleteView.as_view(), name='provider_delete'),
|
||||||
path('providers/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='provider_changelog', kwargs={'model': Provider}),
|
path('providers/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='provider_changelog', kwargs={'model': Provider}),
|
||||||
|
@ -2,6 +2,7 @@ from django.urls import path
|
|||||||
|
|
||||||
from extras.views import ImageAttachmentEditView, ObjectChangeLogView, ObjectJournalView
|
from extras.views import ImageAttachmentEditView, ObjectChangeLogView, ObjectJournalView
|
||||||
from ipam.views import ServiceEditView
|
from ipam.views import ServiceEditView
|
||||||
|
from utilities.views import SlugRedirectView
|
||||||
from . import views
|
from . import views
|
||||||
from .models import *
|
from .models import *
|
||||||
|
|
||||||
@ -37,6 +38,7 @@ urlpatterns = [
|
|||||||
path('sites/edit/', views.SiteBulkEditView.as_view(), name='site_bulk_edit'),
|
path('sites/edit/', views.SiteBulkEditView.as_view(), name='site_bulk_edit'),
|
||||||
path('sites/delete/', views.SiteBulkDeleteView.as_view(), name='site_bulk_delete'),
|
path('sites/delete/', views.SiteBulkDeleteView.as_view(), name='site_bulk_delete'),
|
||||||
path('sites/<int:pk>/', views.SiteView.as_view(), name='site'),
|
path('sites/<int:pk>/', views.SiteView.as_view(), name='site'),
|
||||||
|
path('sites/<slug:slug>/', SlugRedirectView.as_view(), kwargs={'model': Site}),
|
||||||
path('sites/<int:pk>/edit/', views.SiteEditView.as_view(), name='site_edit'),
|
path('sites/<int:pk>/edit/', views.SiteEditView.as_view(), name='site_edit'),
|
||||||
path('sites/<int:pk>/delete/', views.SiteDeleteView.as_view(), name='site_delete'),
|
path('sites/<int:pk>/delete/', views.SiteDeleteView.as_view(), name='site_delete'),
|
||||||
path('sites/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='site_changelog', kwargs={'model': Site}),
|
path('sites/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='site_changelog', kwargs={'model': Site}),
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
from django.urls import path
|
from django.urls import path
|
||||||
|
|
||||||
from extras.views import ObjectChangeLogView, ObjectJournalView
|
from extras.views import ObjectChangeLogView, ObjectJournalView
|
||||||
|
from utilities.views import SlugRedirectView
|
||||||
from . import views
|
from . import views
|
||||||
from .models import Tenant, TenantGroup
|
from .models import Tenant, TenantGroup
|
||||||
|
|
||||||
@ -25,6 +26,7 @@ urlpatterns = [
|
|||||||
path('tenants/edit/', views.TenantBulkEditView.as_view(), name='tenant_bulk_edit'),
|
path('tenants/edit/', views.TenantBulkEditView.as_view(), name='tenant_bulk_edit'),
|
||||||
path('tenants/delete/', views.TenantBulkDeleteView.as_view(), name='tenant_bulk_delete'),
|
path('tenants/delete/', views.TenantBulkDeleteView.as_view(), name='tenant_bulk_delete'),
|
||||||
path('tenants/<int:pk>/', views.TenantView.as_view(), name='tenant'),
|
path('tenants/<int:pk>/', views.TenantView.as_view(), name='tenant'),
|
||||||
|
path('tenants/<slug:slug>/', SlugRedirectView.as_view(), kwargs={'model': Tenant}),
|
||||||
path('tenants/<int:pk>/edit/', views.TenantEditView.as_view(), name='tenant_edit'),
|
path('tenants/<int:pk>/edit/', views.TenantEditView.as_view(), name='tenant_edit'),
|
||||||
path('tenants/<int:pk>/delete/', views.TenantDeleteView.as_view(), name='tenant_delete'),
|
path('tenants/<int:pk>/delete/', views.TenantDeleteView.as_view(), name='tenant_delete'),
|
||||||
path('tenants/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='tenant_changelog', kwargs={'model': Tenant}),
|
path('tenants/<int:pk>/changelog/', ObjectChangeLogView.as_view(), name='tenant_changelog', kwargs={'model': Tenant}),
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
from django.contrib.auth.mixins import AccessMixin
|
from django.contrib.auth.mixins import AccessMixin
|
||||||
from django.core.exceptions import ImproperlyConfigured
|
from django.core.exceptions import ImproperlyConfigured
|
||||||
|
from django.shortcuts import get_object_or_404, redirect
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
from django.urls.exceptions import NoReverseMatch
|
from django.urls.exceptions import NoReverseMatch
|
||||||
from django.utils.http import is_safe_url
|
from django.utils.http import is_safe_url
|
||||||
|
from django.views.generic import View
|
||||||
|
|
||||||
from .permissions import resolve_permission
|
from .permissions import resolve_permission
|
||||||
|
|
||||||
@ -123,3 +125,14 @@ class GetReturnURLMixin:
|
|||||||
|
|
||||||
# If all else fails, return home. Ideally this should never happen.
|
# If all else fails, return home. Ideally this should never happen.
|
||||||
return reverse('home')
|
return reverse('home')
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Views
|
||||||
|
#
|
||||||
|
|
||||||
|
class SlugRedirectView(View):
|
||||||
|
|
||||||
|
def get(self, request, model, slug):
|
||||||
|
obj = get_object_or_404(model.objects.restrict(request.user, 'view'), slug=slug)
|
||||||
|
return redirect(obj.get_absolute_url())
|
||||||
|
Loading…
Reference in New Issue
Block a user