Hi,
Try the following code,
from odoo import models, fields, api
from cryptography.fernet import Fernet
import base64
KEY = b'your_32_byte_key_here==' # You must securely store this key
cipher = Fernet(KEY)
class ResPartner(models.Model):
_inherit = 'res.partner'
_encrypted_email = fields.Char(string="Encrypted Email", readonly=True)
@api.depends('_encrypted_email')
def _compute_email(self):
for rec in self:
try:
rec.email = cipher.decrypt(rec._encrypted_email.encode()).decode()
except:
rec.email = ''
email = fields.Char(compute="_compute_email", inverse="_inverse_email", store=True)
def _inverse_email(self):
for rec in self:
if rec.email:
rec._encrypted_email = cipher.encrypt(rec.email.encode()).decode()
Hope it helps