|
|
@@ -13,8 +13,15 @@ class ConfigContextQuerySet(QuerySet):
|
|
|
# `device_role` for Device; `role` for VirtualMachine
|
|
|
role = getattr(obj, 'device_role', None) or obj.role
|
|
|
|
|
|
+ # Match against the directly assigned region as well as any parent regions.
|
|
|
+ region = getattr(obj.site, 'region', None)
|
|
|
+ if region:
|
|
|
+ regions = region.get_ancestors(include_self=True)
|
|
|
+ else:
|
|
|
+ regions = []
|
|
|
+
|
|
|
return self.filter(
|
|
|
- Q(regions=getattr(obj.site, 'region', None)) | Q(regions=None),
|
|
|
+ Q(regions__in=regions) | Q(regions=None),
|
|
|
Q(sites=obj.site) | Q(sites=None),
|
|
|
Q(roles=role) | Q(roles=None),
|
|
|
Q(tenants=obj.tenant) | Q(tenants=None),
|