Rebuilds all dist files using the same platform as CI (Linux, Node 20)
to ensure verify-bundles passes. Prior commits used macOS builds which
produce different output than the Linux esbuild/sass binaries.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The committed netbox.js was produced by an older build; re-running
yarn bundle with the current yarn.lock generates slightly different
output. No source changes.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Runs yarn bundle to bring dist/graphiql/ and the compiled CSS files in
sync with the package versions resolved by the current yarn.lock (last
updated in v4.6.1). No source changes — purely dependency version drift.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds warning and examples for validating NetBox objects before saving
in Custom Scripts. Direct ORM writes bypass UI/API validation and can
introduce invalid data. Recommends calling `full_clean()` explicitly.
Fixes#22249
Extract _NumericLookupMixin with shared get_filter() and filter() methods.
IntegerLookup, BigIntegerLookup, and FloatLookup each inherit from it and
declare only their type-specific fields, eliminating triplicated logic.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Require a Circuit Termination target when a termination type has been
selected, so blank dynamic target fields surface an inline form error
instead of falling through to generic GFK validation for termination_id.
Add a model-level guard for the same invalid state before generic
GenericForeignKey validation runs.
Fixes#22163
Fix miscounting of total_vlan_ids when VLANGroup vid_ranges use
non-canonical bounds (e.g. '[]'). Normalize ranges to '[)' on save and
add migration to recompute existing totals. Prevent division-by-zero in
utilization queries for legacy rows with miscounted totals.
Fixes#22228
Remove `@override_settings(EXEMPT_VIEW_PERMISSIONS=['*'])` decorators
across test suites, replacing them with explicit `add_permissions()`
calls for required view permissions. Improves test clarity and ensures
permission checks are properly validated.
Fixes#22091
Have TableConfigSerializer inherit from ChangeLogMessageSerializer so
changelog_message values submitted via the REST API are recorded on the
resulting ObjectChange.
This aligns table configs with other changelog-tracked extras models.
Fixes#22236
Add test ensuring each model-backed table has a corresponding test case
inheriting from StandardTableTestCase with correct table attribute set.
Includes helper method to import table test classes by model.
Fixes#22110
Adds the cable_id FK companion filter and 9 termination object filters
(consoleport_id, consoleserverport_id, powerport_id, poweroutlet_id,
interface_id, frontport_id, rearport_id, powerfeed_id,
circuittermination_id), mirroring the CableFilterSet pattern.
Adds a corresponding CableTerminationTestCase using ChangeLoggedFilterSetTests
so future missing-filter regressions are caught automatically.
Fixes#22209
Prevent TypeError when TableConfig.ordering is None by adding explicit
null check in clean(). Add regression test covering unset ordering
field.
Fixes#22206
Guard max(releases) against an empty iterable to prevent a ValueError
when the release-check endpoint returns only prereleases, dev releases,
or entries lacking a tag_name.
Fixes#22202
Add test suites for SystemHousekeepingJob, SyncDataSourceJob, and
ScriptJob covering housekeeping tasks, data source synchronization,
script rollback paths, and request processor integration.
Includes helpers to safely instantiate runners without accumulating
log handlers across tests, plus a DummyScript test double.
Fixes#22125
Add test coverage for Django management commands across core, dcim,
extras, ipam, and utilities apps.
Tests verify command argument handling, error cases, and integration
with mocked dependencies using patches and test doubles.
Fixes#22124
Bump under-indented continuation lines in the Parameters sections of
RelatedObjectAttr, GenericForeignKeyAttr, and AddressAttr so griffe's
Google parser (used by zensical) no longer warns about confusing
indentation. Whitespace-only change; no rendered output differs.
Replace JINJA_ENV_PARAMS_WITH_PATH_IMPORT with JINJA_ENV_PARAMS_ALLOWED,
a whitelist of permitted Jinja2 Environment parameters. Unknown keys are
rejected by clean() and stripped at render time.
The undefined parameter resolves values via direct class mapping instead
of import_string(). The finalize parameter is deprecated and blocked
from new use via clean(); existing stored values continue to resolve via
import_string() to preserve backward compatibility. No data migrations.
Fix typo in post_save signal checking `interface_b.cable` instead of
`interface_b.wireless_link`, preventing unnecessary re-saves.
Add regression test verifying interfaces aren't logged on link re-save.
Fixes#22183
Allow IP ranges where start_address equals end_address to model
single-IP pools like DHCP or NAT reservations. Add validation tests,
filterset coverage, and display logic to render both endpoints.
Fixes#21993
Add a description field to the rack unit serializer containing the
occupying Device, allowing the Rack position dropdown to show Device
context while keeping the existing display value unchanged.
Co-authored-by: Martin Hauser <mhauser@netboxlabs.com>
Add comprehensive test coverage for signal handlers in circuits, core,
dcim, extras, ipam, users, virtualization, and wireless, including
cable path rebuilding, change logging, data source sync, scope
propagation, and notification dispatch logic.
Fixes#22098