You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

42 lines
1.4 KiB

  1. # Copyright 2021 ACSONE SA/NV
  2. # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
  3. from odoo import api, models
  4. class Base(models.AbstractModel):
  5. _inherit = "base"
  6. @api.model
  7. def _export_anonymize(self, rows, index):
  8. anonymize_key = (
  9. self.env["ir.config_parameter"]
  10. .sudo()
  11. .get_param("model.fields.export.anonymize.key", "***********")
  12. )
  13. for row in rows:
  14. row[index] = anonymize_key
  15. @api.multi
  16. def _export_rows(self, *args, **kwargs):
  17. rows = super()._export_rows(*args, **kwargs)
  18. if self.env.user.has_group(
  19. "base_export_anonymize.group_anonymize_data_in_export"
  20. ):
  21. fields = args[0]
  22. field_model = self.env["ir.model.fields"]
  23. for index, path in enumerate(fields):
  24. if len(path) == 1:
  25. field_name = path[0]
  26. if self._fields.get(field_name):
  27. model_name = self._fields.get(field_name).model_name
  28. field = field_model.search(
  29. [
  30. ("model", "=", model_name),
  31. ("name", "=", field_name),
  32. ]
  33. )
  34. if field.anonymize_in_export:
  35. self._export_anonymize(rows, index)
  36. return rows