Browse Source

fix: 添加注释

pull/4095/head
ibuler 5 years ago
parent
commit
148c7ffb43
  1. 22
      apps/common/fields/model.py

22
apps/common/fields/model.py

@ -112,21 +112,29 @@ class EncryptMixin:
""" """
EncryptMixin要放在最前面 EncryptMixin要放在最前面
""" """
def decrypt_from_signer(self, value):
return signer.unsign(value) or ''
def decrypt_from_aes(self, value):
try:
return aes_crypto.decrypt(value)
except (TypeError, ValueError):
pass
def from_db_value(self, value, expression, connection, context): def from_db_value(self, value, expression, connection, context):
if value is None: if value is None:
return value return value
value = force_text(value) value = force_text(value)
plain_value = ''
# 优先采用 aes 解密 # 优先采用 aes 解密
try: plain_value = self.decrypt_from_aes(value)
plain_value = aes_crypto.decrypt(value)
except (TypeError, ValueError):
pass
# 如果没有解开,使用原来的signer解密 # 如果没有解开,使用原来的signer解密
if not plain_value: if not plain_value:
plain_value = signer.unsign(value) or '' plain_value = self.decrypt_from_signer(value)
# 可能和Json mix,所以要先解密,再json
sp = super() sp = super()
if hasattr(sp, 'from_db_value'): if hasattr(sp, 'from_db_value'):
plain_value = sp.from_db_value(plain_value, expression, connection, context) plain_value = sp.from_db_value(plain_value, expression, connection, context)
@ -135,6 +143,8 @@ class EncryptMixin:
def get_prep_value(self, value): def get_prep_value(self, value):
if value is None: if value is None:
return value return value
# 先 json 再解密
sp = super() sp = super()
if hasattr(sp, 'get_prep_value'): if hasattr(sp, 'get_prep_value'):
value = sp.get_prep_value(value) value = sp.get_prep_value(value)

Loading…
Cancel
Save