Просмотр исходного кода

Fixes #2265: Include parent regions when filtering applicable ConfigContexts (credit: lampwins)

Jeremy Stretch 7 лет назад
Родитель
Сommit
7476f522e1
1 измененных файлов с 8 добавлено и 1 удалено
  1. 8 1
      netbox/extras/querysets.py

+ 8 - 1
netbox/extras/querysets.py

@@ -13,8 +13,15 @@ class ConfigContextQuerySet(QuerySet):
         # `device_role` for Device; `role` for VirtualMachine
         # `device_role` for Device; `role` for VirtualMachine
         role = getattr(obj, 'device_role', None) or obj.role
         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(
         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(sites=obj.site) | Q(sites=None),
             Q(roles=role) | Q(roles=None),
             Q(roles=role) | Q(roles=None),
             Q(tenants=obj.tenant) | Q(tenants=None),
             Q(tenants=obj.tenant) | Q(tenants=None),