Replace whole-table HTML string counting in AnnotatedIPAddressTableTest
`test_ipaddress_has_checkbox_iprange_does_not` with row-specific `pk`
cell assertions.
This avoids false failures when an `IPAddress` and `IPRange` happen to
share the same numeric primary key and makes the test stable in CI.
Fixes#21971
Expose the current PostgreSQL schema from the system view and include it
in the exported system data.
Load the Database tab on demand with HTMX so schema introspection only
runs when the panel is opened, while keeping the export path eager.
Use the active PostgreSQL schema instead of assuming `public`, move the
schema helpers into `core.utils`, and tidy the accordion toggle styling.
Add a `should_render()` hook to the `Panel` base class and override it
in `ObjectsTablePanel` to check the requesting user's view permission
for the panel's model. This prevents object detail pages from issuing
HTMX requests for related tables (e.g. locations, devices, image
attachments) that return 403 and disrupt the page.
Fixes#21893
Co-authored-by: Jeremy Stretch <jstretch@netboxlabs.com>
* Misc updates to the contributing guide
* Update CONTRIBUTING.md
Co-authored-by: Martin Hauser <mhauser@netboxlabs.com>
---------
Co-authored-by: Martin Hauser <mhauser@netboxlabs.com>
Bump actions/create-github-app-token from v1 to v3.1.1 and
EndBug/add-and-commit from v9.1.4 to v10.0.0, both pinned to full commit
SHAs for improved supply chain security.
Fixes#21896
Add validation to reject unknown custom field names during API updates.
Ensure model.clean() normalization is preserved in serializers to remove
stale custom field data from both the database and change logs.
Filter stale keys during serialization to prevent lingering references.
Fixes#21529
Update STORAGES configuration examples to include all three storage
backends (default, staticfiles, scripts) with complete option sets.
Add region_name to environment variable example and clarify usage for
S3-compatible services.
Fixes#21864
Make image attachment filename generation use Django's base collision
handling so overwrite-style storage backends behave like local file
storage.
This preserves the original filename for the first upload, adds a
suffix only on collision, and avoids duplicate image paths in object
change records.
Add regression tests for path generation and collision handling.
Fixes#21801