mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-22 20:12:00 -06:00
Fixes #7674: Fix inadvertent application of device type context to virtual machines
This commit is contained in:
parent
afc866eee4
commit
dc1331e736
@ -6,6 +6,10 @@
|
|||||||
|
|
||||||
* [#7665](https://github.com/netbox-community/netbox/issues/7665) - Add toggle to show only available child prefixes
|
* [#7665](https://github.com/netbox-community/netbox/issues/7665) - Add toggle to show only available child prefixes
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* [#7674](https://github.com/netbox-community/netbox/issues/7674) - Fix inadvertent application of device type context to virtual machines
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## v3.1.1 (2021-12-13)
|
## v3.1.1 (2021-12-13)
|
||||||
|
@ -22,7 +22,7 @@ class ConfigContextQuerySet(RestrictedQuerySet):
|
|||||||
# Device type assignment is relevant only for Devices
|
# Device type assignment is relevant only for Devices
|
||||||
device_type = getattr(obj, 'device_type', None)
|
device_type = getattr(obj, 'device_type', None)
|
||||||
|
|
||||||
# Cluster assignment is relevant only for VirtualMachines
|
# Get assigned Cluster and ClusterGroup, if any
|
||||||
cluster = getattr(obj, 'cluster', None)
|
cluster = getattr(obj, 'cluster', None)
|
||||||
cluster_group = getattr(cluster, 'group', None)
|
cluster_group = getattr(cluster, 'group', None)
|
||||||
|
|
||||||
@ -67,11 +67,8 @@ class ConfigContextModelQuerySet(RestrictedQuerySet):
|
|||||||
Includes a method which appends an annotation of aggregated config context JSON data objects. This is
|
Includes a method which appends an annotation of aggregated config context JSON data objects. This is
|
||||||
implemented as a subquery which performs all the joins necessary to filter relevant config context objects.
|
implemented as a subquery which performs all the joins necessary to filter relevant config context objects.
|
||||||
This offers a substantial performance gain over ConfigContextQuerySet.get_for_object() when dealing with
|
This offers a substantial performance gain over ConfigContextQuerySet.get_for_object() when dealing with
|
||||||
multiple objects.
|
multiple objects. This allows the annotation to be entirely optional.
|
||||||
|
|
||||||
This allows the annotation to be entirely optional.
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def annotate_config_context_data(self):
|
def annotate_config_context_data(self):
|
||||||
"""
|
"""
|
||||||
Attach the subquery annotation to the base queryset
|
Attach the subquery annotation to the base queryset
|
||||||
@ -123,6 +120,7 @@ class ConfigContextModelQuerySet(RestrictedQuerySet):
|
|||||||
elif self.model._meta.model_name == 'virtualmachine':
|
elif self.model._meta.model_name == 'virtualmachine':
|
||||||
base_query.add((Q(roles=OuterRef('role')) | Q(roles=None)), Q.AND)
|
base_query.add((Q(roles=OuterRef('role')) | Q(roles=None)), Q.AND)
|
||||||
base_query.add((Q(sites=OuterRef('cluster__site')) | Q(sites=None)), Q.AND)
|
base_query.add((Q(sites=OuterRef('cluster__site')) | Q(sites=None)), Q.AND)
|
||||||
|
base_query.add(Q(device_types=None), Q.AND)
|
||||||
region_field = 'cluster__site__region'
|
region_field = 'cluster__site__region'
|
||||||
sitegroup_field = 'cluster__site__group'
|
sitegroup_field = 'cluster__site__group'
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user