Skip to content

Commit

Permalink
Merge 65b1fc4 into 6c0e0d8
Browse files Browse the repository at this point in the history
  • Loading branch information
Uxio0 committed Jul 26, 2022
2 parents 6c0e0d8 + 65b1fc4 commit 9d562c2
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 5 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"])
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@

setup(
name="safe-eth-py",
version="4.3.0",
version="4.3.1",
packages=find_packages(),
package_data={"gnosis": ["py.typed"]},
install_requires=requirements,
Expand Down

0 comments on commit 9d562c2

Please sign in to comment.