Skip to content

Commit 28080e9

Browse files
Merge pull request #14386 from netbox-community/develop
Release v3.6.6
2 parents 6ac25ee + 04fd455 commit 28080e9

File tree

26 files changed

+176
-113
lines changed

26 files changed

+176
-113
lines changed

.github/ISSUE_TEMPLATE/bug_report.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ body:
1414
attributes:
1515
label: NetBox version
1616
description: What version of NetBox are you currently running?
17-
placeholder: v3.6.5
17+
placeholder: v3.6.6
1818
validations:
1919
required: true
2020
- type: dropdown

.github/ISSUE_TEMPLATE/feature_request.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ body:
1414
attributes:
1515
label: NetBox version
1616
description: What version of NetBox are you currently running?
17-
placeholder: v3.6.5
17+
placeholder: v3.6.6
1818
validations:
1919
required: true
2020
- type: dropdown

docs/release-notes/version-3.6.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,28 @@
11
# NetBox v3.6
22

3+
## v3.6.6 (2023-11-29)
4+
5+
### Enhancements
6+
7+
* [#13735](https://github.com/netbox-community/netbox/issues/13735) - Show complete region hierarchy in UI for all relevant objects
8+
9+
### Bug Fixes
10+
11+
* [#14056](https://github.com/netbox-community/netbox/issues/14056) - Record a pre-change snapshot when bulk editing objects via CSV
12+
* [#14187](https://github.com/netbox-community/netbox/issues/14187) - Raise a validation error when attempting to create a duplicate script or report
13+
* [#14199](https://github.com/netbox-community/netbox/issues/14199) - Fix jobs list for reports with a custom name
14+
* [#14239](https://github.com/netbox-community/netbox/issues/14239) - Fix CustomFieldChoiceSet search filter
15+
* [#14242](https://github.com/netbox-community/netbox/issues/14242) - Enable export templates for contact assignments
16+
* [#14299](https://github.com/netbox-community/netbox/issues/14299) - Webhook timestamps should be in proper ISO 8601 format
17+
* [#14325](https://github.com/netbox-community/netbox/issues/14325) - Fix numeric ordering of service ports
18+
* [#14339](https://github.com/netbox-community/netbox/issues/14339) - Correctly hash local user password when set via REST API
19+
* [#14343](https://github.com/netbox-community/netbox/issues/14343) - Fix ordering ASN table by ASDOT column
20+
* [#14346](https://github.com/netbox-community/netbox/issues/14346) - Fix running reports via REST API
21+
* [#14349](https://github.com/netbox-community/netbox/issues/14349) - Fix custom validation support for remote data sources
22+
* [#14363](https://github.com/netbox-community/netbox/issues/14363) - Fix bulk editing of interfaces assigned to VM with no cluster
23+
24+
---
25+
326
## v3.6.5 (2023-11-09)
427

528
### Enhancements

netbox/core/models/data.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ def ready_for_sync(self):
122122
)
123123

124124
def clean(self):
125+
super().clean()
125126

126127
# Ensure URL scheme matches selected type
127128
if self.type == DataSourceTypeChoices.LOCAL and self.url_scheme not in ('file', ''):

netbox/core/models/files.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import os
33

44
from django.conf import settings
5+
from django.core.exceptions import ValidationError
56
from django.db import models
67
from django.urls import reverse
78
from django.utils.translation import gettext as _
@@ -84,6 +85,14 @@ def sync_data(self):
8485
self.file_path = os.path.basename(self.data_path)
8586
self.data_file.write_to_disk(self.full_path, overwrite=True)
8687

88+
def clean(self):
89+
super().clean()
90+
91+
# Ensure that the file root and path make a unique pair
92+
if self._meta.model.objects.filter(file_root=self.file_root, file_path=self.file_path).exclude(pk=self.pk).exists():
93+
raise ValidationError(
94+
f"A {self._meta.verbose_name.lower()} with this file path already exists ({self.file_root}/{self.file_path}).")
95+
8796
def delete(self, *args, **kwargs):
8897
# Delete file from disk
8998
try:

netbox/core/models/jobs.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ def trigger_webhooks(self, event):
229229
model_name=self.object_type.model,
230230
event=event,
231231
data=self.data,
232-
timestamp=str(timezone.now()),
232+
timestamp=timezone.now().isoformat(),
233233
username=self.user.username,
234234
retry=get_rq_retry()
235235
)

netbox/extras/api/views.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,7 @@ def run(self, request, pk):
283283

284284
# Retrieve and run the Report. This will create a new Job.
285285
module, report_cls = self._get_report(pk)
286-
report = report_cls()
286+
report = report_cls
287287
input_serializer = serializers.ReportInputSerializer(
288288
data=request.data,
289289
context={'report': report}

netbox/extras/filtersets.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,7 @@ def search(self, queryset, name, value):
122122
return queryset
123123
return queryset.filter(
124124
Q(name__icontains=value) |
125-
Q(description__icontains=value) |
126-
Q(extra_choices__contains=value)
125+
Q(description__icontains=value)
127126
)
128127

129128
def filter_by_choice(self, queryset, name, value):

netbox/extras/views.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1073,7 +1073,7 @@ def get(self, request, module, name):
10731073
jobs = Job.objects.filter(
10741074
object_type=object_type,
10751075
object_id=module.pk,
1076-
name=report.name
1076+
name=report.class_name
10771077
)
10781078

10791079
jobs_table = JobTable(

netbox/extras/webhooks.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ def flush_webhooks(queue):
115115
event=data['event'],
116116
data=data['data'],
117117
snapshots=data['snapshots'],
118-
timestamp=str(timezone.now()),
118+
timestamp=timezone.now().isoformat(),
119119
username=data['username'],
120120
request_id=data['request_id'],
121121
retry=get_rq_retry()

0 commit comments

Comments
 (0)