diff --git a/addons/anonymization/wizard/anonymize_wizard.py b/addons/anonymization/wizard/anonymize_wizard.py index 8323ff2e5728f26f0bbc7de501cc12b69b2967ec..0575120f1d625f641a38eb628769159df86778f7 100644 --- a/addons/anonymization/wizard/anonymize_wizard.py +++ b/addons/anonymization/wizard/anonymize_wizard.py @@ -122,13 +122,6 @@ class IrModelFieldsAnonymizeWizard(models.TransientModel): res['arch'] = etree.tostring(eview) return res - def _raise_after_history_update(self, history, error_type, error_msg): - history.write({ - 'state': 'in_exception', - 'msg': error_msg, - }) - raise UserError('%s: %s' % (error_type, error_msg)) - @api.multi def anonymize_database(self): """Sets the 'anonymized' state to defined fields""" @@ -143,11 +136,12 @@ class IrModelFieldsAnonymizeWizard(models.TransientModel): # check that all the defined fields are in the 'clear' state state = self.env['ir.model.fields.anonymization']._get_global_state() + error_type = _('Error !') if state == 'anonymized': - self._raise_after_history_update(history, _('Error !'), _("The database is currently anonymized, you cannot anonymize it again.")) + raise UserError('%s: %s' % (error_type, _("The database is currently anonymized, you cannot anonymize it again."))) elif state == 'unstable': - self._raise_after_history_update(history, _('Error !'), _("The database anonymization is currently in an unstable state. Some fields are anonymized," - " while some fields are not anonymized. You should try to solve this problem before trying to do anything.")) + raise UserError('%s: %s' % (error_type, _("The database anonymization is currently in an unstable state. Some fields are anonymized," + " while some fields are not anonymized. You should try to solve this problem before trying to do anything."))) # do the anonymization: dirpath = os.environ.get('HOME') or os.getcwd() @@ -156,7 +150,7 @@ class IrModelFieldsAnonymizeWizard(models.TransientModel): ano_fields = self.env['ir.model.fields.anonymization'].search([('state', '!=', 'not_existing')]) if not ano_fields: - self._raise_after_history_update(history, _('Error !'), _("No fields are going to be anonymized.")) + raise UserError('%s: %s' % (error_type, _("No fields are going to be anonymized."))) data = [] @@ -194,10 +188,10 @@ class IrModelFieldsAnonymizeWizard(models.TransientModel): elif field_type == 'integer': anonymized_value = 0 elif field_type in ['binary', 'many2many', 'many2one', 'one2many', 'reference']: # cannot anonymize these kind of fields - self._raise_after_history_update(history, _('Error !'), _("Cannot anonymize fields of these types: binary, many2many, many2one, one2many, reference.")) + raise UserError('%s: %s' % (error_type, _("Cannot anonymize fields of these types: binary, many2many, many2one, one2many, reference."))) if anonymized_value is None: - self._raise_after_history_update(history, _('Error !'), _("Anonymized value can not be empty.")) + raise UserError('%s: %s' % (error_type, _("Anonymized value can not be empty."))) sql = "update %(table)s set %(field)s = %%(anonymized_value)s where id = %%(id)s" % { 'table': table_name, @@ -257,13 +251,6 @@ class IrModelFieldsAnonymizeWizard(models.TransientModel): self.ensure_one() IrModelFieldsAnonymization = self.env['ir.model.fields.anonymization'] - # create a new history record: - history = self.env['ir.model.fields.anonymization.history'].create({ - 'date': fields.Datetime.now(), - 'state': 'started', - 'direction': 'anonymized -> clear' - }) - # check that all the defined fields are in the 'anonymized' state state = IrModelFieldsAnonymization._get_global_state() if state == 'clear': @@ -318,11 +305,13 @@ class IrModelFieldsAnonymizeWizard(models.TransientModel): # add a result message in the wizard: self.msg = '\n'.join(["Successfully reversed the anonymization.", ""]) - # update the history record: - history.write({ + # create a new history record: + history = self.env['ir.model.fields.anonymization.history'].create({ + 'date': fields.Datetime.now(), 'field_ids': [[6, 0, ano_fields.ids]], 'msg': self.msg, 'filepath': False, + 'direction': 'anonymized -> clear', 'state': 'done' })