Jeremy Stretch 1 год назад
Родитель
Сommit
e63fe23af8
42 измененных файлов с 23752 добавлено и 20035 удалено
  1. 1 1
      .github/ISSUE_TEMPLATE/01-feature_request.yaml
  2. 1 1
      .github/ISSUE_TEMPLATE/02-bug_report.yaml
  3. 27 1
      docs/release-notes/version-4.1.md
  4. 142 710
      netbox/project-static/dist/graphiql/graphiql.min.js
  5. 0 0
      netbox/project-static/dist/netbox-external.css
  6. 0 0
      netbox/project-static/dist/netbox.js
  7. 0 0
      netbox/project-static/dist/netbox.js.map
  8. 2 2
      netbox/project-static/netbox-graphiql/package.json
  9. 4 4
      netbox/project-static/package.json
  10. 19 20
      netbox/project-static/src/select/classes/dynamicTomSelect.ts
  11. 2 2
      netbox/project-static/tsconfig.json
  12. 44 38
      netbox/project-static/yarn.lock
  13. 2 2
      netbox/release.yaml
  14. BIN
      netbox/translations/cs/LC_MESSAGES/django.mo
  15. 1869 1541
      netbox/translations/cs/LC_MESSAGES/django.po
  16. BIN
      netbox/translations/da/LC_MESSAGES/django.mo
  17. 1385 1119
      netbox/translations/da/LC_MESSAGES/django.po
  18. BIN
      netbox/translations/de/LC_MESSAGES/django.mo
  19. 1386 1120
      netbox/translations/de/LC_MESSAGES/django.po
  20. BIN
      netbox/translations/es/LC_MESSAGES/django.mo
  21. 1385 1119
      netbox/translations/es/LC_MESSAGES/django.po
  22. BIN
      netbox/translations/fr/LC_MESSAGES/django.mo
  23. 1385 1119
      netbox/translations/fr/LC_MESSAGES/django.po
  24. BIN
      netbox/translations/it/LC_MESSAGES/django.mo
  25. 1385 1119
      netbox/translations/it/LC_MESSAGES/django.po
  26. BIN
      netbox/translations/ja/LC_MESSAGES/django.mo
  27. 2486 2071
      netbox/translations/ja/LC_MESSAGES/django.po
  28. BIN
      netbox/translations/nl/LC_MESSAGES/django.mo
  29. 1385 1119
      netbox/translations/nl/LC_MESSAGES/django.po
  30. BIN
      netbox/translations/pl/LC_MESSAGES/django.mo
  31. 1869 1541
      netbox/translations/pl/LC_MESSAGES/django.po
  32. BIN
      netbox/translations/pt/LC_MESSAGES/django.mo
  33. 1385 1119
      netbox/translations/pt/LC_MESSAGES/django.po
  34. BIN
      netbox/translations/ru/LC_MESSAGES/django.mo
  35. 1385 1119
      netbox/translations/ru/LC_MESSAGES/django.po
  36. BIN
      netbox/translations/tr/LC_MESSAGES/django.mo
  37. 1385 1119
      netbox/translations/tr/LC_MESSAGES/django.po
  38. BIN
      netbox/translations/uk/LC_MESSAGES/django.mo
  39. 1871 1543
      netbox/translations/uk/LC_MESSAGES/django.po
  40. BIN
      netbox/translations/zh/LC_MESSAGES/django.mo
  41. 2940 2479
      netbox/translations/zh/LC_MESSAGES/django.po
  42. 7 7
      requirements.txt

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

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

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

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

+ 27 - 1
docs/release-notes/version-4.1.md

@@ -1,6 +1,32 @@
 # NetBox v4.1
 # NetBox v4.1
 
 
-## v4.1.7 (FUTURE)
+## v4.1.8 (2024-12-12)
+
+### Enhancements
+
+* [#17071](https://github.com/netbox-community/netbox/issues/17071) - Enable OOB IP address designation during bulk import
+* [#17465](https://github.com/netbox-community/netbox/issues/17465) - Enable designation of rack type during bulk import & bulk edit
+* [#17889](https://github.com/netbox-community/netbox/issues/17889) - Enable designating an IP address as out-of-band for a device upon creation
+* [#17960](https://github.com/netbox-community/netbox/issues/17960) - Add L2TP, PPTP, Wireguard, and OpenVPN tunnel types
+* [#18021](https://github.com/netbox-community/netbox/issues/18021) - Automatically clear cache on restart when `DEBUG` is enabled
+* [#18061](https://github.com/netbox-community/netbox/issues/18061) - Omit stack trace from rendered device/VM configuration when an exception is raised
+* [#18065](https://github.com/netbox-community/netbox/issues/18065) - Include status in device details when hovering on rack elevation
+* [#18211](https://github.com/netbox-community/netbox/issues/18211) - Enable the dynamic registration of context managers for request processing
+
+### Bug Fixes
+
+* [#14044](https://github.com/netbox-community/netbox/issues/14044) - Fix unhandled AttributeError exception when bulk renaming objects
+* [#17490](https://github.com/netbox-community/netbox/issues/17490) - Fix dynamic inclusion support for config templates
+* [#17810](https://github.com/netbox-community/netbox/issues/17810) - Fix validation of racked device fields when modifying via REST API
+* [#17820](https://github.com/netbox-community/netbox/issues/17820) - Ensure default custom field values are populated when creating new modules
+* [#18044](https://github.com/netbox-community/netbox/issues/18044) - Show plugin-generated alerts within UI views for custom scripts
+* [#18150](https://github.com/netbox-community/netbox/issues/18150) - Fix REST API pagination for low `MAX_PAGE_SIZE` values
+* [#18183](https://github.com/netbox-community/netbox/issues/18183) - Omit UI navigation bar when printing
+* [#18213](https://github.com/netbox-community/netbox/issues/18213) - Fix searching for ASN ranges by name
+
+---
+
+## v4.1.7 (2024-11-21)
 
 
 ### Enhancements
 ### Enhancements
 
 

Разница между файлами не показана из-за своего большого размера
+ 142 - 710
netbox/project-static/dist/graphiql/graphiql.min.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
netbox/project-static/dist/netbox-external.css


Разница между файлами не показана из-за своего большого размера
+ 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

@@ -6,8 +6,8 @@
   "license": "Apache-2.0",
   "license": "Apache-2.0",
   "private": true,
   "private": true,
   "dependencies": {
   "dependencies": {
-    "@graphiql/plugin-explorer": "3.2.2",
-    "graphiql": "3.7.1",
+    "@graphiql/plugin-explorer": "3.2.3",
+    "graphiql": "3.7.2",
     "graphql": "16.9.0",
     "graphql": "16.9.0",
     "js-cookie": "3.0.5",
     "js-cookie": "3.0.5",
     "react": "18.3.1",
     "react": "18.3.1",

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

@@ -1,6 +1,6 @@
 {
 {
   "name": "netbox",
   "name": "netbox",
-  "version": "4.0.0",
+  "version": "4.1.0",
   "main": "dist/netbox.js",
   "main": "dist/netbox.js",
   "license": "Apache-2.0",
   "license": "Apache-2.0",
   "private": true,
   "private": true,
@@ -27,11 +27,11 @@
     "bootstrap": "5.3.3",
     "bootstrap": "5.3.3",
     "clipboard": "2.0.11",
     "clipboard": "2.0.11",
     "flatpickr": "4.6.13",
     "flatpickr": "4.6.13",
-    "gridstack": "10.3.1",
+    "gridstack": "11.1.2",
     "htmx.org": "1.9.12",
     "htmx.org": "1.9.12",
     "query-string": "9.1.1",
     "query-string": "9.1.1",
-    "sass": "1.80.5",
-    "tom-select": "2.3.1",
+    "sass": "1.82.0",
+    "tom-select": "2.4.1",
     "typeface-inter": "3.18.1",
     "typeface-inter": "3.18.1",
     "typeface-roboto-mono": "1.1.13"
     "typeface-roboto-mono": "1.1.13"
   },
   },

+ 19 - 20
netbox/project-static/src/select/classes/dynamicTomSelect.ts

@@ -1,18 +1,17 @@
-import { RecursivePartial, TomInput, TomOption, TomSettings } from 'tom-select/dist/types/types';
-import { addClasses } from 'tom-select/src/vanilla'
+import { RecursivePartial, TomOption, TomSettings } from 'tom-select/dist/types/types';
+import { TomInput } from 'tom-select/dist/cjs/types/core';
+import { addClasses } from 'tom-select/src/vanilla.ts';
 import queryString from 'query-string';
 import queryString from 'query-string';
 import TomSelect from 'tom-select';
 import TomSelect from 'tom-select';
 import type { Stringifiable } from 'query-string';
 import type { Stringifiable } from 'query-string';
 import { DynamicParamsMap } from './dynamicParamsMap';
 import { DynamicParamsMap } from './dynamicParamsMap';
 
 
 // Transitional
 // Transitional
-import { QueryFilter, PathFilter } from '../types'
+import { QueryFilter, PathFilter } from '../types';
 import { getElement, replaceAll } from '../../util';
 import { getElement, replaceAll } from '../../util';
 
 
-
 // Extends TomSelect to provide enhanced fetching of options via the REST API
 // Extends TomSelect to provide enhanced fetching of options via the REST API
 export class DynamicTomSelect extends TomSelect {
 export class DynamicTomSelect extends TomSelect {
-
   public readonly nullOption: Nullable<TomOption> = null;
   public readonly nullOption: Nullable<TomOption> = null;
 
 
   // Transitional code from APISelect
   // Transitional code from APISelect
@@ -25,7 +24,7 @@ export class DynamicTomSelect extends TomSelect {
    * Overrides
    * Overrides
    */
    */
 
 
-  constructor( input_arg: string|TomInput, user_settings: RecursivePartial<TomSettings> ) {
+  constructor(input_arg: string | TomInput, user_settings: RecursivePartial<TomSettings>) {
     super(input_arg, user_settings);
     super(input_arg, user_settings);
 
 
     // Glean the REST API endpoint URL from the <select> element
     // Glean the REST API endpoint URL from the <select> element
@@ -34,7 +33,8 @@ export class DynamicTomSelect extends TomSelect {
     // Override any field names set as widget attributes
     // Override any field names set as widget attributes
     this.valueField = this.input.getAttribute('ts-value-field') || this.settings.valueField;
     this.valueField = this.input.getAttribute('ts-value-field') || this.settings.valueField;
     this.labelField = this.input.getAttribute('ts-label-field') || this.settings.labelField;
     this.labelField = this.input.getAttribute('ts-label-field') || this.settings.labelField;
-    this.disabledField = this.input.getAttribute('ts-disabled-field') || this.settings.disabledField;
+    this.disabledField =
+      this.input.getAttribute('ts-disabled-field') || this.settings.disabledField;
     this.descriptionField = this.input.getAttribute('ts-description-field') || 'description';
     this.descriptionField = this.input.getAttribute('ts-description-field') || 'description';
     this.depthField = this.input.getAttribute('ts-depth-field') || '_depth';
     this.depthField = this.input.getAttribute('ts-depth-field') || '_depth';
     this.parentField = this.input.getAttribute('ts-parent-field') || null;
     this.parentField = this.input.getAttribute('ts-parent-field') || null;
@@ -43,9 +43,9 @@ export class DynamicTomSelect extends TomSelect {
     // Set the null option (if any)
     // Set the null option (if any)
     const nullOption = this.input.getAttribute('data-null-option');
     const nullOption = this.input.getAttribute('data-null-option');
     if (nullOption) {
     if (nullOption) {
-      let valueField = this.settings.valueField;
-      let labelField = this.settings.labelField;
-      this.nullOption = {}
+      const valueField = this.settings.valueField;
+      const labelField = this.settings.labelField;
+      this.nullOption = {};
       this.nullOption[valueField] = 'null';
       this.nullOption[valueField] = 'null';
       this.nullOption[labelField] = nullOption;
       this.nullOption[labelField] = nullOption;
     }
     }
@@ -98,8 +98,8 @@ export class DynamicTomSelect extends TomSelect {
       .then(response => response.json())
       .then(response => response.json())
       .then(apiData => {
       .then(apiData => {
         const results: Dict[] = apiData.results;
         const results: Dict[] = apiData.results;
-        let options: Dict[] = []
-        for (let result of results) {
+        const options: Dict[] = [];
+        for (const result of results) {
           const option = self.getOptionFromData(result);
           const option = self.getOptionFromData(result);
           options.push(option);
           options.push(option);
         }
         }
@@ -108,10 +108,10 @@ export class DynamicTomSelect extends TomSelect {
       // Pass the options to the callback function
       // Pass the options to the callback function
       .then(options => {
       .then(options => {
         self.loadCallback(options, []);
         self.loadCallback(options, []);
-      }).catch(()=>{
+      })
+      .catch(() => {
         self.loadCallback([], []);
         self.loadCallback([], []);
       });
       });
-
   }
   }
 
 
   /**
   /**
@@ -155,14 +155,14 @@ export class DynamicTomSelect extends TomSelect {
 
 
   // Compile TomOption data from an API result
   // Compile TomOption data from an API result
   getOptionFromData(data: Dict) {
   getOptionFromData(data: Dict) {
-    let option: Dict = {
+    const option: Dict = {
       id: data[this.valueField],
       id: data[this.valueField],
       display: data[this.labelField],
       display: data[this.labelField],
       depth: data[this.depthField] || null,
       depth: data[this.depthField] || null,
       description: data[this.descriptionField] || null,
       description: data[this.descriptionField] || null,
     };
     };
     if (data[this.parentField]) {
     if (data[this.parentField]) {
-      let parent: Dict = data[this.parentField] as Dict;
+      const parent: Dict = data[this.parentField] as Dict;
       option['parent'] = parent[this.labelField];
       option['parent'] = parent[this.labelField];
     }
     }
     if (data[this.countField]) {
     if (data[this.countField]) {
@@ -171,7 +171,7 @@ export class DynamicTomSelect extends TomSelect {
     if (data[this.disabledField]) {
     if (data[this.disabledField]) {
       option['disabled'] = data[this.disabledField];
       option['disabled'] = data[this.disabledField];
     }
     }
-    return option
+    return option;
   }
   }
 
 
   /**
   /**
@@ -218,7 +218,6 @@ export class DynamicTomSelect extends TomSelect {
     }
     }
   }
   }
 
 
-
   // Parse the `data-url` attribute to add any variables to `pathValues` as keys with empty
   // Parse the `data-url` attribute to add any variables to `pathValues` as keys with empty
   // values. As those keys' corresponding form fields' values change, `pathValues` will be
   // values. As those keys' corresponding form fields' values change, `pathValues` will be
   // updated to reflect the new value.
   // updated to reflect the new value.
@@ -297,7 +296,8 @@ export class DynamicTomSelect extends TomSelect {
       // value. For example, if the dependency is the `rack` field, and the `rack` field's value
       // value. For example, if the dependency is the `rack` field, and the `rack` field's value
       // is `1`, this element's URL would change from `/dcim/racks/{{rack}}/` to `/dcim/racks/1/`.
       // is `1`, this element's URL would change from `/dcim/racks/{{rack}}/` to `/dcim/racks/1/`.
       const hasReplacement =
       const hasReplacement =
-        this.api_url.includes(`{{`) && Boolean(this.api_url.match(new RegExp(`({{(${id})}})`, 'g')));
+        this.api_url.includes(`{{`) &&
+        Boolean(this.api_url.match(new RegExp(`({{(${id})}})`, 'g')));
 
 
       if (hasReplacement) {
       if (hasReplacement) {
         if (element.value) {
         if (element.value) {
@@ -349,5 +349,4 @@ export class DynamicTomSelect extends TomSelect {
     // Load new data.
     // Load new data.
     this.load(this.lastValue);
     this.load(this.lastValue);
   }
   }
-
 }
 }

+ 2 - 2
netbox/project-static/tsconfig.json

@@ -1,10 +1,10 @@
 {
 {
   "compilerOptions": {
   "compilerOptions": {
     "forceConsistentCasingInFileNames": true,
     "forceConsistentCasingInFileNames": true,
+    // Needed for tom-select/src/vanilla.ts
+    "allowImportingTsExtensions": true,
     "allowSyntheticDefaultImports": true,
     "allowSyntheticDefaultImports": true,
     "moduleResolution": "node",
     "moduleResolution": "node",
-    // tom-select v2.3.1 raises several TS6133 errors with noUnusedParameters
-    "noUnusedParameters": false,
     "esModuleInterop": true,
     "esModuleInterop": true,
     "isolatedModules": true,
     "isolatedModules": true,
     "noUnusedLocals": true,
     "noUnusedLocals": true,

+ 44 - 38
netbox/project-static/yarn.lock

@@ -200,17 +200,17 @@
   resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.2.tgz#d8bae93ac8b815b2bd7a98078cf91e2724ef11e5"
   resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.2.tgz#d8bae93ac8b815b2bd7a98078cf91e2724ef11e5"
   integrity sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==
   integrity sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==
 
 
-"@graphiql/plugin-explorer@3.2.2":
-  version "3.2.2"
-  resolved "https://registry.yarnpkg.com/@graphiql/plugin-explorer/-/plugin-explorer-3.2.2.tgz#973d6015b6db15041902e95c3e4b746473313eb6"
-  integrity sha512-zeBZJUAX9h+3nXw3GLHZoxi6wwYqDBU2L/xeSXSTagJhcLNW1Hwb/t/wb296hQ1x/9nyGySsTA0DQiiWV3rCBQ==
+"@graphiql/plugin-explorer@3.2.3":
+  version "3.2.3"
+  resolved "https://registry.yarnpkg.com/@graphiql/plugin-explorer/-/plugin-explorer-3.2.3.tgz#03854d7e62d6e24c6552ae6706e3945b9324fa23"
+  integrity sha512-yh5WXRqDPuKjVyNxUwXYjx8tImvVOx+2FGanLyjoAJP2LKQu6eDtButyJ8sExk1qW4+HCSrXxJNSPs4W7cYT3g==
   dependencies:
   dependencies:
     graphiql-explorer "^0.9.0"
     graphiql-explorer "^0.9.0"
 
 
-"@graphiql/react@^0.26.2":
-  version "0.26.2"
-  resolved "https://registry.yarnpkg.com/@graphiql/react/-/react-0.26.2.tgz#3a1a01a569b624de8141c53eed24a7db9a523668"
-  integrity sha512-aO4GWf/kJmqrjO+PORT/NPxwGvPGlg+mwye1v8xAlf8Q9j7P0hVtVBawYaSLUCCfJ/QnH7JAP+0VRamyooZZCw==
+"@graphiql/react@^0.27.0":
+  version "0.27.0"
+  resolved "https://registry.yarnpkg.com/@graphiql/react/-/react-0.27.0.tgz#4475a0f4ddf25d8ebc1bfc538fb21f5f1d435916"
+  integrity sha512-K9ZKWd+ewodbS/1kewedmITeeKLUQswMOXwIv8XFLPt3Ondodji0vr1XXXsttlyl+V2QG/9tYVV2RJ9Ch5LdrA==
   dependencies:
   dependencies:
     "@graphiql/toolkit" "^0.11.0"
     "@graphiql/toolkit" "^0.11.0"
     "@headlessui/react" "^1.7.15"
     "@headlessui/react" "^1.7.15"
@@ -353,17 +353,17 @@
   resolved "https://registry.yarnpkg.com/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz#3dc35ba0f1e66b403c00b39344f870298ebb1c8e"
   resolved "https://registry.yarnpkg.com/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz#3dc35ba0f1e66b403c00b39344f870298ebb1c8e"
   integrity sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==
   integrity sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==
 
 
-"@orchidjs/sifter@^1.0.3":
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/@orchidjs/sifter/-/sifter-1.0.3.tgz#43f42519472282eb632d0a1589184f044d64129b"
-  integrity sha512-zCZbwKegHytfsPm8Amcfh7v/4vHqTAaOu6xFswBYcn8nznBOuseu6COB2ON7ez0tFV0mKL0nRNnCiZZA+lU9/g==
+"@orchidjs/sifter@^1.1.0":
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/@orchidjs/sifter/-/sifter-1.1.0.tgz#b36154ad0cda4898305d1ac44f318b41048a0438"
+  integrity sha512-mYwHCfr736cIWWdhhSZvDbf90AKt2xyrJspKFC3qyIJG1LtrJeJunYEqCGG4Aq2ijENbc4WkOjszcvNaIAS/pQ==
   dependencies:
   dependencies:
-    "@orchidjs/unicode-variants" "^1.0.4"
+    "@orchidjs/unicode-variants" "^1.1.2"
 
 
-"@orchidjs/unicode-variants@^1.0.4":
-  version "1.0.4"
-  resolved "https://registry.yarnpkg.com/@orchidjs/unicode-variants/-/unicode-variants-1.0.4.tgz#6d2f812e3b19545bba2d81caffff1204de9a6a58"
-  integrity sha512-NvVBRnZNE+dugiXERFsET1JlKZfM5lJDEpSMilKW4bToYJ7pxf0Zne78xyXB2ny2c2aHfJ6WLnz1AaTNHAmQeQ==
+"@orchidjs/unicode-variants@^1.1.2":
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/@orchidjs/unicode-variants/-/unicode-variants-1.1.2.tgz#1fd71791a67fdd1591ebe0dcaadd3964537a824e"
+  integrity sha512-5DobW1CHgnBROOEpFlEXytED5OosEWESFvg/VYmH0143oXcijYTprRYJTs+55HzGM4IqxiLFSuqEzu9mPNwVsA==
 
 
 "@parcel/watcher-android-arm64@2.4.1":
 "@parcel/watcher-android-arm64@2.4.1":
   version "2.4.1"
   version "2.4.1"
@@ -1883,12 +1883,12 @@ graphiql-explorer@^0.9.0:
   resolved "https://registry.yarnpkg.com/graphiql-explorer/-/graphiql-explorer-0.9.0.tgz#25f6b990bfc3e04e88c0cf419e28d12abe2c4fbe"
   resolved "https://registry.yarnpkg.com/graphiql-explorer/-/graphiql-explorer-0.9.0.tgz#25f6b990bfc3e04e88c0cf419e28d12abe2c4fbe"
   integrity sha512-fZC/wsuatqiQDO2otchxriFO0LaWIo/ovF/CQJ1yOudmY0P7pzDiP+l9CEHUiWbizk3e99x6DQG4XG1VxA+d6A==
   integrity sha512-fZC/wsuatqiQDO2otchxriFO0LaWIo/ovF/CQJ1yOudmY0P7pzDiP+l9CEHUiWbizk3e99x6DQG4XG1VxA+d6A==
 
 
-graphiql@3.7.1:
-  version "3.7.1"
-  resolved "https://registry.yarnpkg.com/graphiql/-/graphiql-3.7.1.tgz#9fb727e15db443b22823389d13dc5d98c3ce0ff9"
-  integrity sha512-kmummedOrFYs0BI5evrVY0AerOYlaMt/Sc/e+Sta1x8X6vEMYWNeUUz/kKF2NQT5BcsR3FnNdFt1Gk2QMgueGQ==
+graphiql@3.7.2:
+  version "3.7.2"
+  resolved "https://registry.yarnpkg.com/graphiql/-/graphiql-3.7.2.tgz#6a754256f4f2e6268a64e585b0fe35bf38f1b87d"
+  integrity sha512-DL+KrX+aQdyzl+KwcqjlmdYdjyKegm7FcZJKkIQ1e56xn6Eoe8lw5F4t65gFex/45fHzv8e8CpaIcljxfJhO7A==
   dependencies:
   dependencies:
-    "@graphiql/react" "^0.26.2"
+    "@graphiql/react" "^0.27.0"
 
 
 graphql-language-service@5.3.0, graphql-language-service@^5.3.0:
 graphql-language-service@5.3.0, graphql-language-service@^5.3.0:
   version "5.3.0"
   version "5.3.0"
@@ -1904,10 +1904,10 @@ graphql@16.9.0:
   resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.9.0.tgz#1c310e63f16a49ce1fbb230bd0a000e99f6f115f"
   resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.9.0.tgz#1c310e63f16a49ce1fbb230bd0a000e99f6f115f"
   integrity sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==
   integrity sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==
 
 
-gridstack@10.3.1:
-  version "10.3.1"
-  resolved "https://registry.yarnpkg.com/gridstack/-/gridstack-10.3.1.tgz#4ed704279c40094fc1b9e3318f20b573f2fe9f40"
-  integrity sha512-Ra82k/88gdeiu3ZP40COS4bI4sGhNQlZAaAQ6szfPfr68zVpsXxiyLKr5zYcTpKX4jjcwyNsNNdcV1tDJc71fA==
+gridstack@11.1.2:
+  version "11.1.2"
+  resolved "https://registry.yarnpkg.com/gridstack/-/gridstack-11.1.2.tgz#e72091e2883f7b37cbd150c218d38eebc9fc4f18"
+  integrity sha512-6wJ5RffnFchF63/Yhs6tcZcWxRG1EgCnxgejbQsAjQ6Qj8QqKjew73jPq5c1yCAiyEAsXxI2tOJ8lZABOAZxoQ==
 
 
 has-bigints@^1.0.1, has-bigints@^1.0.2:
 has-bigints@^1.0.1, has-bigints@^1.0.2:
   version "1.0.2"
   version "1.0.2"
@@ -1970,6 +1970,11 @@ immutable@^4.0.0:
   resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.7.tgz#c70145fc90d89fb02021e65c84eb0226e4e5a381"
   resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.7.tgz#c70145fc90d89fb02021e65c84eb0226e4e5a381"
   integrity sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==
   integrity sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==
 
 
+immutable@^5.0.2:
+  version "5.0.3"
+  resolved "https://registry.yarnpkg.com/immutable/-/immutable-5.0.3.tgz#aa037e2313ea7b5d400cd9298fa14e404c933db1"
+  integrity sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==
+
 import-fresh@^3.2.1:
 import-fresh@^3.2.1:
   version "3.3.0"
   version "3.3.0"
   resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
   resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
@@ -2656,15 +2661,16 @@ safe-regex-test@^1.0.3:
     es-errors "^1.3.0"
     es-errors "^1.3.0"
     is-regex "^1.1.4"
     is-regex "^1.1.4"
 
 
-sass@1.80.5:
-  version "1.80.5"
-  resolved "https://registry.yarnpkg.com/sass/-/sass-1.80.5.tgz#0ba965223d44df22497f2966b498cf5c453fae8f"
-  integrity sha512-TQd2aoQl/+zsxRMEDSxVdpPIqeq9UFc6pr7PzkugiTx3VYCFPUaa3P4RrBQsqok4PO200Vkz0vXQBNlg7W907g==
+sass@1.82.0:
+  version "1.82.0"
+  resolved "https://registry.yarnpkg.com/sass/-/sass-1.82.0.tgz#30da277af3d0fa6042e9ceabd0d984ed6d07df70"
+  integrity sha512-j4GMCTa8elGyN9A7x7bEglx0VgSpNUG4W4wNedQ33wSMdnkqQCT8HTwOaVSV4e6yQovcu/3Oc4coJP/l0xhL2Q==
   dependencies:
   dependencies:
-    "@parcel/watcher" "^2.4.1"
     chokidar "^4.0.0"
     chokidar "^4.0.0"
-    immutable "^4.0.0"
+    immutable "^5.0.2"
     source-map-js ">=0.6.2 <2.0.0"
     source-map-js ">=0.6.2 <2.0.0"
+  optionalDependencies:
+    "@parcel/watcher" "^2.4.1"
 
 
 sass@^1.71.1:
 sass@^1.71.1:
   version "1.77.8"
   version "1.77.8"
@@ -2864,13 +2870,13 @@ toggle-selection@^1.0.6:
   resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32"
   resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32"
   integrity sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==
   integrity sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==
 
 
-tom-select@2.3.1:
-  version "2.3.1"
-  resolved "https://registry.yarnpkg.com/tom-select/-/tom-select-2.3.1.tgz#df338d9082874cd0bceb3bee87ed0184447c47f1"
-  integrity sha512-QS4vnOcB6StNGqX4sGboGXL2fkhBF2gIBB+8Hwv30FZXYPn0CyYO8kkdATRvwfCTThxiR4WcXwKJZ3cOmtI9eg==
+tom-select@2.4.1:
+  version "2.4.1"
+  resolved "https://registry.yarnpkg.com/tom-select/-/tom-select-2.4.1.tgz#6a0b6df8af3df7b09b22dd965eb75ce4d1c547bc"
+  integrity sha512-adI8H8+wk8RRzHYLQ3bXSk2Q+FAq/kzAATrcWlJ2fbIrEzb0VkwaXzKHTAlBwSJrhqbPJvhV/0eypFkED/nAug==
   dependencies:
   dependencies:
-    "@orchidjs/sifter" "^1.0.3"
-    "@orchidjs/unicode-variants" "^1.0.4"
+    "@orchidjs/sifter" "^1.1.0"
+    "@orchidjs/unicode-variants" "^1.1.2"
 
 
 ts-api-utils@^1.3.0:
 ts-api-utils@^1.3.0:
   version "1.3.0"
   version "1.3.0"

+ 2 - 2
netbox/release.yaml

@@ -1,3 +1,3 @@
-version: "4.1.7"
+version: "4.1.8"
 edition: "Community"
 edition: "Community"
-published: "2024-11-21"
+published: "2024-12-12"

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


Разница между файлами не показана из-за своего большого размера
+ 1869 - 1541
netbox/translations/cs/LC_MESSAGES/django.po


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


Разница между файлами не показана из-за своего большого размера
+ 1385 - 1119
netbox/translations/da/LC_MESSAGES/django.po


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


Разница между файлами не показана из-за своего большого размера
+ 1386 - 1120
netbox/translations/de/LC_MESSAGES/django.po


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


Разница между файлами не показана из-за своего большого размера
+ 1385 - 1119
netbox/translations/es/LC_MESSAGES/django.po


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


Разница между файлами не показана из-за своего большого размера
+ 1385 - 1119
netbox/translations/fr/LC_MESSAGES/django.po


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


Разница между файлами не показана из-за своего большого размера
+ 1385 - 1119
netbox/translations/it/LC_MESSAGES/django.po


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


Разница между файлами не показана из-за своего большого размера
+ 2486 - 2071
netbox/translations/ja/LC_MESSAGES/django.po


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


Разница между файлами не показана из-за своего большого размера
+ 1385 - 1119
netbox/translations/nl/LC_MESSAGES/django.po


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


Разница между файлами не показана из-за своего большого размера
+ 1869 - 1541
netbox/translations/pl/LC_MESSAGES/django.po


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


Разница между файлами не показана из-за своего большого размера
+ 1385 - 1119
netbox/translations/pt/LC_MESSAGES/django.po


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


Разница между файлами не показана из-за своего большого размера
+ 1385 - 1119
netbox/translations/ru/LC_MESSAGES/django.po


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


Разница между файлами не показана из-за своего большого размера
+ 1385 - 1119
netbox/translations/tr/LC_MESSAGES/django.po


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


Разница между файлами не показана из-за своего большого размера
+ 1871 - 1543
netbox/translations/uk/LC_MESSAGES/django.po


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


Разница между файлами не показана из-за своего большого размера
+ 2940 - 2479
netbox/translations/zh/LC_MESSAGES/django.po


+ 7 - 7
requirements.txt

@@ -1,4 +1,4 @@
-Django==5.0.9
+Django==5.0.10
 django-cors-headers==4.6.0
 django-cors-headers==4.6.0
 django-debug-toolbar==4.4.6
 django-debug-toolbar==4.4.6
 django-filter==24.3
 django-filter==24.3
@@ -14,16 +14,16 @@ django-taggit==6.1.0
 django-tables2==2.7.0
 django-tables2==2.7.0
 django-timezone-field==7.0
 django-timezone-field==7.0
 djangorestframework==3.15.2
 djangorestframework==3.15.2
-drf-spectacular==0.27.2
-drf-spectacular-sidecar==2024.11.1
+drf-spectacular==0.28.0
+drf-spectacular-sidecar==2024.12.1
 feedparser==6.0.11
 feedparser==6.0.11
 gunicorn==23.0.0
 gunicorn==23.0.0
 Jinja2==3.1.4
 Jinja2==3.1.4
 Markdown==3.7
 Markdown==3.7
-mkdocs-material==9.5.45
+mkdocs-material==9.5.48
 mkdocstrings[python-legacy]==0.27.0
 mkdocstrings[python-legacy]==0.27.0
 netaddr==1.3.0
 netaddr==1.3.0
-nh3==0.2.18
+nh3==0.2.19
 Pillow==11.0.0
 Pillow==11.0.0
 psycopg[c,pool]==3.2.3
 psycopg[c,pool]==3.2.3
 PyYAML==6.0.2
 PyYAML==6.0.2
@@ -31,8 +31,8 @@ requests==2.32.3
 rq==2.0
 rq==2.0
 social-auth-app-django==5.4.2
 social-auth-app-django==5.4.2
 social-auth-core==4.5.4
 social-auth-core==4.5.4
-strawberry-graphql==0.251.0
-strawberry-graphql-django==0.50.0
+strawberry-graphql==0.253.1
+strawberry-graphql-django==0.51.0
 svgwrite==1.4.3
 svgwrite==1.4.3
 tablib==3.7.0
 tablib==3.7.0
 tzdata==2024.2
 tzdata==2024.2

Некоторые файлы не были показаны из-за большого количества измененных файлов