mirror of
				https://github.com/netbox-community/netbox.git
				synced 2024-05-10 07:54:54 +00:00 
			
		
		
		
	Fixes #1751: Corrected filtering for IPv6 addresses containing letters
This commit is contained in:
		| @@ -5,10 +5,7 @@ from django.db import models | ||||
| from netaddr import IPNetwork | ||||
|  | ||||
| from .formfields import IPFormField | ||||
| from .lookups import ( | ||||
|     EndsWith, IEndsWith, IRegex, IStartsWith, NetContained, NetContainedOrEqual, NetContains, NetContainsOrEquals, | ||||
|     NetHost, NetHostContained, NetMaskLength, Regex, StartsWith, | ||||
| ) | ||||
| from . import lookups | ||||
|  | ||||
|  | ||||
| def prefix_validator(prefix): | ||||
| @@ -57,17 +54,18 @@ class IPNetworkField(BaseIPField): | ||||
|         return 'cidr' | ||||
|  | ||||
|  | ||||
| IPNetworkField.register_lookup(EndsWith) | ||||
| IPNetworkField.register_lookup(IEndsWith) | ||||
| IPNetworkField.register_lookup(StartsWith) | ||||
| IPNetworkField.register_lookup(IStartsWith) | ||||
| IPNetworkField.register_lookup(Regex) | ||||
| IPNetworkField.register_lookup(IRegex) | ||||
| IPNetworkField.register_lookup(NetContained) | ||||
| IPNetworkField.register_lookup(NetContainedOrEqual) | ||||
| IPNetworkField.register_lookup(NetContains) | ||||
| IPNetworkField.register_lookup(NetContainsOrEquals) | ||||
| IPNetworkField.register_lookup(NetMaskLength) | ||||
| IPNetworkField.register_lookup(lookups.IExact) | ||||
| IPNetworkField.register_lookup(lookups.EndsWith) | ||||
| IPNetworkField.register_lookup(lookups.IEndsWith) | ||||
| IPNetworkField.register_lookup(lookups.StartsWith) | ||||
| IPNetworkField.register_lookup(lookups.IStartsWith) | ||||
| IPNetworkField.register_lookup(lookups.Regex) | ||||
| IPNetworkField.register_lookup(lookups.IRegex) | ||||
| IPNetworkField.register_lookup(lookups.NetContained) | ||||
| IPNetworkField.register_lookup(lookups.NetContainedOrEqual) | ||||
| IPNetworkField.register_lookup(lookups.NetContains) | ||||
| IPNetworkField.register_lookup(lookups.NetContainsOrEquals) | ||||
| IPNetworkField.register_lookup(lookups.NetMaskLength) | ||||
|  | ||||
|  | ||||
| class IPAddressField(BaseIPField): | ||||
| @@ -80,16 +78,17 @@ class IPAddressField(BaseIPField): | ||||
|         return 'inet' | ||||
|  | ||||
|  | ||||
| IPAddressField.register_lookup(EndsWith) | ||||
| IPAddressField.register_lookup(IEndsWith) | ||||
| IPAddressField.register_lookup(StartsWith) | ||||
| IPAddressField.register_lookup(IStartsWith) | ||||
| IPAddressField.register_lookup(Regex) | ||||
| IPAddressField.register_lookup(IRegex) | ||||
| IPAddressField.register_lookup(NetContained) | ||||
| IPAddressField.register_lookup(NetContainedOrEqual) | ||||
| IPAddressField.register_lookup(NetContains) | ||||
| IPAddressField.register_lookup(NetContainsOrEquals) | ||||
| IPAddressField.register_lookup(NetHost) | ||||
| IPAddressField.register_lookup(NetHostContained) | ||||
| IPAddressField.register_lookup(NetMaskLength) | ||||
| IPAddressField.register_lookup(lookups.IExact) | ||||
| IPAddressField.register_lookup(lookups.EndsWith) | ||||
| IPAddressField.register_lookup(lookups.IEndsWith) | ||||
| IPAddressField.register_lookup(lookups.StartsWith) | ||||
| IPAddressField.register_lookup(lookups.IStartsWith) | ||||
| IPAddressField.register_lookup(lookups.Regex) | ||||
| IPAddressField.register_lookup(lookups.IRegex) | ||||
| IPAddressField.register_lookup(lookups.NetContained) | ||||
| IPAddressField.register_lookup(lookups.NetContainedOrEqual) | ||||
| IPAddressField.register_lookup(lookups.NetContains) | ||||
| IPAddressField.register_lookup(lookups.NetContainsOrEquals) | ||||
| IPAddressField.register_lookup(lookups.NetHost) | ||||
| IPAddressField.register_lookup(lookups.NetHostContained) | ||||
| IPAddressField.register_lookup(lookups.NetMaskLength) | ||||
|   | ||||
| @@ -13,12 +13,21 @@ class NetFieldDecoratorMixin(object): | ||||
|         return lhs_string, lhs_params | ||||
|  | ||||
|  | ||||
| class IExact(NetFieldDecoratorMixin, lookups.IExact): | ||||
|  | ||||
|     def get_rhs_op(self, connection, rhs): | ||||
|         return '= LOWER(%s)' % rhs | ||||
|  | ||||
|  | ||||
| class EndsWith(NetFieldDecoratorMixin, lookups.EndsWith): | ||||
|     lookup_name = 'endswith' | ||||
|     pass | ||||
|  | ||||
|  | ||||
| class IEndsWith(NetFieldDecoratorMixin, lookups.IEndsWith): | ||||
|     lookup_name = 'iendswith' | ||||
|     pass | ||||
|  | ||||
|     def get_rhs_op(self, connection, rhs): | ||||
|         return 'LIKE LOWER(%s)' % rhs | ||||
|  | ||||
|  | ||||
| class StartsWith(NetFieldDecoratorMixin, lookups.StartsWith): | ||||
| @@ -26,15 +35,18 @@ class StartsWith(NetFieldDecoratorMixin, lookups.StartsWith): | ||||
|  | ||||
|  | ||||
| class IStartsWith(NetFieldDecoratorMixin, lookups.IStartsWith): | ||||
|     lookup_name = 'istartswith' | ||||
|     pass | ||||
|  | ||||
|     def get_rhs_op(self, connection, rhs): | ||||
|         return 'LIKE LOWER(%s)' % rhs | ||||
|  | ||||
|  | ||||
| class Regex(NetFieldDecoratorMixin, lookups.Regex): | ||||
|     lookup_name = 'regex' | ||||
|     pass | ||||
|  | ||||
|  | ||||
| class IRegex(NetFieldDecoratorMixin, lookups.IRegex): | ||||
|     lookup_name = 'iregex' | ||||
|     pass | ||||
|  | ||||
|  | ||||
| class NetContainsOrEquals(Lookup): | ||||
|   | ||||
		Reference in New Issue
	
	Block a user