diff --git a/database_cleanup/models/purge_modules.py b/database_cleanup/models/purge_modules.py index ed8c03a0a..b0a2c297c 100644 --- a/database_cleanup/models/purge_modules.py +++ b/database_cleanup/models/purge_modules.py @@ -63,16 +63,19 @@ class CleanupPurgeWizardModule(models.TransientModel): @api.model def find(self): res = [] + purge_lines = self.env['cleanup.purge.line.module'] for module in self.env['ir.module.module'].search([]): if get_module_path(module.name): continue if module.state == 'uninstalled': - self.env['cleanup.purge.line.module'].create({ + purge_lines += self.env['cleanup.purge.line.module'].create({ 'name': module.name, - }).purge() + }) continue res.append((0, 0, {'name': module.name})) + purge_lines.purge() + if not res: raise UserError(_('No modules found to purge')) return res diff --git a/database_cleanup/models/purge_properties.py b/database_cleanup/models/purge_properties.py index 9cd32d3f0..61d7dd9f7 100644 --- a/database_cleanup/models/purge_properties.py +++ b/database_cleanup/models/purge_properties.py @@ -4,6 +4,8 @@ from odoo import api, models, fields REASON_DUPLICATE = 1 REASON_DEFAULT = 2 +REASON_DEFAULT_FALSE = 3 +REASON_UNKNOWN_MODEL = 4 class CleanupPurgeLineProperty(models.TransientModel): @@ -17,6 +19,8 @@ class CleanupPurgeLineProperty(models.TransientModel): reason = fields.Selection([ (REASON_DUPLICATE, 'Duplicated property'), (REASON_DEFAULT, 'Same value as default'), + (REASON_DEFAULT_FALSE, 'Empty default property'), + (REASON_UNKNOWN_MODEL, 'Unknown model'), ]) @api.multi @@ -42,6 +46,27 @@ class CleanupPurgeWizardProperty(models.TransientModel): ]) handled_field_ids = [] for prop in default_properties: + value = None + try: + value = prop.get_by_record() + except KeyError: + result.append({ + 'name': '%s@%s: %s' % ( + prop.name, prop.res_id, value, + ), + 'property_id': prop.id, + 'reason': REASON_UNKNOWN_MODEL, + }) + continue + if not value: + result.append({ + 'name': '%s@%s: %s' % ( + prop.name, prop.res_id, value, + ), + 'property_id': prop.id, + 'reason': REASON_DEFAULT_FALSE, + }) + continue if prop.fields_id.id in handled_field_ids: continue domain = [ @@ -76,7 +101,8 @@ class CleanupPurgeWizardProperty(models.TransientModel): for redundant_property in self.env['ir.property'].search(domain): result.append({ 'name': '%s@%s: %s' % ( - prop.name, prop.res_id, prop.get_by_record() + prop.name, redundant_property.res_id, + prop.get_by_record() ), 'property_id': redundant_property.id, 'reason': REASON_DEFAULT,