Skip to content

Commit b57d0c4

Browse files
committed
Added EncryptedBooleanField
1 parent d32c4d1 commit b57d0c4

File tree

4 files changed

+23
-2
lines changed

4 files changed

+23
-2
lines changed

src/pgcrypto/fields.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,22 @@ def formfield(self, **kwargs):
260260
return super().formfield(**defaults)
261261

262262

263+
class EncryptedBooleanField(BaseEncryptedField):
264+
description = _("Boolean")
265+
field_cast = "::boolean"
266+
267+
def formfield(self, **kwargs):
268+
defaults = {"form_class": forms.BooleanField}
269+
defaults.update(kwargs)
270+
return super().formfield(**defaults)
271+
272+
def to_python(self, value):
273+
if value in self.empty_values:
274+
return None
275+
unencrypted_value = super().to_python(value)
276+
return unencrypted_value == 'True'
277+
278+
263279
class EncryptedLookup(Lookup):
264280
patterns = {
265281
"contains": "%%%s%%",

testapp/fixtures/employees.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
"name": "John Smith",
55
"ssn": "999-05-6728",
66
"salary": "52000.00",
7-
"date_hired": "1999-01-23"
7+
"date_hired": "1999-01-23",
8+
"is_vip": false
89
},
910
"model": "testapp.employee",
1011
"pk": 1
@@ -15,7 +16,8 @@
1516
"ssn": "666-27-9811",
1617
"salary": "75248.77",
1718
"date_hired": "1996-02-28",
18-
"email": "[email protected]"
19+
"email": "[email protected]",
20+
"is_vip": true
1921
},
2022
"model": "testapp.employee",
2123
"pk": 2

testapp/models.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ class Employee(models.Model):
1313
)
1414
email = pgcrypto.EncryptedEmailField(unique=True, null=True)
1515
date_modified = pgcrypto.EncryptedDateTimeField(auto_now=True)
16+
is_vip = pgcrypto.EncryptedBooleanField()
1617

1718
def __str__(self):
1819
return self.name
@@ -30,6 +31,7 @@ class RawEmployee(models.Model):
3031
date_hired = models.TextField()
3132
email = models.TextField(null=True)
3233
date_modified = models.TextField()
34+
is_vip = models.BooleanField()
3335

3436
class Meta:
3537
db_table = "testapp_employee"

testapp/tests.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,7 @@ def test_formfields(self):
196196
"date_hired": forms.DateField,
197197
"email": forms.EmailField,
198198
"date_modified": forms.DateTimeField,
199+
"is_vip": forms.BooleanField,
199200
}
200201
actual = {
201202
f.name: type(f.formfield())

0 commit comments

Comments
 (0)