Fix restriction violations for provider, circuit models

This commit is contained in:
Jeremy Stretch 2020-06-16 14:00:43 -04:00
parent 0f8df8c985
commit ffa3a229b5
3 changed files with 8 additions and 3 deletions

View File

@ -136,18 +136,23 @@ class CircuitView(ObjectView):
queryset = Circuit.objects.prefetch_related('provider', 'type', 'tenant__group') queryset = Circuit.objects.prefetch_related('provider', 'type', 'tenant__group')
def get(self, request, pk): def get(self, request, pk):
circuit = get_object_or_404(self.queryset, pk=pk) circuit = get_object_or_404(self.queryset, pk=pk)
termination_a = CircuitTermination.objects.restrict(request.user, 'view').prefetch_related( termination_a = CircuitTermination.objects.restrict(request.user, 'view').prefetch_related(
'site__region', 'connected_endpoint__device' 'site__region', 'connected_endpoint__device'
).filter( ).filter(
circuit=circuit, term_side=CircuitTerminationSideChoices.SIDE_A circuit=circuit, term_side=CircuitTerminationSideChoices.SIDE_A
).first() ).first()
if termination_a and termination_a.connected_endpoint:
termination_a.ip_addresses = termination_a.connected_endpoint.ip_addresses.restrict(request.user, 'view')
termination_z = CircuitTermination.objects.restrict(request.user, 'view').prefetch_related( termination_z = CircuitTermination.objects.restrict(request.user, 'view').prefetch_related(
'site__region', 'connected_endpoint__device' 'site__region', 'connected_endpoint__device'
).filter( ).filter(
circuit=circuit, term_side=CircuitTerminationSideChoices.SIDE_Z circuit=circuit, term_side=CircuitTerminationSideChoices.SIDE_Z
).first() ).first()
if termination_z and termination_z.connected_endpoint:
termination_z.ip_addresses = termination_z.connected_endpoint.ip_addresses.restrict(request.user, 'view')
return render(request, 'circuits/circuit.html', { return render(request, 'circuits/circuit.html', {
'circuit': circuit, 'circuit': circuit,

View File

@ -90,7 +90,7 @@
<td>IP Addressing</td> <td>IP Addressing</td>
<td> <td>
{% if termination.connected_endpoint %} {% if termination.connected_endpoint %}
{% for ip in termination.connected_endpoint.ip_addresses.all %} {% for ip in termination.ip_addresses %}
{% if not forloop.first %}<br />{% endif %} {% if not forloop.first %}<br />{% endif %}
<a href="{% url 'ipam:ipaddress' pk=ip.pk %}">{{ ip }}</a> ({{ ip.vrf|default:"Global" }}) <a href="{% url 'ipam:ipaddress' pk=ip.pk %}">{{ ip }}</a> ({{ ip.vrf|default:"Global" }})
{% empty %} {% empty %}

View File

@ -99,7 +99,7 @@
<tr> <tr>
<td>Circuits</td> <td>Circuits</td>
<td> <td>
<a href="{% url 'circuits:circuit_list' %}?provider={{ provider.slug }}">{{ provider.circuits.count }}</a> <a href="{% url 'circuits:circuit_list' %}?provider={{ provider.slug }}">{{ circuits_table.rows|length }}</a>
</td> </td>
</tr> </tr>
</table> </table>