Skip to content

Commit

Permalink
Break out ip validation in seperate function
Browse files Browse the repository at this point in the history
  • Loading branch information
johannaengland committed Nov 17, 2023
1 parent f33204c commit e045c42
Showing 1 changed file with 20 additions and 14 deletions.
34 changes: 20 additions & 14 deletions python/nav/web/alertprofiles/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -650,20 +650,9 @@ def clean(self) -> Dict[str, Any]:
value = validated_data["value"]

if match_field.data_type == MatchField.IP:
if operator_type == Operator.IN:
ip_list = value.split()
else:
ip_list = [value]
validated_ip_addresses = []
for ip in ip_list:
if not is_valid_ip(ip=ip, strict=True) and not is_valid_cidr(cidr=ip):
self.add_error(
field="value",
error=forms.ValidationError(("Invalid IP address: %s" % ip)),
)
else:
validated_ip_addresses.append(str(ip))
validated_data["value"] = "|".join(validated_ip_addresses)
validated_data["value"] = self._clean_ip_addresses(
operator_type=operator_type, value=value
)
return validated_data

if operator_type == Operator.IN:
Expand All @@ -672,3 +661,20 @@ def clean(self) -> Dict[str, Any]:
validated_data["value"] = value[0]

return validated_data

def _clean_ip_addresses(self, operator_type, value):
if operator_type == Operator.IN:
ip_list = value.split()
else:
ip_list = [value]
validated_ip_addresses = []
for ip in ip_list:
if not is_valid_ip(ip=ip, strict=True) and not is_valid_cidr(cidr=ip):
self.add_error(
field="value",
error=forms.ValidationError(("Invalid IP address: %s" % ip)),
)
else:
validated_ip_addresses.append(str(ip))

return "|".join(validated_ip_addresses)

0 comments on commit e045c42

Please sign in to comment.