8
0
Fork 0
mirror of https://gitlab2.federez.net/re2o/re2o synced 2024-11-30 08:32:26 +00:00

Support de postgreSQL pour AESENCryptedField

This commit is contained in:
Hugo LEVY-FALK 2018-07-11 17:25:53 +02:00
parent c05f8f826c
commit 17da4a52dc

View file

@ -72,9 +72,10 @@ class AESEncryptedFormField(forms.CharField):
class AESEncryptedField(models.CharField): class AESEncryptedField(models.CharField):
""" A Field that can be used in forms for adding the support """ A Field that can be used in forms for adding the support
of AES ecnrypted fields """ of AES ecnrypted fields """
def save_form_data(self, instance, data): def save_form_data(self, instance, data):
setattr(instance, self.name, setattr(instance, self.name, binascii.b2a_base64(
binascii.b2a_base64(encrypt(settings.AES_KEY, data))) encrypt(settings.AES_KEY, data)).decode('utf-8'))
def to_python(self, value): def to_python(self, value):
if value is None: if value is None:
@ -83,18 +84,16 @@ class AESEncryptedField(models.CharField):
return decrypt(settings.AES_KEY, return decrypt(settings.AES_KEY,
binascii.a2b_base64(value)).decode('utf-8') binascii.a2b_base64(value)).decode('utf-8')
except Exception as e: except Exception as e:
v = decrypt(settings.AES_KEY, binascii.a2b_base64(value)) raise ValueError(value)
raise ValueError(v)
def from_db_value(self, value, *args, **kwargs): def from_db_value(self, value, *args, **kwargs):
if value is None: if value is None:
return value return value
try: try:
return decrypt(settings.AES_KEY, return decrypt(settings.AES_KEY,
binascii.a2b_base64(value)).decode('utf-8') binascii.a2b_base64(value)).decode('utf-8')
except Exception as e: except Exception as e:
v = decrypt(settings.AES_KEY, binascii.a2b_base64(value)) raise ValueError(value)
raise ValueError(v)
def get_prep_value(self, value): def get_prep_value(self, value):
if value is None: if value is None:
@ -102,7 +101,7 @@ class AESEncryptedField(models.CharField):
return binascii.b2a_base64(encrypt( return binascii.b2a_base64(encrypt(
settings.AES_KEY, settings.AES_KEY,
value value
)) )).decode('utf-8')
def formfield(self, **kwargs): def formfield(self, **kwargs):
defaults = {'form_class': AESEncryptedFormField} defaults = {'form_class': AESEncryptedFormField}