Fix CircuitTermination relations

This commit is contained in:
Renato Almeida de Oliveira Zaroubin 2025-04-10 21:57:18 +00:00
parent eed4117c30
commit aad0acac85
2 changed files with 21 additions and 3 deletions

View File

@ -170,11 +170,16 @@ class ProviderNetworkView(GetRelatedModelsMixin, generic.ObjectView):
'related_models': self.get_related_models( 'related_models': self.get_related_models(
request, request,
instance, instance,
omit=(CircuitTermination,),
extra=( extra=(
( (
Circuit.objects.restrict(request.user, 'view').filter(terminations___provider_network=instance), Circuit.objects.restrict(request.user, 'view').filter(terminations___provider_network=instance),
'provider_network_id', 'provider_network_id',
), ),
(
CircuitTermination.objects.restrict(request.user, 'view').filter(_provider_network=instance),
'provider_network_id',
),
), ),
), ),
} }

View File

@ -237,7 +237,7 @@ class RegionView(GetRelatedModelsMixin, generic.ObjectView):
'related_models': self.get_related_models( 'related_models': self.get_related_models(
request, request,
regions, regions,
omit=(Cluster, Prefix, WirelessLAN), omit=(Cluster, CircuitTermination, Prefix, WirelessLAN),
extra=( extra=(
(Location.objects.restrict(request.user, 'view').filter(site__region__in=regions), 'region_id'), (Location.objects.restrict(request.user, 'view').filter(site__region__in=regions), 'region_id'),
(Rack.objects.restrict(request.user, 'view').filter(site__region__in=regions), 'region_id'), (Rack.objects.restrict(request.user, 'view').filter(site__region__in=regions), 'region_id'),
@ -256,6 +256,10 @@ class RegionView(GetRelatedModelsMixin, generic.ObjectView):
), ),
# Handle these relations manually to avoid erroneous filter name resolution # Handle these relations manually to avoid erroneous filter name resolution
(
CircuitTermination.objects.restrict(request.user, 'view').filter(_region__in=regions),
'region_id'
),
(Cluster.objects.restrict(request.user, 'view').filter(_region__in=regions), 'region_id'), (Cluster.objects.restrict(request.user, 'view').filter(_region__in=regions), 'region_id'),
(Prefix.objects.restrict(request.user, 'view').filter(_region__in=regions), 'region_id'), (Prefix.objects.restrict(request.user, 'view').filter(_region__in=regions), 'region_id'),
(WirelessLAN.objects.restrict(request.user, 'view').filter(_region__in=regions), 'region_id'), (WirelessLAN.objects.restrict(request.user, 'view').filter(_region__in=regions), 'region_id'),
@ -343,7 +347,7 @@ class SiteGroupView(GetRelatedModelsMixin, generic.ObjectView):
'related_models': self.get_related_models( 'related_models': self.get_related_models(
request, request,
groups, groups,
omit=(Cluster, Prefix, WirelessLAN), omit=(Cluster, CircuitTermination, Prefix, WirelessLAN),
extra=( extra=(
(Location.objects.restrict(request.user, 'view').filter(site__group__in=groups), 'site_group_id'), (Location.objects.restrict(request.user, 'view').filter(site__group__in=groups), 'site_group_id'),
(Rack.objects.restrict(request.user, 'view').filter(site__group__in=groups), 'site_group_id'), (Rack.objects.restrict(request.user, 'view').filter(site__group__in=groups), 'site_group_id'),
@ -374,6 +378,10 @@ class SiteGroupView(GetRelatedModelsMixin, generic.ObjectView):
), ),
# Handle these relations manually to avoid erroneous filter name resolution # Handle these relations manually to avoid erroneous filter name resolution
(
CircuitTermination.objects.restrict(request.user, 'view').filter(_site_group__in=groups),
'site_group_id'
),
( (
Cluster.objects.restrict(request.user, 'view').filter(_site_group__in=groups), Cluster.objects.restrict(request.user, 'view').filter(_site_group__in=groups),
'site_group_id' 'site_group_id'
@ -481,6 +489,7 @@ class SiteView(GetRelatedModelsMixin, generic.ObjectView):
(Cluster.objects.restrict(request.user, 'view').filter(_site=instance), 'site_id'), (Cluster.objects.restrict(request.user, 'view').filter(_site=instance), 'site_id'),
(Prefix.objects.restrict(request.user, 'view').filter(_site=instance), 'site_id'), (Prefix.objects.restrict(request.user, 'view').filter(_site=instance), 'site_id'),
(WirelessLAN.objects.restrict(request.user, 'view').filter(_site=instance), 'site_id'), (WirelessLAN.objects.restrict(request.user, 'view').filter(_site=instance), 'site_id'),
(CircuitTermination.objects.restrict(request.user, 'view').filter(_site=instance), 'site_id'),
), ),
), ),
} }
@ -565,7 +574,7 @@ class LocationView(GetRelatedModelsMixin, generic.ObjectView):
'related_models': self.get_related_models( 'related_models': self.get_related_models(
request, request,
locations, locations,
omit=[CableTermination, Cluster, Prefix, WirelessLAN], omit=[CableTermination, CircuitTermination, Cluster, Prefix, WirelessLAN],
extra=( extra=(
( (
Circuit.objects.restrict(request.user, 'view').filter( Circuit.objects.restrict(request.user, 'view').filter(
@ -575,6 +584,10 @@ class LocationView(GetRelatedModelsMixin, generic.ObjectView):
), ),
# Handle these relations manually to avoid erroneous filter name resolution # Handle these relations manually to avoid erroneous filter name resolution
(
CircuitTermination.objects.restrict(request.user, 'view').filter(_location=instance),
'location_id'
),
(Cluster.objects.restrict(request.user, 'view').filter(_location=instance), 'location_id'), (Cluster.objects.restrict(request.user, 'view').filter(_location=instance), 'location_id'),
(Prefix.objects.restrict(request.user, 'view').filter(_location=instance), 'location_id'), (Prefix.objects.restrict(request.user, 'view').filter(_location=instance), 'location_id'),
(WirelessLAN.objects.restrict(request.user, 'view').filter(_location=instance), 'location_id'), (WirelessLAN.objects.restrict(request.user, 'view').filter(_location=instance), 'location_id'),