mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-02 05:46:25 -06:00
Add HostAsInet(Transform) to perform cast
This commit is contained in:
parent
d4a910e06a
commit
789ca6b560
@ -109,6 +109,7 @@ IPAddressField.register_lookup(lookups.NetHostLessThan)
|
|||||||
IPAddressField.register_lookup(lookups.NetHostLessThanOrEqual)
|
IPAddressField.register_lookup(lookups.NetHostLessThanOrEqual)
|
||||||
IPAddressField.register_lookup(lookups.NetHostGreaterThan)
|
IPAddressField.register_lookup(lookups.NetHostGreaterThan)
|
||||||
IPAddressField.register_lookup(lookups.NetHostGreaterThanOrEqual)
|
IPAddressField.register_lookup(lookups.NetHostGreaterThanOrEqual)
|
||||||
|
IPAddressField.register_lookup(lookups.HostAsInet)
|
||||||
|
|
||||||
|
|
||||||
class ASNField(models.BigIntegerField):
|
class ASNField(models.BigIntegerField):
|
||||||
|
@ -207,6 +207,11 @@ class Host(Transform):
|
|||||||
lookup_name = 'host'
|
lookup_name = 'host'
|
||||||
|
|
||||||
|
|
||||||
|
class HostAsInet(Transform):
|
||||||
|
lookup_name = 'host_as_inet'
|
||||||
|
template = 'CAST(HOST( %(expressions)s ) AS INET)'
|
||||||
|
|
||||||
|
|
||||||
class Inet(Transform):
|
class Inet(Transform):
|
||||||
function = 'INET'
|
function = 'INET'
|
||||||
lookup_name = 'inet'
|
lookup_name = 'inet'
|
||||||
|
@ -581,9 +581,9 @@ class IPRange(ContactsMixin, PrimaryModel):
|
|||||||
|
|
||||||
# Check for overlapping ranges
|
# Check for overlapping ranges
|
||||||
overlapping_ranges = IPRange.objects.exclude(pk=self.pk).filter(vrf=self.vrf).filter(
|
overlapping_ranges = IPRange.objects.exclude(pk=self.pk).filter(vrf=self.vrf).filter(
|
||||||
Q(start_address__net_host_gte=self.start_address.ip, start_address__net_host_lte=self.end_address.ip) | # Starts inside
|
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__net_host_gte=self.start_address.ip, end_address__net_host_lte=self.end_address.ip) | # Ends 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__net_host_lte=self.start_address.ip, end_address__net_host_gte=self.end_address.ip) # Starts & ends outside
|
Q(start_address__host_as_inet__lte=self.start_address.ip, end_address__host_as_inet__gte=self.end_address.ip) # Starts & ends outside
|
||||||
)
|
)
|
||||||
if overlapping_ranges.exists():
|
if overlapping_ranges.exists():
|
||||||
raise ValidationError(
|
raise ValidationError(
|
||||||
|
Loading…
Reference in New Issue
Block a user