Jeremy Stretch пре 1 месец
родитељ
комит
742f4b4330
45 измењених фајлова са 4498 додато и 3651 уклоњено
  1. 1 1
      .github/ISSUE_TEMPLATE/01-feature_request.yaml
  2. 1 1
      .github/ISSUE_TEMPLATE/02-bug_report.yaml
  3. 1 1
      .github/ISSUE_TEMPLATE/03-performance.yaml
  4. 778 159
      contrib/openapi.json
  5. 39 0
      docs/release-notes/version-4.6.md
  6. 3 0
      netbox/netbox/settings.py
  7. 2 2
      netbox/project-static/dist/graphiql/js.cookie.min.js
  8. 0 0
      netbox/project-static/dist/netbox.js
  9. 0 0
      netbox/project-static/dist/netbox.js.map
  10. 2 2
      netbox/project-static/netbox-graphiql/package.json
  11. 10 10
      netbox/project-static/package.json
  12. 242 257
      netbox/project-static/yarn.lock
  13. 2 2
      netbox/release.yaml
  14. BIN
      netbox/translations/cs/LC_MESSAGES/django.mo
  15. 226 214
      netbox/translations/cs/LC_MESSAGES/django.po
  16. BIN
      netbox/translations/da/LC_MESSAGES/django.mo
  17. 226 214
      netbox/translations/da/LC_MESSAGES/django.po
  18. BIN
      netbox/translations/de/LC_MESSAGES/django.mo
  19. 229 214
      netbox/translations/de/LC_MESSAGES/django.po
  20. BIN
      netbox/translations/es/LC_MESSAGES/django.mo
  21. 228 214
      netbox/translations/es/LC_MESSAGES/django.po
  22. BIN
      netbox/translations/fr/LC_MESSAGES/django.mo
  23. 228 214
      netbox/translations/fr/LC_MESSAGES/django.po
  24. BIN
      netbox/translations/it/LC_MESSAGES/django.mo
  25. 228 214
      netbox/translations/it/LC_MESSAGES/django.po
  26. BIN
      netbox/translations/ja/LC_MESSAGES/django.mo
  27. 226 214
      netbox/translations/ja/LC_MESSAGES/django.po
  28. BIN
      netbox/translations/lv/LC_MESSAGES/django.mo
  29. 229 215
      netbox/translations/lv/LC_MESSAGES/django.po
  30. BIN
      netbox/translations/nl/LC_MESSAGES/django.mo
  31. 228 214
      netbox/translations/nl/LC_MESSAGES/django.po
  32. BIN
      netbox/translations/pl/LC_MESSAGES/django.mo
  33. 228 214
      netbox/translations/pl/LC_MESSAGES/django.po
  34. BIN
      netbox/translations/pt/LC_MESSAGES/django.mo
  35. 228 214
      netbox/translations/pt/LC_MESSAGES/django.po
  36. BIN
      netbox/translations/ru/LC_MESSAGES/django.mo
  37. 228 214
      netbox/translations/ru/LC_MESSAGES/django.po
  38. BIN
      netbox/translations/tr/LC_MESSAGES/django.mo
  39. 227 214
      netbox/translations/tr/LC_MESSAGES/django.po
  40. BIN
      netbox/translations/uk/LC_MESSAGES/django.mo
  41. 227 214
      netbox/translations/uk/LC_MESSAGES/django.po
  42. BIN
      netbox/translations/zh/LC_MESSAGES/django.mo
  43. 226 214
      netbox/translations/zh/LC_MESSAGES/django.po
  44. 1 1
      pyproject.toml
  45. 4 4
      requirements.txt

+ 1 - 1
.github/ISSUE_TEMPLATE/01-feature_request.yaml

@@ -15,7 +15,7 @@ body:
     attributes:
       label: NetBox version
       description: What version of NetBox are you currently running?
-      placeholder: v4.6.1
+      placeholder: v4.6.2
     validations:
       required: true
   - type: dropdown

+ 1 - 1
.github/ISSUE_TEMPLATE/02-bug_report.yaml

@@ -27,7 +27,7 @@ body:
     attributes:
       label: NetBox Version
       description: What version of NetBox are you currently running?
-      placeholder: v4.6.1
+      placeholder: v4.6.2
     validations:
       required: true
   - type: dropdown

+ 1 - 1
.github/ISSUE_TEMPLATE/03-performance.yaml

@@ -8,7 +8,7 @@ body:
     attributes:
       label: NetBox Version
       description: What version of NetBox are you currently running?
-      placeholder: v4.6.1
+      placeholder: v4.6.2
     validations:
       required: true
   - type: dropdown

Разлика између датотеке није приказан због своје велике величине
+ 778 - 159
contrib/openapi.json


+ 39 - 0
docs/release-notes/version-4.6.md

@@ -1,5 +1,44 @@
 # NetBox v4.6
 
+## v4.6.2 (2026-06-02)
+
+### Enhancements
+
+* [#17127](https://github.com/netbox-community/netbox/issues/17127) - Add a user preference for selecting metric or imperial units of measurement
+* [#19336](https://github.com/netbox-community/netbox/issues/19336) - Convert the filtering of tabbed list views from JavaScript to HTMX
+* [#19460](https://github.com/netbox-community/netbox/issues/19460) - Support additional template variables for greater flexibility when constructing map URLs
+* [#20804](https://github.com/netbox-community/netbox/issues/20804) - Support bulk renaming of the `label` field on device components
+* [#21261](https://github.com/netbox-community/netbox/issues/21261) - Allow setting `quick_add` on an `ObjectVar` in custom scripts
+* [#21952](https://github.com/netbox-community/netbox/issues/21952) - Improve robustness of the RQ worker liveness check
+* [#22109](https://github.com/netbox-community/netbox/issues/22109) - Include child dependency counts in the module type REST API representation
+* [#22212](https://github.com/netbox-community/netbox/issues/22212) - Make designated environment parameters available within Jinja2 templates via the new `env()` filter
+* [#22239](https://github.com/netbox-community/netbox/issues/22239) - Rename the "Save" button on the table configuration form to "Apply" for clarity
+* [#22255](https://github.com/netbox-community/netbox/issues/22255) - Allow plugins to register custom serializer resolvers for `get_serializer_for_model()`
+
+### Bug Fixes
+
+* [#21091](https://github.com/netbox-community/netbox/issues/21091) - Declare proper request & response schema types for the device/VM config rendering API endpoints
+* [#22158](https://github.com/netbox-community/netbox/issues/22158) - Cache empty config revision state to avoid per-request queries polluting database connections
+* [#22163](https://github.com/netbox-community/netbox/issues/22163) - Fix `ValueError` raised by CircuitTerminationForm when a termination type is set but the target object is blank
+* [#22180](https://github.com/netbox-community/netbox/issues/22180) - Ensure custom scripts added via a remote data source are validated
+* [#22187](https://github.com/netbox-community/netbox/issues/22187) - Fix erroneous cable path retracing when using a cable profile
+* [#22219](https://github.com/netbox-community/netbox/issues/22219) - Add missing required form field indicator to InlineFields rows
+* [#22228](https://github.com/netbox-community/netbox/issues/22228) - Validate `vid_ranges` bounds metadata in `VLANGroup.save()` to avoid miscounts and a crash on singleton ranges
+* [#22232](https://github.com/netbox-community/netbox/issues/22232) - Prevent duplicate scheduled background jobs from being created
+* [#22233](https://github.com/netbox-community/netbox/issues/22233) - Fix `site_id` filter on the cables REST API returning no results when both endpoints are circuit terminations
+* [#22247](https://github.com/netbox-community/netbox/issues/22247) - Display the verbose name instead of the internal model name for the related object type on the custom field detail page
+* [#22270](https://github.com/netbox-community/netbox/issues/22270) - Avoid recording a spurious UPDATE change record after DELETE for objects with reverse SET_NULL relations
+* [#22282](https://github.com/netbox-community/netbox/issues/22282) - Fix `fetch()` on S3Backend to reliably resolve object keys
+* [#22283](https://github.com/netbox-community/netbox/issues/22283) - Restrict the Job queryset in ScriptResultView to authorized objects
+* [#22286](https://github.com/netbox-community/netbox/issues/22286) - Mark the `name` and `description` fields on the GraphQL ConfigContextProfileFilter as optional
+* [#22287](https://github.com/netbox-community/netbox/issues/22287) - Fix GraphQL `EventRuleFilter.action_object_type` being typed as a string lookup against a ContentType foreign key
+* [#22301](https://github.com/netbox-community/netbox/issues/22301) - Avoid name conflict when multiple plugins introduce taggable models of the same name
+* [#22307](https://github.com/netbox-community/netbox/issues/22307) - Fix inconsistent enforcement of `grant_token` permissions between the UI and REST API
+* [#22325](https://github.com/netbox-community/netbox/issues/22325) - Fix `AttributeError` when creating a custom field choice set with base choices
+* [#22328](https://github.com/netbox-community/netbox/issues/22328) - Avoid out-of-memory crash in DynamicMultipleChoiceField with large choice sets
+
+---
+
 ## v4.6.1 (2026-05-19)
 
 ### Enhancements

+ 3 - 0
netbox/netbox/settings.py

@@ -898,6 +898,9 @@ STRAWBERRY_DJANGO = {
     "DEFAULT_PK_FIELD_NAME": "id",
     "TYPE_DESCRIPTION_FROM_MODEL_DOCSTRING": True,
     "PAGINATION_DEFAULT_LIMIT": 100,
+    # Disable the library's max-limit cap (introduced in strawberry-graphql-django 0.85); NetBox enforces its own
+    # page-size ceiling via MAX_PAGE_SIZE in netbox.graphql.pagination.apply_pagination().
+    "PAGINATION_MAX_LIMIT": None,
 }
 
 #

+ 2 - 2
netbox/project-static/dist/graphiql/js.cookie.min.js

@@ -1,2 +1,2 @@
-/*! js-cookie v3.0.5 | MIT */
-!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self,function(){var n=e.Cookies,o=e.Cookies=t();o.noConflict=function(){return e.Cookies=n,o}}())}(this,(function(){"use strict";function e(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)e[o]=n[o]}return e}var t=function t(n,o){function r(t,r,i){if("undefined"!=typeof document){"number"==typeof(i=e({},o,i)).expires&&(i.expires=new Date(Date.now()+864e5*i.expires)),i.expires&&(i.expires=i.expires.toUTCString()),t=encodeURIComponent(t).replace(/%(2[346B]|5E|60|7C)/g,decodeURIComponent).replace(/[()]/g,escape);var c="";for(var u in i)i[u]&&(c+="; "+u,!0!==i[u]&&(c+="="+i[u].split(";")[0]));return document.cookie=t+"="+n.write(r,t)+c}}return Object.create({set:r,get:function(e){if("undefined"!=typeof document&&(!arguments.length||e)){for(var t=document.cookie?document.cookie.split("; "):[],o={},r=0;r<t.length;r++){var i=t[r].split("="),c=i.slice(1).join("=");try{var u=decodeURIComponent(i[0]);if(o[u]=n.read(c,u),e===u)break}catch(e){}}return e?o[e]:o}},remove:function(t,n){r(t,"",e({},n,{expires:-1}))},withAttributes:function(n){return t(this.converter,e({},this.attributes,n))},withConverter:function(n){return t(e({},this.converter,n),this.attributes)}},{attributes:{value:Object.freeze(o)},converter:{value:Object.freeze(n)}})}({read:function(e){return'"'===e[0]&&(e=e.slice(1,-1)),e.replace(/(%[\dA-F]{2})+/gi,decodeURIComponent)},write:function(e){return encodeURIComponent(e).replace(/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,decodeURIComponent)}},{path:"/"});return t}));
+/*! js-cookie v3.0.8 | MIT */
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self,function(){var n=e.Cookies,o=e.Cookies=t();o.noConflict=function(){return e.Cookies=n,o}}())}(this,(function(){"use strict";function e(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)"__proto__"!==o&&(e[o]=n[o])}return e}var t=function t(n,o){function r(t,r,i){if("undefined"!=typeof document){"number"==typeof(i=e({},o,i)).expires&&(i.expires=new Date(Date.now()+864e5*i.expires)),i.expires&&(i.expires=i.expires.toUTCString()),t=encodeURIComponent(t).replace(/%(2[346B]|5E|60|7C)/g,decodeURIComponent).replace(/[()]/g,escape);var c="";for(var u in i)i[u]&&(c+="; "+u,!0!==i[u]&&(c+="="+i[u].split(";")[0]));return document.cookie=t+"="+n.write(r,t)+c}}return Object.create({set:r,get:function(e){if("undefined"!=typeof document&&(!arguments.length||e)){for(var t=document.cookie?document.cookie.split("; "):[],o={},r=0;r<t.length;r++){var i=t[r].split("="),c=i.slice(1).join("=");try{var u=decodeURIComponent(i[0]);if(u in o||(o[u]=n.read(c,u)),e===u)break}catch(e){}}return e?o[e]:o}},remove:function(t,n){r(t,"",e({},n,{expires:-1}))},withAttributes:function(n){return t(this.converter,e({},this.attributes,n))},withConverter:function(n){return t(e({},this.converter,n),this.attributes)}},{attributes:{value:Object.freeze(o)},converter:{value:Object.freeze(n)}})}({read:function(e){return'"'===e[0]&&(e=e.slice(1,-1)),e.replace(/(%[\dA-F]{2})+/gi,decodeURIComponent)},write:function(e){return encodeURIComponent(e).replace(/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,decodeURIComponent)}},{path:"/"});return t}));

Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
netbox/project-static/dist/netbox.js


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
netbox/project-static/dist/netbox.js.map


+ 2 - 2
netbox/project-static/netbox-graphiql/package.json

@@ -1,6 +1,6 @@
 {
   "name": "netbox-graphiql",
-  "version": "4.5.0",
+  "version": "4.6.2",
   "description": "NetBox GraphiQL Custom Front End",
   "main": "dist/graphiql.js",
   "license": "Apache-2.0",
@@ -9,7 +9,7 @@
     "@graphiql/plugin-explorer": "4.0.6",
     "graphiql": "4.1.2",
     "graphql": "16.12.0",
-    "js-cookie": "3.0.5",
+    "js-cookie": "3.0.8",
     "react": "18.3.1",
     "react-dom": "18.3.1"
   }

+ 10 - 10
netbox/project-static/package.json

@@ -1,7 +1,7 @@
 {
   "name": "netbox",
   "type": "module",
-  "version": "4.5.0",
+  "version": "4.6.2",
   "main": "dist/netbox.js",
   "license": "Apache-2.0",
   "private": true,
@@ -30,8 +30,8 @@
     "flatpickr": "4.6.13",
     "gridstack": "12.6.0",
     "htmx.org": "2.0.10",
-    "query-string": "9.3.1",
-    "sass": "1.99.0",
+    "query-string": "9.4.0",
+    "sass": "1.100.0",
     "tom-select": "2.6.1",
     "typeface-inter": "3.18.1",
     "typeface-roboto-mono": "1.1.13"
@@ -40,18 +40,18 @@
     "@eslint/compat": "^2.1.0",
     "@eslint/eslintrc": "^3.3.5",
     "@eslint/js": "^9.39.2",
-    "@types/bootstrap": "5.2.10",
+    "@types/bootstrap": "5.2.11",
     "@types/cookie": "^1.0.0",
     "@types/node": "^24.10.1",
-    "@typescript-eslint/eslint-plugin": "^8.59.1",
-    "@typescript-eslint/parser": "^8.59.1",
+    "@typescript-eslint/eslint-plugin": "^8.60.1",
+    "@typescript-eslint/parser": "^8.60.1",
     "esbuild": "^0.28.0",
     "esbuild-sass-plugin": "^3.7.0",
-    "eslint": "^10.2.1",
+    "eslint": "^10.4.1",
     "eslint-config-prettier": "^10.1.8",
-    "eslint-import-resolver-typescript": "^4.4.4",
+    "eslint-import-resolver-typescript": "^4.4.5",
     "eslint-plugin-import": "^2.32.0",
-    "eslint-plugin-prettier": "^5.5.5",
+    "eslint-plugin-prettier": "^5.5.6",
     "globals": "^17.5.0",
     "prettier": "^3.8.3",
     "typescript": "^5.9.3"
@@ -60,7 +60,7 @@
     "@types/bootstrap/**/@popperjs/core": "^2.11.6",
     "eslint/**/minimatch": "^3.1.3",
     "eslint-plugin-import/**/minimatch": "^3.1.3",
-    "**/markdown-it": "^14.1.1",
+    "**/markdown-it": "^14.2.0",
     "micromatch/picomatch": "2.3.2",
     "tinyglobby/picomatch": "4.0.4"
   },

Разлика између датотеке није приказан због своје велике величине
+ 242 - 257
netbox/project-static/yarn.lock


+ 2 - 2
netbox/release.yaml

@@ -1,3 +1,3 @@
-version: "4.6.1"
+version: "4.6.2"
 edition: "Community"
-published: "2026-05-19"
+published: "2026-06-02"

BIN
netbox/translations/cs/LC_MESSAGES/django.mo


Разлика између датотеке није приказан због своје велике величине
+ 226 - 214
netbox/translations/cs/LC_MESSAGES/django.po


BIN
netbox/translations/da/LC_MESSAGES/django.mo


Разлика између датотеке није приказан због своје велике величине
+ 226 - 214
netbox/translations/da/LC_MESSAGES/django.po


BIN
netbox/translations/de/LC_MESSAGES/django.mo


Разлика између датотеке није приказан због своје велике величине
+ 229 - 214
netbox/translations/de/LC_MESSAGES/django.po


BIN
netbox/translations/es/LC_MESSAGES/django.mo


Разлика између датотеке није приказан због своје велике величине
+ 228 - 214
netbox/translations/es/LC_MESSAGES/django.po


BIN
netbox/translations/fr/LC_MESSAGES/django.mo


Разлика између датотеке није приказан због своје велике величине
+ 228 - 214
netbox/translations/fr/LC_MESSAGES/django.po


BIN
netbox/translations/it/LC_MESSAGES/django.mo


Разлика између датотеке није приказан због своје велике величине
+ 228 - 214
netbox/translations/it/LC_MESSAGES/django.po


BIN
netbox/translations/ja/LC_MESSAGES/django.mo


Разлика између датотеке није приказан због своје велике величине
+ 226 - 214
netbox/translations/ja/LC_MESSAGES/django.po


BIN
netbox/translations/lv/LC_MESSAGES/django.mo


Разлика између датотеке није приказан због своје велике величине
+ 229 - 215
netbox/translations/lv/LC_MESSAGES/django.po


BIN
netbox/translations/nl/LC_MESSAGES/django.mo


Разлика између датотеке није приказан због своје велике величине
+ 228 - 214
netbox/translations/nl/LC_MESSAGES/django.po


BIN
netbox/translations/pl/LC_MESSAGES/django.mo


Разлика између датотеке није приказан због своје велике величине
+ 228 - 214
netbox/translations/pl/LC_MESSAGES/django.po


BIN
netbox/translations/pt/LC_MESSAGES/django.mo


Разлика између датотеке није приказан због своје велике величине
+ 228 - 214
netbox/translations/pt/LC_MESSAGES/django.po


BIN
netbox/translations/ru/LC_MESSAGES/django.mo


Разлика између датотеке није приказан због своје велике величине
+ 228 - 214
netbox/translations/ru/LC_MESSAGES/django.po


BIN
netbox/translations/tr/LC_MESSAGES/django.mo


Разлика између датотеке није приказан због своје велике величине
+ 227 - 214
netbox/translations/tr/LC_MESSAGES/django.po


BIN
netbox/translations/uk/LC_MESSAGES/django.mo


Разлика између датотеке није приказан због своје велике величине
+ 227 - 214
netbox/translations/uk/LC_MESSAGES/django.po


BIN
netbox/translations/zh/LC_MESSAGES/django.mo


Разлика између датотеке није приказан због своје велике величине
+ 226 - 214
netbox/translations/zh/LC_MESSAGES/django.po


+ 1 - 1
pyproject.toml

@@ -3,7 +3,7 @@
 
 [project]
 name = "netbox"
-version = "4.6.1"
+version = "4.6.2"
 requires-python = ">=3.12"
 description = "The premier source of truth powering network automation."
 readme = "README.md"

+ 4 - 4
requirements.txt

@@ -17,7 +17,7 @@ django-taggit==6.1.0
 django-timezone-field==7.2.1
 djangorestframework==3.17.1
 drf-spectacular==0.29.0
-drf-spectacular-sidecar==2026.5.1
+drf-spectacular-sidecar==2026.6.1
 feedparser==6.0.12
 gunicorn==26.0.0
 Jinja2==3.1.6
@@ -33,12 +33,12 @@ Pillow==12.2.0
 psycopg[c,pool]==3.3.4
 PyYAML==6.0.3
 requests==2.34.2
-rq==2.8.0
+rq==2.9.0
 social-auth-app-django==5.9.0
 social-auth-core==4.8.7
 sorl-thumbnail==13.0.0
-strawberry-graphql==0.315.5
-strawberry-graphql-django==0.84.0
+strawberry-graphql==0.316.0
+strawberry-graphql-django==0.85.0
 svgwrite==1.4.3
 tablib==3.9.0
 tzdata==2026.2

Неке датотеке нису приказане због велике количине промена