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=[]):
for line in o:
try:
model = self.env['ir.model']._get(line)
if not model:
_logger.warning('Model %s not found, skipping.', line)
continue
with self.env.cr.savepoint():
model_obj = self.env['ir.model']._get(line)
if not model_obj:
_logger.warning('Model %s not found, skipping.', line)
continue
t_name = self.env[line]._table
sql = "delete from %s" % t_name
if self.env[line]._abstract:
_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)
_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:
_logger.warning('General error processing model %s: %s', line, e)
self._cr.rollback()
_logger.error('--> FAILED to clean data for model [%s]. Error: %s', line, e, exc_info=True)
for line in s:
domain = ['|', ('code', '=ilike', line + '%'), ('prefix', '=ilike', line + '%')]
for seq_code in s:
try:
seqs = self.env['ir.sequence'].sudo().search(domain)
if seqs.exists():
seqs.write({
'number_next': 1,
})
_logger.info('Reset sequence for %s', line)
with self.env.cr.savepoint():
domain = ['|', ('code', '=ilike', seq_code + '%'), ('prefix', '=ilike', seq_code + '%')]
seqs = self.env['ir.sequence'].sudo().search(domain)
if seqs:
seqs.write({'number_next': 1})
_logger.info('Reset sequence for %s', seq_code)
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
def remove_sales(self):
to_removes = [
'sale.order.line',