Skip to content

Commit

Permalink
fix the unicode issue
Browse files Browse the repository at this point in the history
  • Loading branch information
defrex committed Jan 9, 2014
1 parent 23b0216 commit 023afc5
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 2 deletions.
12 changes: 11 additions & 1 deletion encrypted_fields/fields.py
Original file line number Diff line number Diff line change
Expand Up @@ -154,8 +154,11 @@ def to_python(self, value):

try:
value = self.crypter().decrypt(value)
value = value.decode('unicode_escape')
except keyczar.errors.KeyczarError:
pass
except UnicodeEncodeError:
pass

return super(EncryptedFieldMixin, self).to_python(value)

Expand All @@ -164,7 +167,14 @@ def get_prep_value(self, value):

if value is None or value == '' or self.decrypt_only:
return value
return self.prefix + self.crypter().encrypt(smart_text(value))

if isinstance(value, types.StringTypes):
value = value.encode('unicode_escape')
value = value.encode('ascii')
else:
value = str(value)

return self.prefix + self.crypter().encrypt(value)

def get_db_prep_value(self, value, connection, prepared=False):
if not prepared:
Expand Down
2 changes: 1 addition & 1 deletion encrypted_fields/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ def test_char_field_encrypted(self):
self.assertEqual(fresh_model.char, plaintext)

def test_unicode_encrypted(self):
plaintext = 'Oh hi, test reader! 🐱'
plaintext = u'Oh hi, test reader! 🐱'

model = TestModel()
model.char = plaintext
Expand Down

0 comments on commit 023afc5

Please sign in to comment.