Jeremy Stretch
d2df19790f
Merge branch 'main' into feature
...
# Conflicts:
# contrib/openapi.json
# docs/release-notes/version-4.6.md
# netbox/dcim/choices.py
# netbox/dcim/forms/mixins.py
# netbox/dcim/models/device_component_templates.py
# netbox/dcim/models/device_components.py
# netbox/extras/dashboard/widgets.py
# netbox/extras/graphql/types.py
# netbox/extras/models/configs.py
# netbox/extras/tests/test_templatetags.py
# netbox/ipam/choices.py
# netbox/ipam/forms/model_forms.py
# netbox/netbox/configuration_example.py
# netbox/netbox/filtersets.py
# netbox/netbox/tests/test_api.py
# netbox/netbox/tests/test_scaffold.py
# netbox/netbox/tests/test_tables.py
# netbox/project-static/dist/netbox.js
# netbox/project-static/dist/netbox.js.map
# netbox/project-static/package.json
# netbox/project-static/yarn.lock
# netbox/release.yaml
# netbox/translations/cs/LC_MESSAGES/django.mo
# netbox/translations/cs/LC_MESSAGES/django.po
# netbox/translations/da/LC_MESSAGES/django.mo
# netbox/translations/da/LC_MESSAGES/django.po
# netbox/translations/de/LC_MESSAGES/django.mo
# netbox/translations/de/LC_MESSAGES/django.po
# netbox/translations/en/LC_MESSAGES/django.po
# netbox/translations/es/LC_MESSAGES/django.mo
# netbox/translations/es/LC_MESSAGES/django.po
# netbox/translations/fr/LC_MESSAGES/django.mo
# netbox/translations/fr/LC_MESSAGES/django.po
# netbox/translations/it/LC_MESSAGES/django.mo
# netbox/translations/it/LC_MESSAGES/django.po
# netbox/translations/ja/LC_MESSAGES/django.mo
# netbox/translations/ja/LC_MESSAGES/django.po
# netbox/translations/ko/LC_MESSAGES/django.mo
# netbox/translations/ko/LC_MESSAGES/django.po
# netbox/translations/lv/LC_MESSAGES/django.mo
# netbox/translations/lv/LC_MESSAGES/django.po
# netbox/translations/nl/LC_MESSAGES/django.mo
# netbox/translations/nl/LC_MESSAGES/django.po
# netbox/translations/pl/LC_MESSAGES/django.mo
# netbox/translations/pl/LC_MESSAGES/django.po
# netbox/translations/pt/LC_MESSAGES/django.mo
# netbox/translations/pt/LC_MESSAGES/django.po
# netbox/translations/ru/LC_MESSAGES/django.mo
# netbox/translations/ru/LC_MESSAGES/django.po
# netbox/translations/tr/LC_MESSAGES/django.mo
# netbox/translations/tr/LC_MESSAGES/django.po
# netbox/translations/uk/LC_MESSAGES/django.mo
# netbox/translations/uk/LC_MESSAGES/django.po
# netbox/translations/zh/LC_MESSAGES/django.mo
# netbox/translations/zh/LC_MESSAGES/django.po
# netbox/utilities/jinja2.py
# netbox/utilities/tests/test_filters.py
# requirements.txt
2026-07-28 14:24:24 -04:00
Jeremy Stretch
fb8c455ba6
Release v4.6.6
2026-07-28 13:25:44 -04:00
Arthur Hanson
7472c5d067
22752 - Restore rear port fields on front port bulk import ( #22776 )
2026-07-28 10:02:41 -04:00
studioussagar
eaa2816964
Closes #22522 : Render colored badges for Custom Field Choices in tables ( #22663 )
...
Render select and multiselect custom field values as colored badges in
table views when their associated choices define colors.
For multiselect fields, render all selected values as badges when any
selected choice has a color, using the secondary badge color for
uncolored choices. Preserve comma-separated text when none of the
selected choices has a color.
Add test coverage for colored, uncolored, empty, mixed, and
HTML-sensitive choice values.
Co-authored-by: Martin Hauser <mhauser@netboxlabs.com>
2026-07-28 15:35:30 +02:00
Abhirupmandal
749e1b6579
Fixes #22690 : Restore the left border on the quick search field
2026-07-28 09:32:57 -04:00
Martin Hauser
1e48c81666
docs(permissions): Add note about JSON escaping in constraint definitions
...
Clarifies that backslashes in constraint values must be escaped in JSON.
Includes example showing regex pattern escaping and adds table entry
demonstrating regex constraint usage.
Fixes #22498
2026-07-28 09:30:59 -04:00
Jason Novinger
b3c27b951d
Closes #22790 : Enforce SavedFilter visibility when applied via filter/filter_id ( #22791 )
...
BaseFilterSet resolved referenced SavedFilters without a visibility check, so
a private (shared=False) filter owned by one user could have its parameters
applied to another user's request. Restrict resolution to shared or owned
filters via restrict_to_shared(), matching the visibility enforced on the UI,
REST, and GraphQL SavedFilter surfaces.
2026-07-28 10:51:14 +02:00
bctiemann
8aa7b3b2c8
Merge pull request #22780 from netbox-community/22768-cable-removal-stores-an-empty-string-instead-of-null-in
...
Fixes #22768 : Store null values for cable_end when removing Cables
2026-07-27 15:02:52 -04:00
bctiemann
f951ba0219
Merge pull request #22778 from netbox-community/22745-script2
...
22766 - Map GraphQL array length lookup to Django's len transform
2026-07-27 15:01:38 -04:00
Martin Hauser
7d0a86ef52
fix(search): Add comments field to search indexing
...
Include comments field with weight 5000 in search indexes for
DeviceRole, L2VPN, MACAddress, and RouteTarget models to enable
full-text search on comment content.
Fixes #22767
2026-07-27 13:30:13 -04:00
Martin Hauser
34d6c170d8
Fixes #22773 : Fix TypeError when bulk adding Module Bays to Devices ( #22782 )
2026-07-27 09:27:08 -05:00
Martin Hauser
91b51f62d6
fix(dcim): Nullify empty cable_end values instead of empty strings
...
Replace empty strings with null values for cable_end fields across
cable termination models. Adds data migrations to clean up inconsistent
values from earlier versions that wrote empty strings when cables were
deleted.
Fixes #22768
2026-07-25 13:52:12 +02:00
Arthur
567940ebd7
add tests
2026-07-24 17:55:07 -07:00
Arthur
f8e7950004
22766 - Map GraphQL array length lookup to Django's len transform
2026-07-24 17:26:15 -07:00
bctiemann
e87899f208
Merge pull request #22734 from netbox-community/22486-webhook
...
22486 - Add Configurable timeout for webhooks
2026-07-24 14:51:11 -04:00
bctiemann
ba5018a3b4
Merge pull request #22763 from netbox-community/22497-delete
...
22497 Avoid redundant counter updates when deleting an object's parent
2026-07-24 14:37:24 -04:00
Arthur
b0f8cb4fbb
remove comment
2026-07-24 11:29:12 -07:00
Jeremy Stretch
bf363ab9b7
Closes #22593 : Deprecate legacy fields on rack model ( #22758 )
2026-07-24 09:35:38 -05:00
Jeremy Stretch
928d07e69f
Closes #22695 : Clean up test suite output ( #22760 )
2026-07-24 08:44:24 -04:00
github-actions
05e6e85042
Update source translation strings
2026-07-24 05:56:43 +00:00
Arthur
d6698ebc68
add test
2026-07-23 15:18:36 -07:00
Arthur
eeb44cd0c8
add test
2026-07-23 15:09:52 -07:00
Arthur
393c9d7307
cleanup
2026-07-23 14:23:49 -07:00
Arthur
b82016ce0d
Merge branch 'feature' into 22486-webhook
2026-07-23 14:04:10 -07:00
bctiemann
b6ff8654e0
Merge pull request #22755 from netbox-community/22737-deleting-a-profiled-cable-leaves-stale-connector-metadata-on
...
Fixes #22737 : Clear cached Cable Profile data when deleting Cables
2026-07-23 14:00:29 -04:00
bctiemann
d4670266d6
Merge pull request #22759 from netbox-community/22757-InlineFields-help-text
...
Closes #22757 : Extend InlineFields to support an arbitrary help text
2026-07-23 13:57:43 -04:00
Jeremy Stretch
728c84470b
Closes #22753 : Add `header_safe` Jinja2 filter for sanitizing webhook headers ( #22754 )
...
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-23 10:58:25 -05:00
bctiemann
cd2a43dc5f
Closes #22485 : Break the search signal wiring import cycle ( #22744 )
...
Closes #22485
2026-07-23 10:54:48 -05:00
bctiemann
e2bc76c8d3
Closes #22748 : ContentTypeField.to_internal_value() must respect its declared queryset ( #22749 )
2026-07-23 10:56:23 -04:00
Arthur Hanson
58b4209fe6
#22640 - Enforce ALLOWED_URL_SCHEMES for URLs in custom fields ( #22732 )
2026-07-23 10:33:53 -04:00
Jeremy Stretch
00dc86b3ee
Closes #22757 : Extend InlineFields to support an arbitrary help text
2026-07-23 10:17:44 -04:00
Martin Hauser
47102330eb
fix(dcim): Clear stale cable profile data on cable deletion
...
Clear cable_connector and cable_positions when deleting profiled cables.
Adds data migration to clean up stale values from earlier versions that
failed to clear these fields, preventing validation errors on affected
endpoints.
Fixes #22737
2026-07-23 15:06:08 +02:00
github-actions
ee8aaec433
Update source translation strings
2026-07-23 05:59:11 +00:00
bctiemann
1860713156
Merge pull request #22741 from netbox-community/22697-using-cancel-button-in-add-script-screen-returns-to-root
...
Fixes #22697 : Return to Scripts list when canceling ScriptModule creation
2026-07-22 19:45:08 -04:00
Jeremy Stretch
b62c384daf
Closes #22595 : Introduce BULK_UPDATE_CHUNK_SIZE config parameter to limit max number of rows per bulk update ( #22728 )
2026-07-22 22:44:33 +02:00
Sri Chandraja Reddy Allala
3e3d36cc2d
Fixes #22588 : Filter VLANs by Site Group scope when assigning to a prefix ( #22684 )
2026-07-22 12:44:09 -07:00
Martin Hauser
84a024babd
fix(ipam): Add comments field to ASN search indexing ( #22739 )
...
Include comments field in ASN search with weight 5000 to enable
full-text search on ASN comment content.
Fixes #22736
2026-07-22 11:58:48 -07:00
Jeremy Stretch
a24fbb06ce
Closes #22721 : Enable plugins to extend core GraphQL API
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-22 13:16:43 -04:00
bctiemann
0a3e9e3bdb
Merge pull request #22709 from netbox-community/22604-document-packaged-netbox-installation-and-release-workflow
...
Closes #22604 : Add Python package installation guide (experimental)
2026-07-22 12:24:39 -04:00
Martin Hauser
8ff8dab8a2
docs: Add Python package installation guide (experimental)
...
Introduce experimental Python package installation workflow as an
alternative to release archive and Git methods. Document package layout,
setup command, upgrade procedure, and migration path for existing
deployments.
Fixes #22604
2026-07-22 18:18:16 +02:00
Jeremy Stretch
d5dca3ae81
Closes #20972 : Add support for channelized subinterfaces ( #22647 )
2026-07-22 11:10:45 -05:00
Martin Hauser
bc51d04988
fix(extras): Set default return URL for ScriptModule create view
...
The ScriptModule add view now falls back to the Scripts list when no
explicit return URL is provided. Adds regression test to verify the
default return URL behavior.
Fixes #22697
2026-07-22 18:01:54 +02:00
Martin Hauser
98c94f5fc7
Fixes #22720 : Fix Virtual Chassis deletion with cross-chassis LAGs ( #22740 )
2026-07-22 10:43:26 -05:00
Jeremy Stretch
e79e33e9dd
Fixes #22729 : Escape names of file attachments in HTTP responses ( #22730 )
2026-07-22 10:38:22 -05:00
bctiemann
abe4a2cd9e
Closes #22685 : Add "any" lookup for tag & tag_id filters
2026-07-22 08:20:09 -04:00
Arthur Hanson
64519b722e
Fixes #22677 : Fix display of validation errors for Cable length fields ( #22733 )
2026-07-22 11:17:36 +02:00
bctiemann
e232ec00e3
Merge pull request #22724 from netbox-community/22719-rest-api-returns-500-instead-of-a-validation-error-for
...
Fixes #22719 : Correct malformed IP value validation
2026-07-21 22:05:17 -04:00
Arthur
30c61a3aa4
22486 - Add Configurable timeout for webhooks
2026-07-21 16:42:50 -07:00
Martin Hauser
f9a90f3cc9
fix(dcim): Correct format placeholder in Cluster location validation error ( #22725 )
...
Changes 'site' to 'location' in the error message format string to match
the actual parameter name being passed. Adds regression test coverage to
verify the error message displays the correct location name.
Fixes #22717
2026-07-21 08:27:54 -07:00
Jeremy Stretch
ab07002df8
Cleanup from merging main
2026-07-21 09:28:17 -04:00