From 604924231a4c0735c76f8e84557637a9ddbd5444 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Thu, 16 Jan 2020 14:47:55 -0500 Subject: [PATCH 1/5] 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 effff8d8d..479a9a4a2 100644 --- a/netbox/netbox/settings.py +++ b/netbox/netbox/settings.py @@ -12,7 +12,7 @@ from django.core.exceptions import ImproperlyConfigured # Environment setup # -VERSION = '2.7.0' +VERSION = '2.7.1-dev' # Hostname HOSTNAME = platform.node() From 9f569d4b1b2ec8cd6a67942ef96fee012de78392 Mon Sep 17 00:00:00 2001 From: Saria Hajjar Date: Thu, 16 Jan 2020 23:03:16 +0000 Subject: [PATCH 2/5] Fixes #3941: AttributeError when searching on IP assign --- docs/release-notes/version-2.7.md | 10 +++++++++- netbox/ipam/views.py | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/docs/release-notes/version-2.7.md b/docs/release-notes/version-2.7.md index 4876476c9..bfdfb4b51 100644 --- a/docs/release-notes/version-2.7.md +++ b/docs/release-notes/version-2.7.md @@ -1,3 +1,11 @@ +# v2.7.1 (FUTURE) + +## Bug Fixes + +* [#3941](https://github.com/netbox-community/netbox/issues/3941) - Fixed exception when attempting to assign IP to interface + +--- + # v2.7.0 (2020-01-16) **Note:** This release completely removes the topology map feature ([#2745](https://github.com/netbox-community/netbox/issues/2745)). @@ -172,7 +180,7 @@ REDIS = { 'SSL': False, } } -``` +``` Note that the `CACHE_DATABASE` parameter has been removed and the connection settings have been duplicated for both `webhooks` and `caching`. This allows the user to make use of separate Redis instances if desired. It is fine to use the diff --git a/netbox/ipam/views.py b/netbox/ipam/views.py index 1460df66f..5cbd55bf4 100644 --- a/netbox/ipam/views.py +++ b/netbox/ipam/views.py @@ -760,7 +760,7 @@ class IPAddressAssignView(PermissionRequiredMixin, View): 'vrf', 'tenant', 'interface__device', 'interface__virtual_machine' ) # Limit to 100 results - addresses = filters.IPAddressFilter(request.POST, addresses).qs[:100] + addresses = filters.IPAddressFilterSet(request.POST, addresses).qs[:100] table = tables.IPAddressAssignTable(addresses) return render(request, 'ipam/ipaddress_assign.html', { From 5369aef97103aea982f08bce356d869fb22184ae Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Thu, 16 Jan 2020 21:39:46 -0500 Subject: [PATCH 3/5] Fixes #3944: Fix AttributeError exception when viewing prefixes list --- docs/release-notes/version-2.7.md | 8 ++++++++ netbox/ipam/fields.py | 10 ++++------ netbox/ipam/lookups.py | 4 ++++ 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/docs/release-notes/version-2.7.md b/docs/release-notes/version-2.7.md index 4876476c9..0e58a466d 100644 --- a/docs/release-notes/version-2.7.md +++ b/docs/release-notes/version-2.7.md @@ -1,3 +1,11 @@ +# v2.7.1 (FUTURE) + +# Bug Fixes + +* [#3944](https://github.com/netbox-community/netbox/issues/3944) - Fix AttributeError exception when viewing prefixes list + +--- + # v2.7.0 (2020-01-16) **Note:** This release completely removes the topology map feature ([#2745](https://github.com/netbox-community/netbox/issues/2745)). diff --git a/netbox/ipam/fields.py b/netbox/ipam/fields.py index 845820432..72600d1b9 100644 --- a/netbox/ipam/fields.py +++ b/netbox/ipam/fields.py @@ -1,6 +1,6 @@ from django.core.exceptions import ValidationError from django.db import models -from netaddr import AddrFormatError, IPNetwork, IPAddress +from netaddr import AddrFormatError, IPNetwork from . import lookups from .formfields import IPFormField @@ -23,11 +23,9 @@ class BaseIPField(models.Field): if not value: return value try: - if '/' in str(value): - return IPNetwork(value) - else: - return IPAddress(value) - except AddrFormatError as e: + # Always return a netaddr.IPNetwork object. (netaddr.IPAddress does not provide a mask.) + return IPNetwork(value) + except AddrFormatError: raise ValidationError("Invalid IP address format: {}".format(value)) except (TypeError, ValueError) as e: raise ValidationError(e) diff --git a/netbox/ipam/lookups.py b/netbox/ipam/lookups.py index 457cd7734..62b356c5d 100644 --- a/netbox/ipam/lookups.py +++ b/netbox/ipam/lookups.py @@ -103,6 +103,10 @@ class NetHost(Lookup): class NetIn(Lookup): lookup_name = 'net_in' + def get_prep_lookup(self): + # Don't cast the query value to a netaddr object, since it may or may not include a mask. + return self.rhs + def as_sql(self, qn, connection): lhs, lhs_params = self.process_lhs(qn, connection) rhs, rhs_params = self.process_rhs(qn, connection) From 0a1dd64b9440593dd51007be16f29950d980ac0e Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Thu, 16 Jan 2020 23:41:52 -0500 Subject: [PATCH 4/5] Fixes #3943: Prevent rack elevation links from opening new tabs/windows --- docs/release-notes/version-2.7.md | 1 + netbox/dcim/models/__init__.py | 15 ++++++++++----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/docs/release-notes/version-2.7.md b/docs/release-notes/version-2.7.md index cedff6b13..4504be646 100644 --- a/docs/release-notes/version-2.7.md +++ b/docs/release-notes/version-2.7.md @@ -3,6 +3,7 @@ ## Bug Fixes * [#3941](https://github.com/netbox-community/netbox/issues/3941) - Fixed exception when attempting to assign IP to interface +* [#3943](https://github.com/netbox-community/netbox/issues/3943) - Prevent rack elevation links from opening new tabs/windows * [#3944](https://github.com/netbox-community/netbox/issues/3944) - Fix AttributeError exception when viewing prefixes list --- diff --git a/netbox/dcim/models/__init__.py b/netbox/dcim/models/__init__.py index b6716e324..ccbdafa83 100644 --- a/netbox/dcim/models/__init__.py +++ b/netbox/dcim/models/__init__.py @@ -390,7 +390,9 @@ class RackElevationHelperMixin: color = device.device_role.color link = drawing.add( drawing.a( - reverse('dcim:device', kwargs={'pk': device.pk}), fill='black' + href=reverse('dcim:device', kwargs={'pk': device.pk}), + target='_top', + fill='black' ) ) link.add(drawing.rect(start, end, fill='#{}'.format(color))) @@ -405,10 +407,13 @@ class RackElevationHelperMixin: @staticmethod def _draw_empty(drawing, rack, start, end, text, id_, face_id, class_): link = drawing.add( - drawing.a('{}?{}'.format( - reverse('dcim:device_add'), - urlencode({'rack': rack.pk, 'site': rack.site.pk, 'face': face_id, 'position': id_}) - )) + drawing.a( + href='{}?{}'.format( + reverse('dcim:device_add'), + urlencode({'rack': rack.pk, 'site': rack.site.pk, 'face': face_id, 'position': id_}) + ), + target='_top' + ) ) link.add(drawing.rect(start, end, class_=class_)) link.add(drawing.text("add device", insert=text, class_='add-device')) From 8aad11b8d2e8db38671ebfaa80edc00a01724658 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Thu, 16 Jan 2020 23:43:32 -0500 Subject: [PATCH 5/5] Release v2.7.1 --- docs/release-notes/version-2.7.md | 2 +- netbox/netbox/settings.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/release-notes/version-2.7.md b/docs/release-notes/version-2.7.md index 4504be646..bdc1d6f41 100644 --- a/docs/release-notes/version-2.7.md +++ b/docs/release-notes/version-2.7.md @@ -1,4 +1,4 @@ -# v2.7.1 (FUTURE) +# v2.7.1 (2020-01-16) ## Bug Fixes diff --git a/netbox/netbox/settings.py b/netbox/netbox/settings.py index 479a9a4a2..cd0fac465 100644 --- a/netbox/netbox/settings.py +++ b/netbox/netbox/settings.py @@ -12,7 +12,7 @@ from django.core.exceptions import ImproperlyConfigured # Environment setup # -VERSION = '2.7.1-dev' +VERSION = '2.7.1' # Hostname HOSTNAME = platform.node()