Jason Novinger
31d1dcc9e3
Address PR feedback: Move FilterModifierMixin into base filter form classes
...
Incorporates FilterModifierMixin into NetBoxModelFilterSetForm and FilterForm,
making filter modifiers automatic for all filter forms throughout the application.
2025-11-20 05:22:27 -06:00
Jason Novinger
0e7553d0ae
Address PR feedback: Replace global filterset mappings with registry
2025-11-20 04:59:25 -06:00
Jason Novinger
77196ea80e
Add ChoiceField support to FilterModifierMixin
...
CI / build (20.x, 3.12) (push) Has been cancelled
CI / build (20.x, 3.13) (push) Has been cancelled
Enable filter modifiers for single-choice ChoiceFields in addition to the
existing MultipleChoiceField support. ChoiceFields can now display modifier
dropdowns with "Is", "Is Not", "Is Empty", and "Is Not Empty" options when
the corresponding FilterSet defines those lookups.
The mixin correctly verifies lookup availability against the FilterSet, so
modifiers only appear when multiple lookup options are actually supported.
Currently most FilterSets only define 'exact' for single-choice fields, but
this change enables future FilterSet enhancements to expose additional
lookups for ChoiceFields.
2025-11-07 16:55:43 -06:00
Jason Novinger
cc1aad0221
Enable filter form modifiers on Extras models
2025-11-07 16:49:53 -06:00
Jason Novinger
5b06947305
Enable filter form modifiers on Core models
2025-11-07 16:40:08 -06:00
Jason Novinger
ba24d59c29
Enable filter form modifiers on Users models
2025-11-07 16:33:45 -06:00
Jason Novinger
8fcdec8325
Enable filter form modifiers on Circuit models
2025-11-07 16:25:23 -06:00
Jason Novinger
9685338dbe
Enable filter form modifiers on Virtualization models
2025-11-07 16:15:00 -06:00
Jason Novinger
7c4994bd70
Enable filter form modifiers on VPN models
2025-11-07 16:06:05 -06:00
Jason Novinger
1eb20924b8
Enable filter form modifiers on IPAM models
2025-11-07 16:01:20 -06:00
Jason Novinger
87970be51b
Enable filter form modifiers on Wireless models
2025-11-07 15:49:35 -06:00
Jason Novinger
aba61ab2f3
Enable filter form modifiers on Tenancy models
2025-11-07 15:47:14 -06:00
Jason Novinger
9df5895a63
Enable filter form modifiers on DCIM models
2025-11-07 15:42:24 -06:00
Jason Novinger
f6fd1c3f95
Fix CircuitFilterForm inheritance
CI / build (20.x, 3.12) (push) Waiting to run
CI / build (20.x, 3.13) (push) Waiting to run
2025-11-06 11:38:22 -06:00
Jason Novinger
5913ea8a8b
Fix import order
CI / build (20.x, 3.12) (push) Has been cancelled
CI / build (20.x, 3.13) (push) Has been cancelled
2025-11-04 12:34:23 -06:00
Jason Novinger
31e6a5e86d
Remove extraneous TS comments
2025-11-04 11:08:09 -06:00
Jason Novinger
149b024eeb
Fixes #7604 : Add filter modifier dropdowns for advanced lookup operators
...
Implements dynamic filter modifier UI that allows users to select lookup operators
(exact, contains, starts with, regex, negation, empty/not empty) directly in filter
forms without manual URL parameter editing.
Supports filters for all scalar types and strings, as well as some
related object filters. Explicitly does not support filters on fields
that use APIWidget. That has been broken out in to follow up work.
**Backend:**
- FilterModifierWidget: Wraps form widgets with lookup modifier dropdown
- FilterModifierMixin: Auto-enhances filterset fields with appropriate lookups
- Extended lookup support: Adds negation (n), regex, iregex, empty_true/false lookups
- Field-type-aware: CharField gets text lookups, IntegerField gets comparison operators, etc.
**Frontend:**
- TypeScript handler syncs modifier dropdown with URL parameters
- Dynamically updates form field names (serial → serial__ic) on modifier change
- Flexible-width modifier dropdowns with semantic CSS classes
2025-11-04 11:07:18 -06:00
bctiemann
bcffc383bf
Closes : #17936 - GFK serializer field ( #20706 )
...
CI / build (20.x, 3.12) (push) Has been cancelled
CI / build (20.x, 3.13) (push) Has been cancelled
CodeQL / Analyze (${{ matrix.language }}) (none, actions) (push) Has been cancelled
CodeQL / Analyze (${{ matrix.language }}) (none, javascript-typescript) (push) Has been cancelled
CodeQL / Analyze (${{ matrix.language }}) (none, python) (push) Has been cancelled
* Establish GFKSerializerField and replace get_* methods in circuits.py
* Set read_only=True
* Apply GFKSerializerField to all matching SerializerMethodFields
* Use GFKSerializerField for ObjectChangeSerializer.changed_object and EventRuleSerializer.action_object
2025-11-04 10:01:22 -05:00
Jeremy Stretch
068d493cc6
Merge branch 'main' into feature
CI / build (20.x, 3.12) (push) Has been cancelled
CI / build (20.x, 3.13) (push) Has been cancelled
CodeQL / Analyze (${{ matrix.language }}) (none, actions) (push) Has been cancelled
CodeQL / Analyze (${{ matrix.language }}) (none, javascript-typescript) (push) Has been cancelled
CodeQL / Analyze (${{ matrix.language }}) (none, python) (push) Has been cancelled
2025-10-29 13:47:01 -04:00
Jo
80f03daad6
Improved docs on background jobs on instances ( #20489 )
2025-10-29 10:15:49 -07:00
github-actions
1fc849eb40
Update source translation strings
CodeQL / Analyze (${{ matrix.language }}) (none, actions) (push) Waiting to run
CodeQL / Analyze (${{ matrix.language }}) (none, javascript-typescript) (push) Waiting to run
CodeQL / Analyze (${{ matrix.language }}) (none, python) (push) Waiting to run
2025-10-29 05:02:12 +00:00
Jeremy Stretch
43cb476223
Release v4.4.5
CI / build (20.x, 3.10) (push) Waiting to run
CI / build (20.x, 3.11) (push) Waiting to run
CI / build (20.x, 3.12) (push) Waiting to run
CodeQL / Analyze (${{ matrix.language }}) (none, actions) (push) Waiting to run
CodeQL / Analyze (${{ matrix.language }}) (none, javascript-typescript) (push) Waiting to run
CodeQL / Analyze (${{ matrix.language }}) (none, python) (push) Waiting to run
v4.4.5
2025-10-28 14:34:18 -04:00
Martin Hauser
d6f756d315
feat(tables): Add ContactsColumnMixin to multiple tables
...
Integrate `ContactsColumnMixin` into various IPAM and VPN tables to
improve contact management. Updates table fields to include `contacts`.
Fixes #20700
2025-10-28 13:34:27 -04:00
Martin Hauser
afc62b6ffd
fix(ipam): Correct VLAN ID range calculation logic
...
Adjust VLAN ID range calculation to use half‑open intervals for
consistency. Add a test to validate `_total_vlan_ids`.
Fixes #20610
2025-10-28 13:14:34 -04:00
bctiemann
3d4841f17f
Merge pull request #20612 from pheus/20301-add-clear-all-option-to-user-notifications-dropdown
...
Closes #20301 : Add "Dismiss all" action to notifications dropdown
2025-10-28 12:08:53 -04:00
Alexander Zimin
2aefb3af73
Add contacts field to ip addresses table view #20692
2025-10-28 08:48:36 -04:00
github-actions
4eff4d6a4a
Update source translation strings
CodeQL / Analyze (${{ matrix.language }}) (none, actions) (push) Waiting to run
CodeQL / Analyze (${{ matrix.language }}) (none, javascript-typescript) (push) Waiting to run
CodeQL / Analyze (${{ matrix.language }}) (none, python) (push) Waiting to run
2025-10-28 05:03:24 +00:00
rinna11
9381564cab
Fixes #20422 : Allow Aggregate and Prefix to filter by family in GraphQL ( #20626 )
...
CI / build (20.x, 3.10) (push) Waiting to run
CI / build (20.x, 3.11) (push) Waiting to run
CI / build (20.x, 3.12) (push) Waiting to run
CodeQL / Analyze (${{ matrix.language }}) (none, actions) (push) Waiting to run
CodeQL / Analyze (${{ matrix.language }}) (none, javascript-typescript) (push) Waiting to run
CodeQL / Analyze (${{ matrix.language }}) (none, python) (push) Waiting to run
Co-authored-by: Rinna Izumi <rizumi@bethel.jw.org >
Co-authored-by: Jason Novinger <jnovinger@gmail.com >
2025-10-27 09:02:28 -05:00
Jeremy Stretch
3d143d635b
Closes #20675 : Enable NetBox Copilot integration ( #20682 )
2025-10-27 08:54:38 -05:00
Martin Hauser
77307b3c91
fix(users): Disable sorting on Permission flag columns
...
Mark `can_view`, `can_add`, `can_change`, and `can_delete` columns in
the Permissions list as `orderable=False`. Sorting by these computed
flags persisted an invalid sort key which triggers a `FieldError` when
loading `/users/permissions/`.
Fixes #20655
2025-10-27 09:25:36 -04:00
bctiemann
bf83299a93
Merge pull request #20684 from netbox-community/circuit-swap
...
CI / build (20.x, 3.12) (push) Has been cancelled
CI / build (20.x, 3.13) (push) Has been cancelled
CodeQL / Analyze (${{ matrix.language }}) (none, actions) (push) Has been cancelled
CodeQL / Analyze (${{ matrix.language }}) (none, javascript-typescript) (push) Has been cancelled
CodeQL / Analyze (${{ matrix.language }}) (none, python) (push) Has been cancelled
20683 - Remove circuit termination swap
2025-10-27 09:24:56 -04:00
bctiemann
aa4571b61f
Merge pull request #20672 from pheus/20389-allow-all-bulk-rename
...
Fixes #20389 : Add FilterSet support to BulkRenameView
2025-10-27 09:23:39 -04:00
Jo
56d9146323
Fixes #20499 : Documented ObjectListView quick search feature for plugins ( #20500 )
CodeQL / Analyze (${{ matrix.language }}) (none, actions) (push) Waiting to run
CodeQL / Analyze (${{ matrix.language }}) (none, javascript-typescript) (push) Waiting to run
CodeQL / Analyze (${{ matrix.language }}) (none, python) (push) Waiting to run
2025-10-26 20:59:59 -05:00
github-actions
e192f64dd2
Update source translation strings
CodeQL / Analyze (${{ matrix.language }}) (none, actions) (push) Waiting to run
CodeQL / Analyze (${{ matrix.language }}) (none, javascript-typescript) (push) Waiting to run
CodeQL / Analyze (${{ matrix.language }}) (none, python) (push) Waiting to run
2025-10-26 05:03:34 +00:00
Martin Hauser
d433a28524
Fixes #20646 : Prevent cables from connecting to marked objects ( #20678 )
CodeQL / Analyze (${{ matrix.language }}) (none, actions) (push) Waiting to run
CodeQL / Analyze (${{ matrix.language }}) (none, javascript-typescript) (push) Waiting to run
CodeQL / Analyze (${{ matrix.language }}) (none, python) (push) Waiting to run
CI / build (20.x, 3.10) (push) Has been cancelled
CI / build (20.x, 3.11) (push) Has been cancelled
CI / build (20.x, 3.12) (push) Has been cancelled
2025-10-25 10:22:03 -05:00
Pl0xym0r
dbfdf318ad
Closes #20459 : clean is_oob and is_primary on bulk_import ( #20657 )
2025-10-25 10:10:20 -05:00
Arthur
9b064e678d
20683 remove swap Circuit Terminations
2025-10-24 14:46:17 -07:00
Jeremy Stretch
be74436884
Closes #20304 : Object owners ( #20634 )
CI / build (20.x, 3.12) (push) Has been cancelled
CI / build (20.x, 3.13) (push) Has been cancelled
CodeQL / Analyze (${{ matrix.language }}) (none, actions) (push) Has been cancelled
CodeQL / Analyze (${{ matrix.language }}) (none, javascript-typescript) (push) Has been cancelled
CodeQL / Analyze (${{ matrix.language }}) (none, python) (push) Has been cancelled
2025-10-24 13:08:01 -07:00
Martin Hauser
639bc4462b
Fixes #20541 : Enhance filter methods with dynamic prefixing ( #20579 )
CI / build (20.x, 3.11) (push) Waiting to run
CI / build (20.x, 3.12) (push) Waiting to run
CodeQL / Analyze (${{ matrix.language }}) (none, actions) (push) Waiting to run
CI / build (20.x, 3.10) (push) Waiting to run
CodeQL / Analyze (${{ matrix.language }}) (none, javascript-typescript) (push) Waiting to run
CodeQL / Analyze (${{ matrix.language }}) (none, python) (push) Waiting to run
2025-10-24 14:58:31 -05:00
Alexander
52d4498caf
Add color to PowerOutletTemplate ( #20530 )
2025-10-24 11:11:55 -07:00
Jeremy Stretch
1c59d411f7
Apply the "netbox" label automatically for all new issues ( #20666 )
CodeQL / Analyze (${{ matrix.language }}) (none, python) (push) Waiting to run
CodeQL / Analyze (${{ matrix.language }}) (none, actions) (push) Waiting to run
CodeQL / Analyze (${{ matrix.language }}) (none, javascript-typescript) (push) Waiting to run
2025-10-24 09:27:41 -05:00
Martin Hauser
ac7a4ec4a3
feat(views): Add FilterSet support to BulkRenameView
...
Allow passing a FilterSet to BulkRenameView for consistent behavior with
BulkEditView and BulkDeleteView. Enables the
"Select all N matching query" functionality to expand across the full
queryset. Updates logic to handle PK lists appropriately when editing
all matched objects.
Fixes #20389
2025-10-24 14:43:35 +02:00
github-actions
0cf58e62b2
Update source translation strings
CodeQL / Analyze (${{ matrix.language }}) (none, actions) (push) Waiting to run
CodeQL / Analyze (${{ matrix.language }}) (none, javascript-typescript) (push) Waiting to run
CodeQL / Analyze (${{ matrix.language }}) (none, python) (push) Waiting to run
2025-10-24 05:02:27 +00:00
Jason Novinger
fb8d41b527
Fixes #20641 : Handle viewsets with queryset=None in get_view_name() ( #20642 )
...
CI / build (20.x, 3.10) (push) Waiting to run
CI / build (20.x, 3.11) (push) Waiting to run
CI / build (20.x, 3.12) (push) Waiting to run
CodeQL / Analyze (${{ matrix.language }}) (none, actions) (push) Waiting to run
CodeQL / Analyze (${{ matrix.language }}) (none, javascript-typescript) (push) Waiting to run
CodeQL / Analyze (${{ matrix.language }}) (none, python) (push) Waiting to run
The get_view_name() utility function crashed with AttributeError when
called on viewsets that override get_queryset() without setting a
class-level queryset attribute (e.g., ObjectChangeViewSet).
This pattern became necessary in #20089 to force re-evaluation of
valid_models() on each request, ensuring ObjectChange querysets reflect
current ContentType state.
Added None check to fall back to DRF's default view naming when no
class-level queryset exists.
2025-10-23 09:39:49 -07:00
bctiemann
ae5d7911f9
Merge pull request #20665 from netbox-community/20637-improve-device-q-filter
...
CI / build (20.x, 3.10) (push) Waiting to run
CI / build (20.x, 3.11) (push) Waiting to run
CI / build (20.x, 3.12) (push) Waiting to run
CodeQL / Analyze (${{ matrix.language }}) (none, actions) (push) Has been cancelled
CodeQL / Analyze (${{ matrix.language }}) (none, javascript-typescript) (push) Has been cancelled
CodeQL / Analyze (${{ matrix.language }}) (none, python) (push) Has been cancelled
Fixes #20637 : Omit inventory item serials from device search filter to improve performance
2025-10-23 11:08:22 -04:00
Jeremy Stretch
3bd0186870
Fixes #20637 : Omit inventory item serials from device search filter to improve performance
2025-10-23 10:11:08 -04:00
bctiemann
09ce8a808d
Merge pull request #20651 from netbox-community/19872-script-validation-errors
...
Fixes #19872 : Display script form validation errors
2025-10-23 09:59:29 -04:00
Martin Hauser
8eaff9dce7
feat(extras): Add "Dismiss all" action to notifications dropdown
...
Introduce a view to allow users to dismiss all unread notifications with
a single action. Update the notifications' template to include a
"Dismiss all" button for enhanced usability. This addition streamlines
notification management and improves the user experience.
Fixes #20301
2025-10-22 13:59:54 +02:00
github-actions
cb3308a166
Update source translation strings
CodeQL / Analyze (${{ matrix.language }}) (none, actions) (push) Has been cancelled
CodeQL / Analyze (${{ matrix.language }}) (none, javascript-typescript) (push) Has been cancelled
CodeQL / Analyze (${{ matrix.language }}) (none, python) (push) Has been cancelled
2025-10-22 05:02:23 +00:00
Jason Novinger
5fbae8407e
Only show non-rendered field errors in toast
...
When script form validation fails, display error messages for fields not
in fieldsets. Fields in fieldsets show inline errors only; hidden fields
show toast notifications to provide feedback instead of failing silently.
2025-10-21 11:54:46 -05:00