Skip to content

Commit

Permalink
Merge 8134f33 into 6c0e0d8
Browse files Browse the repository at this point in the history
  • Loading branch information
Uxio0 committed Jul 26, 2022
2 parents 6c0e0d8 + 8134f33 commit 47074fa
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 4 deletions.
9 changes: 5 additions & 4 deletions gnosis/eth/django/forms.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import binascii
from typing import Optional
from typing import Any, Optional

from django import forms
from django.core import exceptions
Expand Down Expand Up @@ -43,11 +43,12 @@ def prepare_value(self, value: memoryview) -> str:
else:
return ""

def to_python(self, value: str) -> Optional[HexBytes]:
value = value.strip()
def to_python(self, value: Optional[Any]) -> Optional[HexBytes]:
if value in self.empty_values:
return self.empty_value
try:
if isinstance(value, str):
value = value.strip()
return HexBytes(value)
except (binascii.Error, TypeError, ValueError):
raise exceptions.ValidationError(
Expand All @@ -67,7 +68,7 @@ def prepare_value(self, value: str) -> str:
# Keccak field already returns a hex str
return value

def to_python(self, value) -> HexBytes:
def to_python(self, value: Optional[Any]) -> HexBytes:
value: Optional[HexBytes] = super().to_python(value)
if value and len(value) != 32:
raise ValidationError(
Expand Down
12 changes: 12 additions & 0 deletions gnosis/eth/django/tests/test_forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,18 @@ def test_hex_field_form(self):
form = HexForm(initial={"value": memoryview(bytes.fromhex("cdef"))})
self.assertIn('value="0xcdef"', form.as_p())

form = HexForm(data={"value": 1})
self.assertTrue(form.is_valid())
self.assertEqual(form.cleaned_data["value"], HexBytes(1))

form = HexForm(data={"value": ""})
self.assertTrue(form.is_valid())
self.assertIsNone(form.cleaned_data["value"])

form = HexForm(data={"value": None})
self.assertTrue(form.is_valid())
self.assertIsNone(form.cleaned_data["value"])

def test_keccak256_field_form(self):
form = Keccak256Form(data={"value": "not a hash"})
self.assertFalse(form.is_valid())
Expand All @@ -75,3 +83,7 @@ def test_keccak256_field_form(self):
form = Keccak256Form(data={"value": ""})
self.assertTrue(form.is_valid())
self.assertIsNone(form.cleaned_data["value"])

form = HexForm(data={"value": None})
self.assertTrue(form.is_valid())
self.assertIsNone(form.cleaned_data["value"])

0 comments on commit 47074fa

Please sign in to comment.