mirror of
https://github.com/netbox-community/netbox.git
synced 2026-01-11 21:10:29 +01:00
Closed
opened 2025-12-29 22:21:35 +01:00 by adam
·
0 comments
No Branch/Tag Specified
main
update-changelog-comments-docs
feature-removal-issue-type
20911-dropdown
20239-plugin-menu-classes-mutable-state
21097-graphql-id-lookups
feature
fix_module_substitution
20923-dcim-templates
20044-elevation-stuck-lightmode
feature-ip-prefix-link
v4.5-beta1-release
20068-import-moduletype-attrs
20766-fix-german-translation-code-literals
20378-del-script
7604-filter-modifiers-v3
circuit-swap
12318-case-insensitive-uniqueness
20637-improve-device-q-filter
20660-script-load
19724-graphql
20614-update-ruff
14884-script
02496-max-page
19720-macaddress-interface-generic-relation
19408-circuit-terminations-export-templates
20203-openapi-check
fix-19669-api-image-download
7604-filter-modifiers
19275-fixes-interface-bulk-edit
fix-17794-get_field_value_return_list
11507-show-aggregate-and-rir-on-api
9583-add_column_specific_search_field_to_tables
v4.5.0
v4.4.10
v4.4.9
v4.5.0-beta1
v4.4.8
v4.4.7
v4.4.6
v4.4.5
v4.4.4
v4.4.3
v4.4.2
v4.4.1
v4.4.0
v4.3.7
v4.4.0-beta1
v4.3.6
v4.3.5
v4.3.4
v4.3.3
v4.3.2
v4.3.1
v4.3.0
v4.2.9
v4.3.0-beta2
v4.2.8
v4.3.0-beta1
v4.2.7
v4.2.6
v4.2.5
v4.2.4
v4.2.3
v4.2.2
v4.2.1
v4.2.0
v4.1.11
v4.1.10
v4.1.9
v4.1.8
v4.2-beta1
v4.1.7
v4.1.6
v4.1.5
v4.1.4
v4.1.3
v4.1.2
v4.1.1
v4.1.0
v4.0.11
v4.0.10
v4.0.9
v4.1-beta1
v4.0.8
v4.0.7
v4.0.6
v4.0.5
v4.0.3
v4.0.2
v4.0.1
v4.0.0
v3.7.8
v3.7.7
v4.0-beta2
v3.7.6
v3.7.5
v4.0-beta1
v3.7.4
v3.7.3
v3.7.2
v3.7.1
v3.7.0
v3.6.9
v3.6.8
v3.6.7
v3.7-beta1
v3.6.6
v3.6.5
v3.6.4
v3.6.3
v3.6.2
v3.6.1
v3.6.0
v3.5.9
v3.6-beta2
v3.5.8
v3.6-beta1
v3.5.7
v3.5.6
v3.5.5
v3.5.4
v3.5.3
v3.5.2
v3.5.1
v3.5.0
v3.4.10
v3.4.9
v3.5-beta2
v3.4.8
v3.5-beta1
v3.4.7
v3.4.6
v3.4.5
v3.4.4
v3.4.3
v3.4.2
v3.4.1
v3.4.0
v3.3.10
v3.3.9
v3.4-beta1
v3.3.8
v3.3.7
v3.3.6
v3.3.5
v3.3.4
v3.3.3
v3.3.2
v3.3.1
v3.3.0
v3.2.9
v3.2.8
v3.3-beta2
v3.2.7
v3.3-beta1
v3.2.6
v3.2.5
v3.2.4
v3.2.3
v3.2.2
v3.2.1
v3.2.0
v3.1.11
v3.1.10
v3.2-beta2
v3.1.9
v3.2-beta1
v3.1.8
v3.1.7
v3.1.6
v3.1.5
v3.1.4
v3.1.3
v3.1.2
v3.1.1
v3.1.0
v3.0.12
v3.0.11
v3.0.10
v3.1-beta1
v3.0.9
v3.0.8
v3.0.7
v3.0.6
v3.0.5
v3.0.4
v3.0.3
v3.0.2
v3.0.1
v3.0.0
v2.11.12
v3.0-beta2
v2.11.11
v2.11.10
v3.0-beta1
v2.11.9
v2.11.8
v2.11.7
v2.11.6
v2.11.5
v2.11.4
v2.11.3
v2.11.2
v2.11.1
v2.11.0
v2.10.10
v2.10.9
v2.11-beta1
v2.10.8
v2.10.7
v2.10.6
v2.10.5
v2.10.4
v2.10.3
v2.10.2
v2.10.1
v2.10.0
v2.9.11
v2.10-beta2
v2.9.10
v2.10-beta1
v2.9.9
v2.9.8
v2.9.7
v2.9.6
v2.9.5
v2.9.4
v2.9.3
v2.9.2
v2.9.1
v2.9.0
v2.9-beta2
v2.8.9
v2.9-beta1
v2.8.8
v2.8.7
v2.8.6
v2.8.5
v2.8.4
v2.8.3
v2.8.2
v2.8.1
v2.8.0
v2.7.12
v2.7.11
v2.7.10
v2.7.9
v2.7.8
v2.7.7
v2.7.6
v2.7.5
v2.7.4
v2.7.3
v2.7.2
v2.7.1
v2.7.0
v2.6.12
v2.6.11
v2.6.10
v2.6.9
v2.7-beta1
Solcon-2020-01-06
v2.6.8
v2.6.7
v2.6.6
v2.6.5
v2.6.4
v2.6.3
v2.6.2
v2.6.1
v2.6.0
v2.5.13
v2.5.12
v2.6-beta1
v2.5.11
v2.5.10
v2.5.9
v2.5.8
v2.5.7
v2.5.6
v2.5.5
v2.5.4
v2.5.3
v2.5.2
v2.5.1
v2.5.0
v2.4.9
v2.5-beta2
v2.4.8
v2.5-beta1
v2.4.7
v2.4.6
v2.4.5
v2.4.4
v2.4.3
v2.4.2
v2.4.1
v2.4.0
v2.3.7
v2.4-beta1
v2.3.6
v2.3.5
v2.3.4
v2.3.3
v2.3.2
v2.3.1
v2.3.0
v2.2.10
v2.3-beta2
v2.2.9
v2.3-beta1
v2.2.8
v2.2.7
v2.2.6
v2.2.5
v2.2.4
v2.2.3
v2.2.2
v2.2.1
v2.2.0
v2.1.6
v2.2-beta2
v2.1.5
v2.2-beta1
v2.1.4
v2.1.3
v2.1.2
v2.1.1
v2.1.0
v2.0.10
v2.1-beta1
v2.0.9
v2.0.8
v2.0.7
v2.0.6
v2.0.5
v2.0.4
v2.0.3
v2.0.2
v2.0.1
v2.0.0
v2.0-beta3
v1.9.6
v1.9.5
v2.0-beta2
v1.9.4-r1
v1.9.3
v2.0-beta1
v1.9.2
v1.9.1
v1.9.0-r1
v1.8.4
v1.8.3
v1.8.2
v1.8.1
v1.8.0
v1.7.3
v1.7.2-r1
v1.7.1
v1.7.0
v1.6.3
v1.6.2-r1
v1.6.1-r1
1.6.1
v1.6.0
v1.5.2
v1.5.1
v1.5.0
v1.4.2
v1.4.1
v1.4.0
v1.3.2
v1.3.1
v1.3.0
v1.2.2
v1.2.1
v1.2.0
v1.1.0
v1.0.7-r1
v1.0.7
v1.0.6
v1.0.5
v1.0.4
v1.0.3-r1
v1.0.3
1.0.0
Labels
Clear labels
beta
breaking change
complexity: high
complexity: low
complexity: medium
needs milestone
netbox
pending closure
plugin candidate
pull-request
severity: high
severity: low
severity: medium
status: accepted
status: backlog
status: blocked
status: duplicate
status: needs owner
status: needs triage
status: revisions needed
status: under review
topic: GraphQL
topic: Internationalization
topic: OpenAPI
topic: UI/UX
topic: cabling
topic: event rules
topic: htmx navigation
topic: industrialization
topic: migrations
topic: plugins
topic: scripts
topic: templating
topic: testing
type: bug
type: deprecation
type: documentation
type: feature
type: housekeeping
type: translation
Mirrored from GitHub Pull Request
No Label
pull-request
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: starred/netbox#12440
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/netbox-community/netbox/pull/2772
Author: @lampwins
Created: 1/11/2019
Status: ✅ Merged
Merged: 1/16/2019
Merged by: @lampwins
Base:
develop← Head:select2-ui📝 Commits (10+)
28a02e9initial select2 supportf3cfc17fix processing of initial tags5285b69updated filter-for attr handling81a0889initial static select2 fields7a5a73cfixed whitespacefca97f9Merge branch 'develop' of github.com:digitalocean/netbox into select2-uic27cea9select2 for all create/edit forms in dcim6d5d9c8implemented #2590 - improved color picker with actual colors72d5c6f#2590 changelogbf8d57cDCIM filter forms select2📊 Changes
82 files changed (+16238 additions, -2694 deletions)
View changed files
📝
.gitignore(+2 -0)📝
CHANGELOG.md(+1910 -1903)📝
netbox/circuits/forms.py(+62 -28)📝
netbox/dcim/filters.py(+11 -0)📝
netbox/dcim/forms.py(+384 -212)📝
netbox/ipam/forms.py(+256 -129)📝
netbox/project-static/css/base.css(+111 -0)📝
netbox/project-static/js/forms.js(+194 -108)➕
netbox/project-static/select2-4.0.5/LICENSE.md(+21 -0)➕
netbox/project-static/select2-4.0.5/README.md(+123 -0)➕
netbox/project-static/select2-4.0.5/css/select2.css(+484 -0)➕
netbox/project-static/select2-4.0.5/css/select2.min.css(+1 -0)➕
netbox/project-static/select2-4.0.5/js/i18n/af.js(+3 -0)➕
netbox/project-static/select2-4.0.5/js/i18n/ar.js(+3 -0)➕
netbox/project-static/select2-4.0.5/js/i18n/az.js(+3 -0)➕
netbox/project-static/select2-4.0.5/js/i18n/bg.js(+3 -0)➕
netbox/project-static/select2-4.0.5/js/i18n/bs.js(+3 -0)➕
netbox/project-static/select2-4.0.5/js/i18n/ca.js(+3 -0)➕
netbox/project-static/select2-4.0.5/js/i18n/cs.js(+3 -0)➕
netbox/project-static/select2-4.0.5/js/i18n/da.js(+3 -0)...and 62 more files
📄 Description
Fixes: #2753
This PR formally implements support for Select2 as a NetBox standard replacement for most all regular Select fields in the web UI. Select2 allows a myriad of functionality including API backed selection, paging results, styling, and much more. Implementing Select2 allows us to consolidate many of the little things we have tried to do in the UI over time, with one awesome solution! Here is a summary of the changes.
Replacements
Livesearchform widget and related form mechanics has been entirely replaced and removed.Code Changes
NetBox has been using the concept of "Chained Choice Fields" for some time now and there are several intricate parts, particularly within the form widgets that make this all work. These mechanics have been refined, refactored, and/or implemented in new ways. Namely, there are now formal widget class params for
filter_for,exclusion,conditionalandadditionalelement attributes. Also, by inverting the logic for howfilter_forattributes are resolved before making an AJAX request, we completely remove the need to defined these as variable templates in theapi_url, (e.g.?site_id={{site}}&device_id={{device}}). Note that template variables are still supported in the URL path.A new
StaticSelect2()form widget has been introduced to support rendering a Select2 field for static choice fields. There is an important but subtle point there, that most everything is now controlled via the Django form classes. This means we should rarely have to touch the templates/JS to manipulate Select2 functionality down the road.While all forms have seen slight modifications to adhere to the new APIs described above, a handful of forms have seen more drastic changes either because some fields like Livesearch are no longer needed, or because the overall flow of the form was not conducive to Select2 for some obtuse reason(s). Notably, the CableCreate and IPAddressAssign forms come to mind.
Most all of the list filter forms make use of annotated result sets to denote object counts for related fields. Sadly, we do not have the reasonable ability to do the same thing with API based result sets. This means the annotations were stripped away from the initial query sets (those rendered by the form itself). If the user base presents sufficient backlash to this, we may have to investigate what it would take to do this in the API.
The Region model is based on an MPTT tree field and its built-in form field produces result sets prefixed by a series of hyphens to denote visual parent/child relationships. Again, we can't do this sort of thing in the API in a single request to the region fields have been replaced by standard model choice fields. For the above two points, I strongly feel the excellent search capabilities in Select2 which are now exposed on nearly all select fields will make these moot points.
Some API model list endpoints did not support a
qfilter param, and in such cases that filter was added.The
ChainedFieldsMixinwas modified so that filter chains are not required. Meaning a null value for a chain field will not result in a modified queryset unless that field is explicitly marked as nullable. This is because Select2 allows the final field in the chain (most often the only field in the chain which is an actual model field) to show results without the need for prior filters.🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.