Enhancements
- #23470 - Add 3C8P, 3C12P, and 4C12P trunk cable profiles
Performance Improvements
- #23505 - Avoid redundant query conditions when filtering by a non-unique name or slug, such as MAC addresses by
interfaceor device components bydevice - #23562 - Batch the loading of related objects read by export templates, rather than querying them for each object
- #23563 - Batch the loading of related objects when rendering global search results
- #23564 - Batch the loading of cable terminations and their parent objects when listing cables, cable terminations, ports, and power feeds via the REST API
- #23565 - Batch the loading of deferred fields and related objects which the GraphQL query optimizer can't anticipate, such as those read when resolving
link_peersandconnected_endpoints
Bug Fixes
- #23185 - Prevent the deletion of a region or site group from also deleting the circuit terminations attached to its sites and locations
- #23260 - Fix exception when applying migration
dcim.0245_consolidate_unique_constraintson installations whose location, region, or site group unique constraints have auto-generated names - #23407 - Restrict the image attachments listed under an object's Images tab to those the user is permitted to view
- #23446 - Prevent duplicate submissions of object add and edit forms (such as duplicate image attachments) by disabling the submit button after the first click
- #23447 - Fix exception when ordering REST API results by an object count field (e.g.
count_ipaddresses) which is omitted from the response bybrieforfields - #23477 - Include the
asn_countfield in the REST API representation of ASN ranges - #23478 - Validate
{module}placeholders in component labels and module bay templates when installing a module, rather than raising an exception or resolving them to an empty string - #23486 - Record pre-change data in the change log for virtual chassis members when creating, editing, or deleting a virtual chassis
- #23510 - Prevent a queued background job from running after it has been deleted or marked as failed
- #23511 - Display the correct file path on a script's Source tab, and identify the script file (rather than
<string>) in error tracebacks - #23534 - Fix
IntegrityErrorexception when completing a job whose owner already has a notification for it - #23535 - Prevent a duplicate recurring sync job from being created when a data source is saved as its scheduled sync finishes
- #23542 - Fix
FileNotFoundErrorexception when synchronizing a local data source whose subdirectory paths repeat the root path (e.g./scripts/scripts_old/) - #23558 - Fix errors when editing an API token without permission to view users, or from the user's own API tokens view
- #23559 - Fix the prefetching of related objects shown as display attributes in global search results
- #23574 - Fix exception when passing
nullto several filters (e.g.present_in_vrf_id,available_at_site, andinterface_id), and support filtering data sources bysync_interval=null - #23584 - Enforce SSO allowlist settings (e.g.
WHITELISTED_DOMAINSandWHITELISTED_EMAILS) by addingauth_allowedto the defaultSOCIAL_AUTH_PIPELINE - #23585 - Enforce view permissions on parent and related objects when adding individual components or component templates, and when bulk adding prefixes, IP addresses, and VLANs
- #23595 - Implement
update_dependent_objects()for wireless links, circuit terminations, and channel subinterfaces, to rebuild cable paths after writes which bypasssave() - #23596 - Record pre-change data in the change log for components adopted when installing a module
- #23597 - Record change log entries and trigger event rules for port mappings created from device type and module type templates, or moved with a module to another device