Merge pull request #10115 from arthanson/art-10033

#10033 disable Add a Termination button if 2 terminations on L2VPN P2P
This commit is contained in:
Jeremy Stretch 2022-08-24 08:57:01 -04:00 committed by GitHub
commit 6a7c56d919
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 1 deletions

View File

@ -4,6 +4,7 @@ from django.contrib.contenttypes.models import ContentType
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
from django.db import models from django.db import models
from django.urls import reverse from django.urls import reverse
from django.utils.functional import cached_property
from ipam.choices import L2VPNTypeChoices from ipam.choices import L2VPNTypeChoices
from ipam.constants import L2VPN_ASSIGNMENT_MODELS from ipam.constants import L2VPN_ASSIGNMENT_MODELS
@ -68,6 +69,13 @@ class L2VPN(NetBoxModel):
def get_absolute_url(self): def get_absolute_url(self):
return reverse('ipam:l2vpn', args=[self.pk]) return reverse('ipam:l2vpn', args=[self.pk])
@cached_property
def can_add_termination(self):
if self.type in L2VPNTypeChoices.P2P and self.terminations.count() >= 2:
return False
else:
return True
class L2VPNTermination(NetBoxModel): class L2VPNTermination(NetBoxModel):
l2vpn = models.ForeignKey( l2vpn = models.ForeignKey(

View File

@ -59,7 +59,7 @@
</div> </div>
{% if perms.ipam.add_l2vpntermination %} {% if perms.ipam.add_l2vpntermination %}
<div class="card-footer text-end noprint"> <div class="card-footer text-end noprint">
<a href="{% url 'ipam:l2vpntermination_add' %}?l2vpn={{ object.pk }}&return_url={{ object.get_absolute_url }}" class="btn btn-primary btn-sm"> <a href="{% url 'ipam:l2vpntermination_add' %}?l2vpn={{ object.pk }}&return_url={{ object.get_absolute_url }}" class="btn btn-primary btn-sm{% if not object.can_add_termination %} disabled" aria-disabled="true{% endif %}">
<i class="mdi mdi-plus-thick" aria-hidden="true"></i> Add a Termination <i class="mdi mdi-plus-thick" aria-hidden="true"></i> Add a Termination
</a> </a>
</div> </div>