From 930b15ae090b0666875edb68d5ce9ceb5e805efd Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Wed, 2 Aug 2017 14:20:43 -0400 Subject: [PATCH 1/6] 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 c97c9bbc50f..ea8f20d977b 100644 --- a/netbox/netbox/settings.py +++ b/netbox/netbox/settings.py @@ -13,7 +13,7 @@ except ImportError: ) -VERSION = '2.1.1' +VERSION = '2.1.2-dev' # Import required configuration parameters ALLOWED_HOSTS = DATABASE = SECRET_KEY = None From 3aa072b4375750c0bbcd6bf9b2d849a5843b04d1 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Thu, 3 Aug 2017 09:26:28 -0400 Subject: [PATCH 2/6] Fixes #1388: Fixed server error when searching globally for IPs/prefixes (rolled back #1379) --- netbox/dcim/filters.py | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/netbox/dcim/filters.py b/netbox/dcim/filters.py index dcd6c6d2e33..54a7af4e278 100644 --- a/netbox/dcim/filters.py +++ b/netbox/dcim/filters.py @@ -448,20 +448,13 @@ class DeviceFilter(CustomFieldFilterSet, django_filters.FilterSet): def search(self, queryset, name, value): if not value.strip(): return queryset - qs_filter = ( + return queryset.filter( Q(name__icontains=value) | Q(serial__icontains=value.strip()) | Q(inventory_items__serial__icontains=value.strip()) | Q(asset_tag=value.strip()) | Q(comments__icontains=value) - ) - # If the query value looks like a MAC address, search interfaces as well. - try: - mac = EUI(value.strip()) - qs_filter |= Q(interfaces__mac_address=mac) - except AddrFormatError: - pass - return queryset.filter(qs_filter).distinct() + ).distinct() def _mac_address(self, queryset, name, value): value = value.strip() From 6f0f3cc11590c29c4d31f85637cb049d898e032c Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Thu, 3 Aug 2017 10:09:37 -0400 Subject: [PATCH 3/6] Fixes #1390: Fixed IndexError when viewing available IPs within large IPv6 prefixes --- netbox/ipam/api/views.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/netbox/ipam/api/views.py b/netbox/ipam/api/views.py index 87511d5c561..9cf93cb4b94 100644 --- a/netbox/ipam/api/views.py +++ b/netbox/ipam/api/views.py @@ -115,7 +115,11 @@ class PrefixViewSet(WritableSerializerMixin, CustomFieldModelViewSet): limit = min(limit, settings.MAX_PAGE_SIZE) # Calculate available IPs within the prefix - ip_list = list(prefix.get_available_ips())[:limit] + ip_list = [] + for index, ip in enumerate(prefix.get_available_ips(), start=1): + ip_list.append(ip) + if index == limit: + break serializer = serializers.AvailableIPSerializer(ip_list, many=True, context={ 'request': request, 'prefix': prefix.prefix, From 236229ea7e6214818ee88a670ea2831b234d72a9 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Thu, 3 Aug 2017 15:40:52 -0400 Subject: [PATCH 4/6] Closes #992: Allow the creation of multiple services per device with the same protocol and port --- ...18_remove_service_uniqueness_constraint.py | 19 +++++++++++++++++++ netbox/ipam/models.py | 1 - 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 netbox/ipam/migrations/0018_remove_service_uniqueness_constraint.py diff --git a/netbox/ipam/migrations/0018_remove_service_uniqueness_constraint.py b/netbox/ipam/migrations/0018_remove_service_uniqueness_constraint.py new file mode 100644 index 00000000000..77e083ef3de --- /dev/null +++ b/netbox/ipam/migrations/0018_remove_service_uniqueness_constraint.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.3 on 2017-08-03 19:37 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('ipam', '0017_ipaddress_roles'), + ] + + operations = [ + migrations.AlterUniqueTogether( + name='service', + unique_together=set([]), + ), + ] diff --git a/netbox/ipam/models.py b/netbox/ipam/models.py index 04853c5da31..bbd5e1827d2 100644 --- a/netbox/ipam/models.py +++ b/netbox/ipam/models.py @@ -600,7 +600,6 @@ class Service(CreatedUpdatedModel): class Meta: ordering = ['device', 'protocol', 'port'] - unique_together = ['device', 'protocol', 'port'] def __str__(self): return '{} ({}/{})'.format(self.name, self.port, self.get_protocol_display()) From dadfcd4f81fc24050712f6d9fee14a4000228db3 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Thu, 3 Aug 2017 17:49:22 -0400 Subject: [PATCH 5/6] Tweaked navigation menu styling --- netbox/project-static/css/base.css | 5 + netbox/templates/_base.html | 154 ++++++++++++++--------------- 2 files changed, 82 insertions(+), 77 deletions(-) diff --git a/netbox/project-static/css/base.css b/netbox/project-static/css/base.css index 573c1c96734..0f6b24077e9 100644 --- a/netbox/project-static/css/base.css +++ b/netbox/project-static/css/base.css @@ -81,6 +81,11 @@ footer p { } } +/* Navigation menu */ +li.subnav > a { + padding-left: 30px; +} + /* Forms */ label { font-weight: normal; diff --git a/netbox/templates/_base.html b/netbox/templates/_base.html index 10b4970a873..c56a95abeb7 100644 --- a/netbox/templates/_base.html +++ b/netbox/templates/_base.html @@ -31,197 +31,197 @@ @@ -229,14 +229,14 @@ @@ -250,16 +250,16 @@ {{ request.user|truncatechars:"30" }} {% else %} -
  • Log in
  • +
  • Log in
  • {% endif %}