Skip to content

Commit 2baf00d

Browse files
authored
Merge pull request #41 from octabytes/feature
Text field lowercase bug fix
2 parents bb4b18f + 1d65f8d commit 2baf00d

File tree

3 files changed

+40
-3
lines changed

3 files changed

+40
-3
lines changed

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
# Versions should comply with PEP440. For a discussion on single-sourcing
1717
# the version across setup.py and the project code, see
1818
# https://packaging.python.org/en/latest/single_source_version.html
19-
version='1.2.0',
19+
version='1.2.1',
2020

2121
description="FireO ORM is specifically designed for the Google's Firestore",
2222
long_description=long_description,

src/fireo/fields/text_field.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ def attr_to_lowercase(self, attr_val, field_val):
3939
Convert text into lowercase
4040
"""
4141
if attr_val:
42-
return field_val.lower()
42+
return field_val.lower() if field_val is not None else None
4343
return field_val
4444

4545
def _titlecase(self, s):
@@ -53,7 +53,7 @@ def db_value(self, val):
5353
if type(val) is str or val is None:
5454
# check if user defined to set the value as lower case
5555
if self.model_cls._meta.to_lowercase:
56-
return val.lower()
56+
return val.lower() if val is not None else None
5757
return val
5858
raise errors.InvalidFieldType(f'Invalid field type. Field "{self.name}" expected {str}, '
5959
f'got {type(val)}')
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
from fireo.fields import TextField
2+
from fireo.models import Model
3+
4+
5+
def test_lowercase_model_with_none_value():
6+
class LowercaseNone(Model):
7+
name = TextField()
8+
address = TextField()
9+
10+
class Meta:
11+
to_lowercase = True
12+
13+
14+
ln = LowercaseNone()
15+
ln.name = 'name'
16+
ln.save()
17+
18+
ln2 = LowercaseNone.collection.get(ln.key)
19+
20+
assert ln2.name == 'name'
21+
assert ln2.address is None
22+
23+
24+
def test_lowercase_field_with_none_value():
25+
class LowercaseNone(Model):
26+
name = TextField()
27+
address = TextField(to_lowercase=True)
28+
29+
30+
ln = LowercaseNone()
31+
ln.name = 'name'
32+
ln.save()
33+
34+
ln2 = LowercaseNone.collection.get(ln.key)
35+
36+
assert ln2.name == 'name'
37+
assert ln2.address is None

0 commit comments

Comments
 (0)