fix_ctp1112

This commit is contained in:
esam 2025-10-03 22:06:26 -04:00
parent 00f45f46f7
commit e581c1066c
1 changed files with 23 additions and 24 deletions

View File

@ -12,40 +12,39 @@ class CtpDatabaseCleanUp(models.TransientModel):
def remove_data(self, o, s=[]): def remove_data(self, o, s=[]):
for line in o: for line in o:
try: try:
model = self.env['ir.model']._get(line) with self.env.cr.savepoint():
if not model: model_obj = self.env['ir.model']._get(line)
_logger.warning('Model %s not found, skipping.', line) if not model_obj:
continue _logger.warning('Model %s not found, skipping.', line)
continue
t_name = self.env[line]._table if self.env[line]._abstract:
sql = "delete from %s" % t_name _logger.warning('Model %s is abstract, skipping as it has no table.', line)
continue
try: table_name = self.env[line]._table
_logger.info('Attempting to TRUNCATE table for model: %s (table: %s)', line, table_name)
safe_table_name = table_name.replace('"', '""')
sql = 'TRUNCATE TABLE "%s" RESTART IDENTITY CASCADE' % safe_table_name
self._cr.execute(sql) self._cr.execute(sql)
_logger.info('Successfully deleted data from %s', t_name)
self._cr.commit()
except Exception as e:
_logger.warning('Database Clean up error on table %s: %s', t_name, e)
self._cr.rollback()
except Exception as e: except Exception as e:
_logger.warning('General error processing model %s: %s', line, e) _logger.error('--> FAILED to clean data for model [%s]. Error: %s', line, e, exc_info=True)
self._cr.rollback()
for line in s: for seq_code in s:
domain = ['|', ('code', '=ilike', line + '%'), ('prefix', '=ilike', line + '%')]
try: try:
seqs = self.env['ir.sequence'].sudo().search(domain) with self.env.cr.savepoint():
if seqs.exists(): domain = ['|', ('code', '=ilike', seq_code + '%'), ('prefix', '=ilike', seq_code + '%')]
seqs.write({ seqs = self.env['ir.sequence'].sudo().search(domain)
'number_next': 1, if seqs:
}) seqs.write({'number_next': 1})
_logger.info('Reset sequence for %s', line) _logger.info('Reset sequence for %s', seq_code)
except Exception as e: except Exception as e:
_logger.warning('Reset Sequence Data error: %s, %s', line, e) _logger.warning('Failed to reset sequence for %s: %s', seq_code, e)
return True return True
def remove_sales(self): def remove_sales(self):
to_removes = [ to_removes = [
'sale.order.line', 'sale.order.line',