mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Merge branch 'develop' into feature
This commit is contained in:
@ -58,7 +58,7 @@ Email is sent from NetBox only for critical events or if configured for [logging
|
|||||||
|
|
||||||
Default: None
|
Default: None
|
||||||
|
|
||||||
A dictionary of HTTP proxies to use for outbound requests originating from NetBox (e.g. when sending webhook requests). Proxies should be specified by schema (HTTP and HTTPS) as per the [Python requests library documentation](https://2.python-requests.org/en/master/user/advanced/). For example:
|
A dictionary of HTTP proxies to use for outbound requests originating from NetBox (e.g. when sending webhook requests). Proxies should be specified by schema (HTTP and HTTPS) as per the [Python requests library documentation](https://requests.readthedocs.io/en/latest/user/advanced/#proxies). For example:
|
||||||
|
|
||||||
```python
|
```python
|
||||||
HTTP_PROXIES = {
|
HTTP_PROXIES = {
|
||||||
|
@ -2,13 +2,17 @@
|
|||||||
|
|
||||||
## v3.3.5 (FUTURE)
|
## v3.3.5 (FUTURE)
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* [#9497](https://github.com/netbox-community/netbox/issues/9497) - Adjust non-racked device filter on site and location detailed view
|
||||||
|
* [#10435](https://github.com/netbox-community/netbox/issues/10435) - Fix exception when filtering VLANs by virtual machine with no cluster assigned
|
||||||
|
* [#10439](https://github.com/netbox-community/netbox/issues/10439) - Fix form widget styling for DeviceType airflow field
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## v3.3.4 (2022-09-16)
|
## v3.3.4 (2022-09-16)
|
||||||
|
|
||||||
### Bug Fixes
|
### Bug Fixes
|
||||||
|
|
||||||
* [#9497](https://github.com/netbox-community/netbox/issues/9497) - Adjust non-racked device filter on site and location detailed view
|
|
||||||
* [#10383](https://github.com/netbox-community/netbox/issues/10383) - Fix assignment of component templates to module types via web UI
|
* [#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
|
* [#10387](https://github.com/netbox-community/netbox/issues/10387) - Fix `MultiValueDictKeyError` exception when editing a device interface
|
||||||
|
|
||||||
|
@ -373,6 +373,7 @@ class DeviceTypeForm(NetBoxModelForm):
|
|||||||
'front_image', 'rear_image', 'comments', 'tags',
|
'front_image', 'rear_image', 'comments', 'tags',
|
||||||
]
|
]
|
||||||
widgets = {
|
widgets = {
|
||||||
|
'airflow': StaticSelect(),
|
||||||
'subdevice_role': StaticSelect(),
|
'subdevice_role': StaticSelect(),
|
||||||
'front_image': ClearableFileInput(attrs={
|
'front_image': ClearableFileInput(attrs={
|
||||||
'accept': DEVICETYPE_IMAGE_FORMATS
|
'accept': DEVICETYPE_IMAGE_FORMATS
|
||||||
|
@ -81,29 +81,33 @@ class VLANQuerySet(RestrictedQuerySet):
|
|||||||
|
|
||||||
# Find all relevant VLANGroups
|
# Find all relevant VLANGroups
|
||||||
q = Q()
|
q = Q()
|
||||||
if vm.cluster.site:
|
site = vm.site or vm.cluster.site
|
||||||
if vm.cluster.site.region:
|
if vm.cluster:
|
||||||
|
# Add VLANGroups scoped to the assigned cluster (or its group)
|
||||||
q |= Q(
|
q |= Q(
|
||||||
scope_type=ContentType.objects.get_by_natural_key('dcim', 'region'),
|
scope_type=ContentType.objects.get_by_natural_key('virtualization', 'cluster'),
|
||||||
scope_id__in=vm.cluster.site.region.get_ancestors(include_self=True)
|
scope_id=vm.cluster_id
|
||||||
)
|
|
||||||
if vm.cluster.site.group:
|
|
||||||
q |= Q(
|
|
||||||
scope_type=ContentType.objects.get_by_natural_key('dcim', 'sitegroup'),
|
|
||||||
scope_id__in=vm.cluster.site.group.get_ancestors(include_self=True)
|
|
||||||
)
|
|
||||||
q |= Q(
|
|
||||||
scope_type=ContentType.objects.get_by_natural_key('dcim', 'site'),
|
|
||||||
scope_id=vm.cluster.site_id
|
|
||||||
)
|
)
|
||||||
if vm.cluster.group:
|
if vm.cluster.group:
|
||||||
q |= Q(
|
q |= Q(
|
||||||
scope_type=ContentType.objects.get_by_natural_key('virtualization', 'clustergroup'),
|
scope_type=ContentType.objects.get_by_natural_key('virtualization', 'clustergroup'),
|
||||||
scope_id=vm.cluster.group_id
|
scope_id=vm.cluster.group_id
|
||||||
)
|
)
|
||||||
|
if site:
|
||||||
|
# Add VLANGroups scoped to the assigned site (or its group or region)
|
||||||
q |= Q(
|
q |= Q(
|
||||||
scope_type=ContentType.objects.get_by_natural_key('virtualization', 'cluster'),
|
scope_type=ContentType.objects.get_by_natural_key('dcim', 'site'),
|
||||||
scope_id=vm.cluster_id
|
scope_id=site.pk
|
||||||
|
)
|
||||||
|
if site.region:
|
||||||
|
q |= Q(
|
||||||
|
scope_type=ContentType.objects.get_by_natural_key('dcim', 'region'),
|
||||||
|
scope_id__in=site.region.get_ancestors(include_self=True)
|
||||||
|
)
|
||||||
|
if site.group:
|
||||||
|
q |= Q(
|
||||||
|
scope_type=ContentType.objects.get_by_natural_key('dcim', 'sitegroup'),
|
||||||
|
scope_id__in=site.group.get_ancestors(include_self=True)
|
||||||
)
|
)
|
||||||
vlan_groups = VLANGroup.objects.filter(q)
|
vlan_groups = VLANGroup.objects.filter(q)
|
||||||
|
|
||||||
@ -113,7 +117,7 @@ class VLANQuerySet(RestrictedQuerySet):
|
|||||||
Q(group__scope_id__isnull=True, site__isnull=True) | # Global group VLANs
|
Q(group__scope_id__isnull=True, site__isnull=True) | # Global group VLANs
|
||||||
Q(group__isnull=True, site__isnull=True) # Global VLANs
|
Q(group__isnull=True, site__isnull=True) # Global VLANs
|
||||||
)
|
)
|
||||||
if vm.cluster.site:
|
if site:
|
||||||
q |= Q(site=vm.cluster.site)
|
q |= Q(site=site)
|
||||||
|
|
||||||
return self.filter(q)
|
return self.filter(q)
|
||||||
|
Reference in New Issue
Block a user