Chain Host and Inet instead of making a new transform

This commit is contained in:
Brian Tiemann 2024-10-23 10:35:01 -04:00
parent 1a1156ebf1
commit 66319f9cf0
3 changed files with 5 additions and 9 deletions

View File

@ -105,7 +105,8 @@ IPAddressField.register_lookup(lookups.NetIn)
IPAddressField.register_lookup(lookups.NetHostContained)
IPAddressField.register_lookup(lookups.NetFamily)
IPAddressField.register_lookup(lookups.NetMaskLength)
IPAddressField.register_lookup(lookups.HostAsInet)
IPAddressField.register_lookup(lookups.Host)
IPAddressField.register_lookup(lookups.Inet)
class ASNField(models.BigIntegerField):

View File

@ -177,11 +177,6 @@ class Host(Transform):
lookup_name = 'host'
class HostAsInet(Transform):
lookup_name = 'host_as_inet'
template = 'CAST(HOST( %(expressions)s ) AS INET)'
class Inet(Transform):
function = 'INET'
lookup_name = 'inet'

View File

@ -581,9 +581,9 @@ class IPRange(ContactsMixin, PrimaryModel):
# Check for overlapping ranges
overlapping_ranges = IPRange.objects.exclude(pk=self.pk).filter(vrf=self.vrf).filter(
Q(start_address__host_as_inet__gte=self.start_address.ip, start_address__host_as_inet__lte=self.end_address.ip) | # Starts inside
Q(end_address__host_as_inet__gte=self.start_address.ip, end_address__host_as_inet__lte=self.end_address.ip) | # Ends inside
Q(start_address__host_as_inet__lte=self.start_address.ip, end_address__host_as_inet__gte=self.end_address.ip) # Starts & ends outside
Q(start_address__host__inet__gte=self.start_address.ip, start_address__host__inet__lte=self.end_address.ip) | # Starts inside
Q(end_address__host__inet__gte=self.start_address.ip, end_address__host__inet__lte=self.end_address.ip) | # Ends inside
Q(start_address__host__inet__lte=self.start_address.ip, end_address__host__inet__gte=self.end_address.ip) # Starts & ends outside
)
if overlapping_ranges.exists():
raise ValidationError(