From d4b96a5a276d29b41653a63b4da59411e502864b Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Mon, 12 Oct 2020 09:51:11 -0400 Subject: [PATCH 01/26] Post-release version bump --- netbox/netbox/settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netbox/netbox/settings.py b/netbox/netbox/settings.py index e27939408..3db1c40cd 100644 --- a/netbox/netbox/settings.py +++ b/netbox/netbox/settings.py @@ -16,7 +16,7 @@ from django.core.validators import URLValidator # Environment setup # -VERSION = '2.9.7' +VERSION = '2.9.8-dev' # Hostname HOSTNAME = platform.node() From 0d01a3fce8d97e319cde32d7235f3a5a130257b9 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Wed, 14 Oct 2020 10:42:31 -0400 Subject: [PATCH 02/26] Add schema migrations to plugins installation doc --- docs/plugins/index.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/plugins/index.md b/docs/plugins/index.md index 1f5587539..202e0a96b 100644 --- a/docs/plugins/index.md +++ b/docs/plugins/index.md @@ -64,6 +64,15 @@ PLUGINS_CONFIG = { } ``` +### Run Database Migrations + +If the plugin introduces new database models, run the provided schema migrations: + +```no-highlight +(venv) $ cd /opt/netbox/netbox/ +(venv) $ python3 manage.py migrate +``` + ### Collect Static Files Plugins may package static files to be served directly by the HTTP front end. Ensure that these are copied to the static root directory with the `collectstatic` management command: From 87c13a876b6a1975e79b8a12ca0ad8569a3e8aea Mon Sep 17 00:00:00 2001 From: John Anderson Date: Wed, 14 Oct 2020 20:10:21 -0400 Subject: [PATCH 03/26] fixes #5113 - incorrect caching of permission object assignments to user groups in the admin panel --- docs/release-notes/version-2.9.md | 6 ++++++ netbox/users/admin.py | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/release-notes/version-2.9.md b/docs/release-notes/version-2.9.md index 4e758ead7..9fe32ff5f 100644 --- a/docs/release-notes/version-2.9.md +++ b/docs/release-notes/version-2.9.md @@ -1,5 +1,11 @@ # NetBox v2.9 +## v2.9.8 (FUTURE) + +### Bug Fixes + +* [#5113](https://github.com/netbox-community/netbox/issues/5113) - Fix incorrect caching of permission object assignments to user groups in the admin panel + ## v2.9.7 (2020-10-12) ### Bug Fixes diff --git a/netbox/users/admin.py b/netbox/users/admin.py index 1fac75899..5228fe6bf 100644 --- a/netbox/users/admin.py +++ b/netbox/users/admin.py @@ -22,7 +22,7 @@ class ObjectPermissionInline(admin.TabularInline): verbose_name_plural = 'Permissions' def get_queryset(self, request): - return super().get_queryset(request).prefetch_related('objectpermission__object_types') + return super().get_queryset(request).prefetch_related('objectpermission__object_types').nocache() @staticmethod def object_types(instance): From dde52309d25d6fd6ecc5f05c7a373fa81cb719dc Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Thu, 15 Oct 2020 16:55:20 -0400 Subject: [PATCH 04/26] Fixes #5243: Redirect user to appropriate tab after modifying device components --- docs/release-notes/version-2.9.md | 3 + netbox/dcim/tables.py | 24 ++++-- netbox/templates/dcim/device.html | 102 ++++++++++++++------------ netbox/templates/dcim/devicetype.html | 46 ++++++++++-- netbox/utilities/tables.py | 9 ++- 5 files changed, 119 insertions(+), 65 deletions(-) diff --git a/docs/release-notes/version-2.9.md b/docs/release-notes/version-2.9.md index 9fe32ff5f..bd11c0c76 100644 --- a/docs/release-notes/version-2.9.md +++ b/docs/release-notes/version-2.9.md @@ -5,6 +5,9 @@ ### Bug Fixes * [#5113](https://github.com/netbox-community/netbox/issues/5113) - Fix incorrect caching of permission object assignments to user groups in the admin panel +* [#5243](https://github.com/netbox-community/netbox/issues/5243) - Redirect user to appropriate tab after modifying device components + +--- ## v2.9.7 (2020-10-12) diff --git a/netbox/dcim/tables.py b/netbox/dcim/tables.py index 371eff9db..3106ed2a1 100644 --- a/netbox/dcim/tables.py +++ b/netbox/dcim/tables.py @@ -432,7 +432,8 @@ class ComponentTemplateTable(BaseTable): class ConsolePortTemplateTable(ComponentTemplateTable): actions = ButtonsColumn( model=ConsolePortTemplate, - buttons=('edit', 'delete') + buttons=('edit', 'delete'), + return_url_extra='%23tab_consoleports' ) class Meta(BaseTable.Meta): @@ -444,7 +445,8 @@ class ConsolePortTemplateTable(ComponentTemplateTable): class ConsoleServerPortTemplateTable(ComponentTemplateTable): actions = ButtonsColumn( model=ConsoleServerPortTemplate, - buttons=('edit', 'delete') + buttons=('edit', 'delete'), + return_url_extra='%23tab_consoleserverports' ) class Meta(BaseTable.Meta): @@ -456,7 +458,8 @@ class ConsoleServerPortTemplateTable(ComponentTemplateTable): class PowerPortTemplateTable(ComponentTemplateTable): actions = ButtonsColumn( model=PowerPortTemplate, - buttons=('edit', 'delete') + buttons=('edit', 'delete'), + return_url_extra='%23tab_powerports' ) class Meta(BaseTable.Meta): @@ -468,7 +471,8 @@ class PowerPortTemplateTable(ComponentTemplateTable): class PowerOutletTemplateTable(ComponentTemplateTable): actions = ButtonsColumn( model=PowerOutletTemplate, - buttons=('edit', 'delete') + buttons=('edit', 'delete'), + return_url_extra='%23tab_poweroutlets' ) class Meta(BaseTable.Meta): @@ -483,7 +487,8 @@ class InterfaceTemplateTable(ComponentTemplateTable): ) actions = ButtonsColumn( model=InterfaceTemplate, - buttons=('edit', 'delete') + buttons=('edit', 'delete'), + return_url_extra='%23tab_interfaces' ) class Meta(BaseTable.Meta): @@ -498,7 +503,8 @@ class FrontPortTemplateTable(ComponentTemplateTable): ) actions = ButtonsColumn( model=FrontPortTemplate, - buttons=('edit', 'delete') + buttons=('edit', 'delete'), + return_url_extra='%23tab_frontports' ) class Meta(BaseTable.Meta): @@ -510,7 +516,8 @@ class FrontPortTemplateTable(ComponentTemplateTable): class RearPortTemplateTable(ComponentTemplateTable): actions = ButtonsColumn( model=RearPortTemplate, - buttons=('edit', 'delete') + buttons=('edit', 'delete'), + return_url_extra='%23tab_rearports' ) class Meta(BaseTable.Meta): @@ -522,7 +529,8 @@ class RearPortTemplateTable(ComponentTemplateTable): class DeviceBayTemplateTable(ComponentTemplateTable): actions = ButtonsColumn( model=DeviceBayTemplate, - buttons=('edit', 'delete') + buttons=('edit', 'delete'), + return_url_extra='%23tab_devicebays' ) class Meta(BaseTable.Meta): diff --git a/netbox/templates/dcim/device.html b/netbox/templates/dcim/device.html index 477953a97..c42ef828e 100644 --- a/netbox/templates/dcim/device.html +++ b/netbox/templates/dcim/device.html @@ -48,28 +48,28 @@