Explorar el Código

Merge pull request #10391 from netbox-community/develop

Release v3.3.4
Jeremy Stretch hace 3 años
padre
commit
83a66a672d

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

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

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

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

+ 3 - 7
.github/workflows/lock.yml

@@ -9,13 +9,9 @@ jobs:
   lock:
     runs-on: ubuntu-latest
     steps:
-      - uses: dessant/lock-threads@v2
+      - uses: dessant/lock-threads@v3
         with:
           github-token: ${{ github.token }}
-          issue-lock-inactive-days: '90'
-          issue-exclude-created-before: ''
-          issue-exclude-labels: ''
-          issue-lock-labels: ''
-          issue-lock-comment: ''
+          issue-inactive-days: 90
+          pr-inactive-days: 30
           issue-lock-reason: 'resolved'
-          process-only: 'issues'

+ 9 - 0
docs/release-notes/version-3.3.md

@@ -1,5 +1,14 @@
 # NetBox v3.3
 
+## v3.3.4 (2022-09-16)
+
+### Bug Fixes
+
+* [#10383](https://github.com/netbox-community/netbox/issues/10383) - Fix assignment of component templates to module types via web UI
+* [#10387](https://github.com/netbox-community/netbox/issues/10387) - Fix `MultiValueDictKeyError` exception when editing a device interface
+
+---
+
 ## v3.3.3 (2022-09-15)
 
 ### Enhancements

+ 11 - 10
netbox/dcim/forms/models.py

@@ -1000,11 +1000,22 @@ class ComponentTemplateForm(BootstrapMixin, forms.ModelForm):
 
 
 class ModularComponentTemplateForm(ComponentTemplateForm):
+    device_type = DynamicModelChoiceField(
+        queryset=DeviceType.objects.all().all(),
+        required=False
+    )
     module_type = DynamicModelChoiceField(
         queryset=ModuleType.objects.all(),
         required=False
     )
 
+    def __init__(self, *args, **kwargs):
+        super().__init__(*args, **kwargs)
+
+        # Disable reassignment of ModuleType when editing an existing instance
+        if self.instance.pk:
+            self.fields['module_type'].disabled = True
+
 
 class ConsolePortTemplateForm(ModularComponentTemplateForm):
     fieldsets = (
@@ -1429,16 +1440,6 @@ class InterfaceForm(InterfaceCommonForm, ModularDeviceComponentForm):
             'rf_channel_width': "Populated by selected channel (if set)",
         }
 
-    def __init__(self, *args, **kwargs):
-        super().__init__(*args, **kwargs)
-
-        # Restrict LAG/bridge interface assignment by device/VC
-        device_id = self.data['device'] if self.is_bound else self.initial.get('device')
-        device = Device.objects.filter(pk=device_id).first()
-        if device and device.virtual_chassis and device.virtual_chassis.master:
-            self.fields['lag'].widget.add_query_param('device_id', device.virtual_chassis.master.pk)
-            self.fields['bridge'].widget.add_query_param('device_id', device.virtual_chassis.master.pk)
-
 
 class FrontPortForm(ModularDeviceComponentForm):
     rear_port = DynamicModelChoiceField(

+ 1 - 1
netbox/netbox/settings.py

@@ -29,7 +29,7 @@ django.utils.encoding.force_text = force_str
 # Environment setup
 #
 
-VERSION = '3.3.3'
+VERSION = '3.3.4'
 
 # Hostname
 HOSTNAME = platform.node()